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


19

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

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


1
imagemagickをインストールし、man mogrify-im6、montage-im6、display-im6、stream-im6、identity-im6、import-im6、conjure-im6、composite-im6、convert-im6、animate-im6およびcompare-im6を読み取ります。
ペルシャ湾14年

回答:


25

Re:UNIXコマンドラインでのPDFファイルのフラット化というタイトルのスレッドで、Googleを介してこれら2つのメソッドを見つけました。

方法#1-Imagemagickの変換を使用:
$ convert orig.pdf flattened.pdf 

注:このアプローチでは、品質がそうであると報告されています。

方法#2-pdf2psを使用する-> ps2pdf:
$ pdf2ps orig.pdf - | ps2pdf - flattened.pdf 

注:この方法は、画質を維持するために報告されています。


1
2番目のGIMPよりも優れた品質-ありがとう!
generic_user 14年

@ACD-知っておくと良いことです。Q.
slm

2
方法1は非常にぼやけた画像を生成し、方法2は完全に機能しました。
セベリンコザック

1
残念ながら、方法#2は画像をラスタライズしないため、機密部分をブロックしようとすると、ユーザーはドキュメントを開いてレイヤーを削除できます(Inkscapeのようなものを使用)。ただし、方法#1の解像度を変更する$ convert -density 150 {original,flattened}.pdf ことはできます。ディスク領域を保持する必要がある場合は、-type Grayscaleor -monochromeまたはそのようなものを使用できます。
-eacousineau

1
どちらの方法でもPDFがラスタライズされますが、方法2でははるかに高い解像度でPDFがラスタライズされます。したがって、これらの方法はどれも満足のいくものではありません。
アント

18

Ghostscriptの(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/


この方法では、PDFファイルがラスタライズされていないと、テキストはテキストとして保存され、素晴らしい作品
Antの

2
これを使用して、平坦化によって透明レイヤーを削除しようとしましたが、うまくいきませんでした。
mikemtnbikes

それは私のためにフォントを変更しましたが、そうでなければ、他の提案された方法よりもはるかに優れた解像度です。
ste

1

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

pdf2ps ps2pdfメソッドの方が高速ですが、ファイルサイズが大きくなっていることに気づきました。

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

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

    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'

pdftk flattenは、PDF内の画像を変更しませ。ドキュメントからは、「入力PDFのインタラクティブフォームフィールド(およびそのデータ)とPDFのページをマージする」
エイダンケイン

1
明確にするために、このアプローチでは透明レイヤーを平坦化しません(上記のとおり)。
mikemtnbikes
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.