【问题标题】:How to combine 5 PDFs in one in the same page如何在同一页面中将 5 个 PDF 合并为一个
【发布时间】:2019-08-13 11:57:13
【问题描述】:

我正在生成大量 PDF,对于每 5 个 pdf,我想在一个页面上合并。

pdfs = ['out_mitry.pdf', 'out_cdg.pdf']

合并 = PdfFileMerger()

对于 pdf 中的 pdf: 合并.append(pdf)

merger.write("result.pdf") 合并.close()

我的实际结果是获得合并,但每个 pdf 都在一页上。 我想在一页中合并5个pdf

【问题讨论】:

  • 不,我认为 PdfFileMerger 类的 PyPDF2 不可能做到这一点。你唯一能做的就是设置页面布局,这不是你想要的。要将几页pdf文档放在一个页面上,我想到了Latex之类的工具。
  • python中是否有任何库可以做到这一点?我需要制作一个脚本
  • 我不知道,但可能有。我不知道。但是为什么你坚持使用 Python 呢?其他工具可以轻松做到。
  • 也许这就是你要找的东西:pypi.org/project/pdfnup

标签: python pdf generate


【解决方案1】:

我最近遇到了这样的问题并找到了解决方案。 我演示了两个单页文件的解决方案,您可以轻松地将其扩展到任意数量的 pdf。

让我们这样组合页面:

---------
|   |   |
| 1 | 2 |
|   |   |
---------
from PyPDF3 import PdfFileWriter, PdfFileReader
from PyPDF3.pdf import PageObject

pdf_filenames = ["out_mitry.pdf", "out_cdg.pdf"]

input1 = PdfFileReader(open(pdf_filenames[0], "rb"), strict=False)
input2 = PdfFileReader(open(pdf_filenames[1], "rb"), strict=False)

page1 = input1.getPage(0)
page2 = input2.getPage(0)

total_width = page1.mediaBox.upperRight[0] + page2.mediaBox.upperRight[0]
total_height = max([page1.mediaBox.upperRight[1], page2.mediaBox.upperRight[1]])

new_page = PageObject.createBlankPage(None, total_width, total_height)

# Add first page at the 0,0 position
new_page.mergePage(page1)
# Add second page with moving along the axis x
new_page.mergeTranslatedPage(page2, page1.mediaBox.upperRight[0], 0)

output = PdfFileWriter()
output.addPage(new_page)
output.write(open("result.pdf", "wb"))

【讨论】:

    猜你喜欢
    • 2013-06-13
    • 2016-03-25
    • 2018-07-22
    • 1970-01-01
    • 2011-05-04
    • 2014-11-16
    • 2016-04-27
    • 2019-10-30
    • 2010-10-06
    相关资源
    最近更新 更多