web-dev-qa-db-ja.com

コマンドラインから.pdf画像をフラット化する方法はありますか?

GIMPでは、.pdfをインポートし、[画像]ドロップダウンメニューで[フラットな画像]を選択することで、GUIを使用して(多くのレイヤーで作成されている場合は)平坦化できます。次に、.pdfを新しいファイル名でエクスポートできます。

これを自動化したいのですが。ターミナルからそれを行う方法はありますか?

24
generic_user

ゴーストスクリプト(gs)は、pdf2psおよびconvertよりもうまく機能しました。品質はほとんど低下せず、ファイルサイズは小さいです。

gs -dSAFER -dBATCH -dNOPAUSE -dNOCACHE -sDEVICE=pdfwrite \
-sColorConversionStrategy=/LeaveColorUnchanged  \
-dAutoFilterColorImages=true \
-dAutoFilterGrayImages=true \
-dDownsampleMonoImages=true \
-dDownsampleGrayImages=true \
-dDownsampleColorImages=true \
-sOutputFile=document_flat.pdf document_original.pdf

ここにあります: http://zeroset.mnim.org/2015/01/07/flatten-pdfs-with-ghostscript/

20
Stan Bondi

変換は同じファイルサイズを維持しますが、遅いことがわかりました。

Pdf2ps ps2pdfメソッドの方が高速ですが、ファイルサイズが増加していることに気付きました。

pdftkは高速であるだけでなく、同様のファイルサイズを保持するため、Niceです。

これは、ディレクトリを一括でフラット化するために使用するものです。

    function pdfflatten () {
        pdftk "$1" output "$2" flatten
    }
    export pdfflatten
    alias pdfflattenDIR='mkdir flattenedPDFs; for i in `seq $(ls *.pdf | wc -l)`; do a=`ls *.pdf | head -$i | tail -1`; pdfflatten "$a" flattenedPDFs/"$a"; done'
1
Jgar