当我使用 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/