Чтобы реализовать фоновое изображение на всех страницах документа, вы можете сначала сгенерировать PDF-документ в pylatex, а затем добавить изображение в виде водяного знака с PyPDF2.Для этого вам нужно иметь изображение 'reportbg.png' в формате pdf (reportbg.pdf).
Вот модифицированный пример, основанный на документации Pylatex (https://jeltef.github.io/PyLaTeX/current/examples/basic.html):
) КОД
from pylatex import Document, Section, Subsection, Command
from pylatex.utils import italic, NoEscape
import PyPDF2
class Document_Watermark():
def __init__(self, doc):
self.doc = doc
self.fill_document()
self.create_document()
self.Watermark()
def fill_document(self):
"""Add a section, a subsection and some text to the document.
:param doc: the document
:type doc: :class:`pylatex.document.Document` instance
"""
with self.doc.create(Section('A section')):
self.doc.append('Some regular text and some ')
self.doc.append(italic('italic text. '))
with self.doc.create(Subsection('A subsection')):
self.doc.append('Also some crazy characters: $&#{}')
def create_document(self):
# Add stuff to the document
with self.doc.create(Section('A second section')):
self.doc.append('Some text.')
self.doc.generate_pdf('basic_maketitle2', clean_tex=False, compiler='pdflatex')
tex = self.doc.dumps() # The document as string in LaTeX syntax
def Watermark(self):
Doc = open('basic_maketitle2.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(Doc)
pdfWatermark = PyPDF2.PdfFileReader(open('watermark3.pdf', 'rb'))
pdfWriter = PyPDF2.PdfFileWriter()
for pageNum in range(0, pdfReader.numPages):
pageObj = pdfReader.getPage(pageNum)
pageObj.mergePage(pdfWatermark.getPage(0))
pdfWriter.addPage(pageObj)
resultPdfFile = open('PDF_Watermark.pdf', 'wb')
pdfWriter.write(resultPdfFile)
Doc.close()
resultPdfFile.close()
# Basic document
doc = Document('basic')
# Document with `\maketitle` command activated
doc = Document()
doc.preamble.append(Command('title', 'Awesome Title'))
doc.preamble.append(Command('author', 'Anonymous author'))
doc.preamble.append(Command('date', NoEscape(r'\today')))
doc.append(NoEscape(r'\maketitle'))
Document_Watermark(doc)
PS: водяной знак, исходный сгенерированный pdf и файл .py должны быть натот же каталог. Я не смог загрузить файлы PDF, потому что это мой первый пост с ответом, и я не совсем уверен, как это сделать, но я делюсь некоторыми изображениями. Надеюсь, это будет полезно. Для получения дополнительной информации я предлагаюпрочитать следующую книгу: «Автоматизируйте скучные вещи с помощью Python», глава 13, Аль Суигарт.