1

PyPdfを使用して複数のPdfページを1つのページにマージするmergeTranslatedPageと、いくつかの不明な文字が表示されます。これらの不明な正方形は、最後にマージされたページに含まれていない文字です。調査の結果、この方法_merge_ressourcesはうまく機能していないと思います。ページが古いページのリソースを上書きする可能性がありますpage1.compressContentStreams()。マージするたびに試しましたが、結果はありませんでした。

このリンクには、マージされたPDFの例とPDFの結果が表示されます。

助けてください

4

1 に答える 1

1

以下のソリューションでは、pdfjamコマンドを使用して、複数の pdf ページを 1 つの pdf ページにマージします。これは、さまざまなオプションと優れたドキュメントを備えた非常に強力なコマンドです。提供された 4_P7.pdf と 4_P13.pdf の 2 つのファイルでソリューションをテストしました。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 レイアウトを構築し、最後にこれら 2 つのレイアウトを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 に答える