python - PyPdf合并错误

标签 python pypdf

当我使用 PyPdf 将多个 Pdf 页面使用 mergeTranslatedPage 合并为一个页面时,我得到了一些未知字符,这些未知方 block 是最后合并页面中未包含的字符,经过一些研究,我认为该方法 _merge_ressources 工作得不太好,因为后面的页面可能会覆盖旧页面的资源,我在每次合并后尝试 page1.compressContentStreams() 但没有结果.

this link您将看到已合并的 PDF 示例和 PDF 结果。

请帮忙

最佳答案

以下解决方案使用 pdfjam命令将多个 pdf 页面合并为一个 pdf 页面。这是一个非常强大的命令,具有许多不同的选项和良好的文档。我在您提供的两个文件 4_P7.pdf 和 4_P13.pdf 上测试了该解决方案。您可以查看merged.pdf验证所有字符的格式是否正确。下面的代码默认使用 2x2 网格,但您可以通过在调用合并时设置网格参数来更改它。

from subprocess import check_output

def merge(inputs, output, grid='2x2'):
    check_output(['pdfjam'] + inputs + ['--nup', grid, '--outfile', output])

merge(['4_P7.pdf', '4_P13.pdf'], 'merged.pdf')

下面的评论中有一个问题,是否可以像问题示例文件中那样完成自定义职位。下面实现了问题中提供的相同布局。它首先构建顶部布局,即 4x2 布局,然后构建底部 2x6 布局,最后将这两个布局合并为 final.pdf 。下面示例中使用的 pdf 可以是 found here .

from subprocess import check_output

def merge(inputs, output, grid='2x2'):
    return check_output(['pdfjam'] + inputs + ['--nup', grid, '--outfile', output])

files = ['1.pdf', '2.pdf', '3.pdf', '4.pdf', '1.pdf', '2.pdf', '3.pdf', '4.pdf']
merge(files, 'top.pdf', '4x2')

files = ['1.pdf', '2.pdf', '3.pdf', '4.pdf', '5.pdf', '6.pdf', '1.pdf', '2.pdf',
    '3.pdf', '4.pdf', '5.pdf', '6.pdf']
merge(files, 'bottom.pdf', '2x6')

merge(['top.pdf', 'bottom.pdf'], 'final.pdf', '1x2')

关于python - PyPdf合并错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12781994/

相关文章:

python - 我怎样才能杀死我用 python 启动的进程

python - Selenium API 在我的 Python 程序中找不到所需的元素

python - 使用Python从邮件附件中一次性提取ZIP文件中的CSV文件

PDF - 去除白边

python - PyPDF2 PdfFileWriter 没有属性流

python - 未从 PyPDF2 上的正则表达式接收 PDF 的正确模式

python - 在 tkinter 上使用 GUI 显示 pdf 页面

java - 是否可以从不允许使用 "Page Extraction"的 PDF 中提取文本?

python - 来自其他类(class)的 Kivy 语言的 Clean Canvas

python 3类型模块