コンテンツを再処理せずに2つのPDFファイルを連結するだけの場合は、それが最適pdftk
です。(Mac OS Xでは、これはMacPortsまたはFinkを介して利用できるはずです。Linuxには、すべての主要なディストリビューション用のネイティブパッケージがあります。Windowsの場合は、こちらをご覧ください。)
pdftk title.pdf content.pdf cat output book.pdf
これは、付加しますtitle.pdfをするcontent.pdfとに結果を書き込みbook.pdf。
pdftk
「ダム」ですが、2つ(またはそれ以上)のPDFファイルを連結する非常に高速な方法です。これまでの「ダム」は、としてpdftk
どのような方法ではありません解釈 PDFデータ・ストリームを、それだけで、必要に応じて内部オブジェクト番号は再改造されていることを確認しますとPDFで表示されるxref
構造(基本的にPDFの一種である目次のためのオブジェクト)。
Ghostscript:
Ghostscriptを使用する場合、同じ2つのファイルを連結する基本的なコマンドは次のとおりです。
gs \
-o book.pdf \
-sDEVICE=pdfwrite \
title.pdf \
content.pdf
ただし、これまでに経験したように、この単純なコマンドラインは画質を台無しにする可能性があります。その理由は、GhostscriptがPDFを処理するときに「ダンプ」ではないためです。読み込み時に完全に解釈し、結果を書き込むときに完全に新しいファイルを作成します。結果を作成するために、処理全体の多くの詳細についてデフォルト設定が自動的に使用されます。これらのデフォルトは、その呼び出しがGhostscriptに別の方法で指示しなかったすべての場合に適用されます。
したがって、新しいbook.pdfを作成するGhostscriptの方法は、の方法よりもはるかに「インテリジェント」です(ただし、はるかに低速です)pdftk
。(これは、多くの場合、Ghostscriptがb0rken PDFファイルを「制限内」で「修復」したり、入力PDFに埋め込まれていない出力PDFにフォントを埋め込んだり、重複した画像を削除したり、それらは単なる参照などによって-そして全体的に、肥大化した入力PDFからより小さく最適化されたファイルを作成しました...
解決策は、Ghostscriptにデフォルトを使用させないことです。コマンドラインにカスタムパラメータを追加します。
「GhostscriptはそのPDF入力を「解釈」する」とはどういう意味ですか?
すべてのファイルとそのコンテンツ(オブジェクト、ストリーム、フォント、画像など)が読み込まれ、チェックされ、独自の内部表現で保持された後、結果のPDFをPDFオブジェクトで再度出力します。ただし、「吐き出す」場合、Ghostscript は使用可能な数百のパラメーター[*]にすべての内部デフォルト設定を適用します。
残念ながら、これにより、これらのデフォルト設定に従って画像の「再処理」が行われます。これは、独自の(望ましい)コマンドラインパラメータを追加することによってのみ回避または上書きできます。
画像の問題は、Ghostscriptが(ライセンスの問題により)JPEG2000画像をJPEGエンコーディングに再エンコードする必要があるために発生する可能性があります。これを避けたい場合は、コマンドラインに次を追加してください:
-dAutoFilterColorImages=false \
-dAutoFilterGrayImages=false \
-dColorImageFilter=/FlateEncode \
-dGrayImageFilter=/FlateEncode \
含めることを検討する他の画像関連のコマンドラインオプションは次のとおりです。
-dColorConversionStrategy=/LeaveColorUnchanged \
-dDownsampleMonoImages=false \
-dDownsampleGrayImages=false \
-dDownsampleColorImages=false \
したがって、あなたを幸せにすることができる完全なGhostscriptコマンドラインは次のように読むべきです:
gs \
-o book.pdf \
-sDEVICE=pdfwrite \
-dColorConversionStrategy=/LeaveColorUnchanged \
-dDownsampleMonoImages=false \
-dDownsampleGrayImages=false \
-dDownsampleColorImages=false \
-dAutoFilterColorImages=false \
-dAutoFilterGrayImages=false \
-dColorImageFilter=/FlateEncode \
-dGrayImageFilter=/FlateEncode \
title.pdf \
content.pdf
次のコマンドラインを使用して、出力PDFで画像をまったく圧縮しないようにGhostscriptに指示することもできます。
gs \
-o book.pdf \
-sDEVICE=pdfwrite \
-dColorConversionStrategy=/LeaveColorUnchanged \
-dEncodeColorImages=false \
-dEncodeGrayImages=false \
-dEncodeMonoImages=false \
title.pdf \
content.pdf
。
[*]:Ghostscriptのpdfwriteデバイスが使用しているデフォルト設定の完全なリスト
について知りたい場合は、次のコマンドを実行します。完全なリストが返されます。
gs \
-sDEVICE=pdfwrite \
-o /dev/null \
-c "currentpagedevice { exch ==only ( ) print == } forall"
これらすべてのパラメーターの正確な意味についての説明は、「Distiller Parameters」に関するアドビのドキュメントを参照する必要があります。Ghostscriptは、これらすべてをまねようと非常に努力します...