PyPdf合并错误

时间:2012-10-08 12:41:59

标签: python pypdf

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

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

请帮助

1 个答案:

答案 0 :(得分:1)

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

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')