如何解决PdfFileMerger 是否自动排序?
我正在尝试使用 Python 将文件夹中的多个单页 PDF 合并为使用 PyPDF2 的单个 PDF 文件。它们需要按路径名中嵌入的整数排序,例如“file_2.pdf”在“file_11.pdf”之前,但当然它们是按字母顺序列出的(即文件夹中“file_11.pdf”之后的“file_2.pdf”。 我尝试在合并之前使用 "human sort" 对它们进行排序,如建议的 here。像这样:
def atoi(text):
return int(text) if text.isdigit() else text
def natural_keys(text):
'''
alist.sort(key=natural_keys) sorts in human order
http://nedbatchelder.com/blog/200712/human_sorting.html
'''
return [ atoi(c) for c in re.split(r'(\d+)',text) ]
pdfs = sorted(os.listdir("input"),key = natural_keys)
print(pdfs)
# yields ['file_0.pdf','file_1.pdf','file_2.pdf',...,'file_10.pdf','file_11.pdf']
到目前为止一切顺利。但是当我尝试使用 PyPDF2 合并它们时...
merger = PdfFileMerger()
# merge searchable PDFs
for filename in pdfs: # the 'human-sorted' list of paths
print(filename)
tmp = PdfFileReader(f"output/{filename}")
merger.append(tmp)
merger.write('output/file_doc.pdf')
并检查“file_doc.pdf”,所有页面都在那里,但按字母顺序返回!例如。 1、2、11、12、13、3、4 等
那么,PyPDF2 的 pdfFileMerger 或 pdfFileReader 是自动排序还是我遗漏了什么? The docs 没有提及任何内容。我该怎么做才能确保以正确的顺序获取页面?任何输入表示赞赏。谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。