web-dev-qa-db-ja.com

コマンドラインでMac OSのPDFを完全にフラット化するにはどうすればよいですか?

Mac OS X Snow Leopardを使用しています。 PDFがあります。これをフリーズ(または「フラット化」)したいPDFフィールドは変更できず、注釈/スタンプは編集できなくなります実際にはこれらのPDFの多くを持っているので、コマンドラインでこれを自動的に実行したいと考えています。

私が試した/検討したいくつかのこと、それらの成功の程度:

  • プレビューで開き、ファイルに出力します。これは完全にフラットなPDFファイルサイズを変更せずに作成します。自動化する唯一の方法は、kludgy I-based AppleScript を記述することですが、これは回避しようとしてきた。
  • Acrobat Proで開き、 フラット化するJavaScript関数 を使用します。繰り返しますが、コマンドラインでこれを自動化する方法がわかりません。
  • pdftkflattenオプションとともに使用します。ただし、これはフォームフィールドを平坦化するだけで、スタンプやその他の注釈は平坦化しません。
  • cupsfilter を使用すると、多くのファイル形式からPDFを作成できます。pdftkのように、これはフォームフィールドのみをフラット化しました。
  • 使用する - cups-pdf MacのプリントサーバーにフックしてPDF印刷する代わりにファイルを保存します。 macportsバージョン を使用しました。結果のファイルはフラットですが巨大です。私はこれを8MBファイルで試しました;平坦化されたPDFは358MBでした!多分これは buntuのヒント:削減方法PDFコマンドラインからのファイルサイズ

他の提案はいただければ幸いです。

17

これは私が最近使用しているものです。機能的にはpdf2ps file.pdf - | ps2pdf - file_flat.pdfと同じように機能すると思いますが、私にはうまく機能しているように見えました。

gs -sDEVICE=pdfwrite -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -sOutputFile=<newfile> <oldfile>
7

pdf2psps2pdfを続けて使用してみてください。少し面倒ですが、30MBのドキュメントを17MBに減らすのに役立ちました。私が好きだったほどではないが、それでもなお良い。私は、この方法を使用してPDFのパスワード権限を取り除く友人からこのアイデアを得ました。

pdf2ps your_pdf_file.pdf your_pdf_file.ps
ps2pdf your_pdf_file.ps your_pdf_file_from_ps.pdf

お役に立てば幸いです。

11
Olga Botvinnik

警告:gsおよびpdf2ps | ps2pdfはPDFを統合しないでください!

Gsまたはpdf2psに続いてps2pdfを使用すると、multi-layerPDF内容が注釈の下にあるオリジナルに存在する) form。この問題は、[すべて選択]、[コピー]、[テキスト編集]ウィンドウに貼り付けて(リッチテキストモードの場合)プレビューで確認できます。たとえば、編集注釈の下にテキストまたはグラフィックが表示されます。明らかに非常に悪いそのコンテンツを出力から削除することが法的に必要な場合。

実用的なソリューション

ImageMagickは、次のコマンドを使用して、構成可能な品質、複数ページ、単一層のフラット化されたPDF各ページのラスターを生成します。

convert -density 150 document_original.pdf document_flat.pdf

このコマンドは、document_original.pdfをラスタライズして、各ページのピクセルベースの画像を150 DPIで作成し、結果をdocument_flat.pdfとして出力します。

画質に関する注意

rasterization により、拡大縮小できない(ズームすると、テキストまたは元のベクター画像がピクセル化される)PDFが生成されます。元のものが100万点の散布図のような非常に複雑なベクトルコンテンツを持たない限り、ファイルサイズが大きくなる可能性があります。

densityを変更することにより、より大きなファイルサイズをより高い解像度の出力と交換できます。

すべてのテキストは、各ページ画像で未加工のピクセルに変換されます。テキストとベクトル図が最も影響を受けるので、使用可能な出力ファイルが得られるまでDPIを試してください。

2
Alain O'Dea

それはサブオプションかもしれませんが、pdftkまたはcupsfilterでcups-pdfをチェーンすることを検討しましたか?あなたが述べたように、cups-pdfはフラットなpdfファイルを作成し、それをpdftkまたはcupsfilterに渡して、許容可能なサイズに縮小しますか?

または、/System/Library/Printers/Libraries/convertを見てください。次のようなことができるはずです。

/System/Library/Printers/Libraries/convert -f input_file.pdf -o output_file.pdf -j "application/pdf"
1
Mxx

Applescriptは、コマンドラインへの最良/最も迅速な方法です。動作したら、それをアプリケーションとして保存し、コマンドシェルでエイリアスを作成して実行できます。その後、コマンドラインでエイリアスを入力するだけです。

0
JRobert