Python PyPDF2 添加目录

Python PyPDF2 add table of contents

提问人:Easynow 提问时间:11/11/2023 最后编辑:Easynow 更新时间:11/11/2023 访问量:43

问:

我已经能够使用 PyPDF2 来组合 PDF 并创建书签。是否可以使用 PyPDF2 将超链接目录页面添加到组合文件中?

感谢您的回复。使用您的建议,我可以创建一个 ToC,然后可以与我的 PDF 合并,但问题是 ToC 中指向尚不存在的页面的内部链接会导致错误。

代码如下:

from fpdf import FPDF

pdf = FPDF()
pdf.set_font("helvetica", size=24)
pdf.add_page()
link = pdf.add_link(page=3)
pdf.cell(text="Internal link to first page", border=0, link=link,ln=2)
link = pdf.add_link(page=4)
pdf.cell(ln=1,text="Internal link to first page", border=0, link=link)
pdf.output("C:/cont/hyperlink1.pdf")

这会导致以下错误:

文件“C:\Users\andre\anaconda\lib\site-packages\fpdf\output.py”,第 416 行,在缓冲区中 f“对页面 {page_obj.index()} 上不存在的页面 {dest.page_number} 的引用无效:”

ValueError:对第 1 页上不存在的第 3 页的无效引用:

python pypdf

评论


答:

0赞 Martin Thoma 11/11/2023 #1

PyPDF2 已弃用。用。pypdf

您可以使用 和 fpdf2 的组合来创建它:pypdf

  1. 创建包含目录 (ToC) 文本的单个(或多个)页面fpdf2
  2. 用于将 ToC 合并到原始文档中pypdf
  3. 通过 pypdf 添加链接注释

请注意,您仍然需要知道 ToC 应该是什么样子以及它应该链接到哪里。

另请注意,两者都在组织中。这些项目仍然各不相同,但我们相互支持(非常感谢 LucasC,他是 fpdf2 的维护者,并大大改进了 pypdf)。pypdffpdf2py-pdf

评论

0赞 Easynow 11/11/2023
感谢您的回复,我已经设法使用 pdfp2 创建了一个包含内部链接的新 PDF。然后,我可以使用 PyPDF 将此 ToC 与我现有的 PDF 相结合。问题是我无法创建指向尚不存在的页面的内部链接。
0赞 Martin Thoma 11/13/2023
您是否按照我编写的顺序执行了我描述的三个步骤?