У меня есть следующий код.Это только отправная точка.Позже я хотел бы заменить статический текст «Hello Word» на элементы из файла CSV, которые я читаю и перебираю для каждого элемента в CSV.Мне нужен водяной знак на каждой странице.
# importing the required modules
import PyPDF2
import io
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
def add_watermark(wmFile, pageObj):
# opening watermark pdf file
wmFileObj = open(wmFile, 'rb')
# creating pdf reader object of watermark pdf file
pdfReader = PyPDF2.PdfFileReader(wmFileObj)
# merging watermark pdf's first page with passed page object.
pageObj.mergePage(pdfReader.getPage(0))
# closing the watermark pdf file object
wmFileObj.close()
# returning watermarked page object
return pageObj
def main():
import PyPDF2
import io
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
# watermark pdf file name
packet = io.BytesIO()
# Create a new PDF with Reportlab
can = canvas.Canvas(packet, pagesize=letter)
can.setFont('Helvetica-Bold',18)
can.drawString(10, 100, "Hello world")
can.showPage()
can.save()
# Move to the beginning of the StringIO buffer
packet.seek(0)
mywatermark = PyPDF2.PdfFileReader(packet)
# original pdf file name
origFileName = 'Module1.pdf'
# new pdf file name
newFileName = 'watermarked_example.pdf'
# creating pdf File object of original pdf
pdfFileObj = open(origFileName, 'rb')
# creating a pdf Reader object
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
# creating a pdf writer object for new pdf
pdfWriter = PyPDF2.PdfFileWriter()
# adding watermark to each page
for page in range(pdfReader.numPages):
# creating watermarked page object
wmpageObj = add_watermark(mywatermark, pdfReader.getPage(page))
# adding watermarked page object to pdf writer
pdfWriter.addPage(wmpageObj)
# new pdf file object
newFile = open(newFileName, 'wb')
# writing watermarked pages to new file
pdfWriter.write(newFile)
# closing the original pdf file object
pdfFileObj.close()
# closing the new pdf file object
newFile.close()
if __name__ == "__main__":
main()
Я получаю ошибку:
Traceback (most recent call last):
File "watermark.py", line 101, in <module>
main()
File "watermark.py", line 83, in main
wmpageObj = add_watermark(mywatermark, pdfReader.getPage(page))
File "watermark.py", line 32, in add_watermark
wmFileObj = open(wmFile, 'rb')
TypeError: expected str, bytes or os.PathLike object, not PdfFileReader
Мне кажется, я понимаю, что она ожидает строку, байты или файл, которыйЯ не пишу, это просто «объект».
Я пробовал пару вещей, но что бы я ни пытался, это на самом деле еще хуже: - (
Может кто-нибудь помочь? Я 'Я уверен, что это просто мелочь, потому что я хорошо контролирую очевидное.
любая помощь приветствуется.
спасибо