PyPDF2を使ってPDF内にリンクをはる方法について
右下にページ番号のある既存PDFにリンクをはる作業をPythonで実装しようとしています。
複数ページあるPDFの右下のページ番号をクリックすると1ページ目にジャンプするようにしたいのですが、移動した後、PDFのサイズが変わらないように維持したいと考えています。
下記のコードで、リンクをはることはできたのですが、ジャンプ後に、PDFのサイズが最適化されてしまいます。引数のfitの中で、"/XYZ"を選択してzoomArgsを調整すればPDFサイズが変わらないようにできると思うのですが、引数の設定の仕方が分かりません。ご存知の方いらっしゃれば教えていただけませんでしょうか?私が書いたのは下記のコードです。
from PyPDF2 import PdfFileWriter, PdfFileReader
import io
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
existing_pdf = PdfFileReader(open(r"C:\test.pdf", "rb"))
output = PdfFileWriter()
pageNum = existing_pdf.getNumPages()
for i in range(pageNum):
if i == 0:
packet = io.BytesIO()
can = canvas.Canvas(packet, pagesize=letter)
can.drawString(523, 45, "")
can.save()
packet.seek(0)
new_pdf = PdfFileReader(packet)
# add the "watermark" (which is the new pdf) on the existing page
page = existing_pdf.getPage(i)
new_pdf = PdfFileReader(packet)
page2 = new_pdf.getPage(0)
page.mergePage(page2)
output.addPage(page)
else:
packet = io.BytesIO()
can = canvas.Canvas(packet, pagesize=letter)
can.drawString(523, 45, "{}".format(i+1))
can.save()
packet.seek(0)
new_pdf = PdfFileReader(packet)
# add the "watermark" (which is the new pdf) on the existing page
page = existing_pdf.getPage(i)
new_pdf = PdfFileReader(packet)
page2 = new_pdf.getPage(0)
page.mergePage(page2)
output.addPage(page)
output.addLink(pagenum=i,pagedest=0,rect=[500,30,550,60],border = [0,0,0],fit="/XYZ")
# finally, write "output" to a real file
outputStream = open(r"C:\test_new.pdf", "wb")
output.write(outputStream)
outputStream.close()
よろしくお願いします。