1

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

此链接中,您将看到已合并的 PDF 示例和 PDF 结果。

请提供任何帮助

4

1 回答 1

1

以下解决方案使用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 。

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')
于 2012-10-13T20:06:35.007 回答