Поэтому я пытаюсь ретроспективно добавить нумерацию страниц в файл PDF.Я не понимаю, как это работает.Я скопировал код из здесь и здесь .У меня есть проблема, которую я не могу решить самостоятельно, возможно, потому, что я не понимаю, что происходит, даже после прочтения документации PyPDF2.
from PyPDF2 import PdfFileWriter, PdfFileReader
import io
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
packet = io.BytesIO()
can = canvas.Canvas(packet, pagesize=A4)
can.drawString(10, 100, "Page" + str(15)) #just a random test number
can.save()
packet.seek(0)
watermark = PdfFileReader(packet)
watermark_page = watermark.getPage(0)
pdf = PdfFileReader('in.pdf')
pdf_writer = PdfFileWriter()
for page in range(pdf.getNumPages()):
pdf_page = pdf.getPage(page)
pdf_page.mergePage(watermark_page)
pdf_writer.addPage(pdf_page)
with open('out.pdf', 'wb') as fh:
pdf_writer.write(fh)
Это прекрасно работает.Тем не менее, я хотел бы дать каждой странице разные номера.Поэтому я изменил цикл for следующим образом:
from PyPDF2 import PdfFileWriter, PdfFileReader
import io
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
packet = io.BytesIO()
pdf = PdfFileReader('in.pdf')
pdf_writer = PdfFileWriter()
for page in range(pdf.getNumPages()):
can = canvas.Canvas(packet, pagesize=A4)
can.drawString(10, 200, "Page " + str(page) )
can.save()
packet.seek(0)
watermark = PdfFileReader(packet)
watermark_page = watermark.getPage(0)
pdf_page = pdf.getPage(page)
pdf_page.mergePage(watermark_page)
pdf_writer.addPage(pdf_page)
with open('out.pdf', 'wb') as fh:
pdf_writer.write(fh)
Это не работает.
Я получаю:
Traceback (most recent call last):
File "<ipython-input-44-c6a76740be9f>", line 1, in <module>
runfile('//DIR/pdftest.py', wdir='//DIR')
File "C:\Program Files (x86)\Anaconda\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
execfile(filename, namespace)
File "C:\Program Files (x86)\Anaconda\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "//DIR/pdftest.py", line 55, in <module>
watermark = PdfFileReader(packet)
File "C:\Program Files (x86)\Anaconda\lib\site-packages\PyPDF2\pdf.py", line 1084, in __init__
self.read(stream)
File "C:\Program Files (x86)\Anaconda\lib\site-packages\PyPDF2\pdf.py", line 1901, in read
raise utils.PdfReadError("Could not find xref table at specified location")
PdfReadError: Could not find xref table at specified location
Немного помощи, как понимания, так и исправленияэто будет с благодарностью.
Спасибо!