【问题标题】:Manipulate and print to PDF files in a script在脚本中处理和打印到 PDF 文件
【发布时间】:2026-01-08 19:10:02
【问题描述】:

我有几个演讲幻灯片的 pdf 文件。我想做以下事情:将每个 pdf 文件打印到另一个 pdf 文件中,其中每页有 6 张幻灯片,然后将所有生成的文件合并到一个大文件中,同时确保每个原始文件都从奇数页码开始(编辑:很明显,它会双面打印)(必要时可能会添加空白页)。 这可能吗?

编辑:对于那些感兴趣的人,这是为考试打印大量课程材料......而且我需要为很多课程这样做。

【问题讨论】:

    标签: python pdf-generation


    【解决方案1】:

    要在一页上放置多张幻灯片,PDFjam 包中的pdfnup 是您的朋友。

    对于插入空白页,我不确定;也许你可以说服 pdfjam 也这样做。但是你不能在打印设置中关闭双面打印吗?

    【讨论】:

    • 我确实想双面打印。但我想一键发送文档进行打印,然后将每个部分装订在其自身中。
    • 啊,我误会了。您还可以保留单独的文档,并使用lpr 或类似程序从命令行打印它们。
    • 问题是,我的打印机并不能真正进行双面打印,我需要自己翻页,我只想做一次。
    【解决方案2】:

    如果是我,我会使用PDFjam 或类似工具对每个源文档执行 6-up。

    然后我会使用PyPDF 来计算每个页面的数量,如果需要添加一个空白页面,然后合并其余页面。比如:

    blank_page = PDFFileReader('blank.pdf').pages[0]
    dest = PDFFileWriter()
    for source in sources:
        PDF = PDFFileReader(source)
        dest.addPage(PDF.pages)
        if PDF.numPages % 2: #odd number of pages in source
            dest.addPage(blank_page)
    

    PyPDF 似乎也支持通过调整大小和重定位来合并页面,所以理论上,它也应该适用于创建 n-up 文档,尽管我没有看到示例代码。

    【讨论】: