我正在尝试将两个 pdf 合并在一起。另一个 pdf 是我使用链接到特定页面的 fpdf 手动创建的目录。另一个 pdf 是目录链接到的文本。
from PyPDF2.merger imort PdfFileMerger
merger = PdfFileMerger()
merger.append("toc.pdf")
merger.append("temp.pdf")
merger.write("combined.pdf")
但我收到以下错误:
PdfReadWarning: Object 19 0 not defined. [pdf.py:1628]
Traceback (most recent call last):
...
...
raise utils.PdfReadError("Could not find object.")
PyPDF2.utils.PdfReadError: Could not find object.
我认为错误是因为我的超链接没有指向任何内容,因为没有创建页面。如果我创建没有超链接合并的目录可以正常工作。有什么方法可以合并文件以便保留超链接?
澄清一下:我相信我不能从一开始就将内容 pdf 添加到目录中,因为 pyfpdf 似乎不支持将 pdf 文件一起添加。
编辑:更多代码
merger = PdfFileMerger()
pages = []
chapters = []
for file in pdfs:
read_pdf = PdfFileReader(file)
txt = read_pdf.getPage(0)
page_content = txt.extractText()
chapter = helper_functions.get_chapter_from_pdf_txt(page_content)
pages.append(read_pdf.getNumPages())
chapters.append(chapter)
merger.append(fileobj=file)
merger.write("temp.pdf")
pdfs.append("temp.pdf")
merger.close()
num_pages = sum(pages)
toc_len = 0
if toc_orientation == "P":
toc_len = math.ceil(len(pages) / 27)
if toc_orientation == "L":
toc_len = math.ceil(len(pages) / 17)
print(num_pages)
print(toc_len)
### Creating toc
toc = compile_toc(chapters, pages, orientation=toc_orientation)
pdf = PDF()
pdf.set_title("")
pdf.table_of_contents(toc, orientation=toc_orientation, create_hyperlink=True)
pdf.output("toc.pdf", 'F')
pdf.close()
time.sleep(2)
merger = PdfFileMerger()
merger.append(PdfFileReader(open("toc.pdf", 'rb')))
merger.append(PdfFileReader(open("temp.pdf", 'rb')))
merger.write("combined.pdf")
´´´