PDFファイルから画像を削除する方法


13

大量の画像(イラストや背景画像など)を含むかなり大きな(〜100MB)PDF文書があり、画像のないPDFのコピーが欲しいのですが、どうすればよいかわかりませんそれを行う。

私はそれをテキストのみに変換することについて話しているのではなく、段落/テーブル/複数列をそのままにしておきたいと思います。

私はコマンドラインに慣れており、使用できるディストリビューションが異なる複数のコンピューターを使用しています。


各ページに複数の画像がある500ページのドキュメントについて話しているので、すべての写真を自動的に削除する方法を探しています。
Ornux

回答:


14
cpdf -draft original.pdf -o version_without_images.pdf

リポジトリにはありませんが、ダウンロード(プリコンパイル済みまたはソース)をWebサイトで見つけることができます。


マニュアル

15.1ドラフト文書

-draftオプションは、ビットマップ(写真)イメージをファイルから削除し、より少ないインクで印刷できるようにします。必要に応じて、-boxesオプションを追加して、空白のままになっているスペースを、イメージがどこにあるかを示すクロスボックスで埋めることができます。これは、すべての場合に完全に表示されることを保証するものではありません(ビットマップは、ベクトルオブジェクトで部分的に覆われているか、元のオブジェクトでクリップされている可能性があります)。例えば:

 cpdf -draft -boxes in.pdf -o out.pdf

1
それがまさに私が探していたものです。出力ファイルは完璧です。どうもありがとうございます!
Ornux 14

@Rinzwindリンク「それらのWebサイト」は実際にはzipファイルに移動することに注意してください。
ジョス14

うーん..私にとっては、テキストの前後にほぼランダムな行を追加し続け、ファイルサイズは実際には縮小するのではなく、わずかに大きくなります。
ヘニングケーラー

22

Ghostscriptの最新リリースでもこれが可能です。-dFILTERIMAGEコマンドにパラメーターを追加するだけです。

コンテンツタイプ「ベクター」「テキスト」を選択的に削除するために追加できる、さらに2つの新しいパラメーターもあります

  1. -dFILTERIMAGE:すべてのラスターイメージが削除された出力を生成します。

  2. -dFILTERTEXT:すべてのテキスト要素が削除された出力を生成します。

  3. -dFILTERVECTOR:すべてのベクトル描画が削除された出力を生成します。

これらのオプションの2つを組み合わせることができます。(3つすべてを組み合わせると、すべてのページが空白になります...)

上記の3種類のコンテンツすべてを含むサンプルPDFページのスクリーンショットを次に示します。

「画像」、「ベクトル」、および「テキスト」要素を含む元のPDFページのスクリーンショット
「画像」、「ベクトル」、「テキスト」要素を含む元のPDFページのスクリーンショット。


次の6つのコマンドを実行すると、残りのコンテンツの6つの可能なバリエーションがすべて作成されます。

 gs -o noIMG.pdf -sDEVICE = pdfwrite -dFILTERIMAGE input.pdf
 gs -o noTXT.pdf -sDEVICE = pdfwrite -dFILTERTEXT input.pdf
 gs -o noVCT.pdf -sDEVICE = pdfwrite -dFILTERVECTOR input.pdf

 gs -o onlyIMG.pdf -sDEVICE = pdfwrite -dFILTERVECTOR -dFILTERTEXT input.pdf
 gs -o onlyTXT.pdf -sDEVICE = pdfwrite -dFILTERVECTOR -dFILTERIMAGE input.pdf
 gs -o onlyVCT.pdf -sDEVICE = pdfwrite -dFILTERIMAGE -dFILTERTEXT input.pdf

次の画像は結果を示しています。


左から上の行:すべての「テキスト」が削除されました。すべての「画像」が削除されました。すべての「ベクター」が削除されました。左から下の行:「テキスト」のみが保持されます。「画像」のみが保持されます。「ベクター」のみが保持されます。
左から上の行:すべての「テキスト」が削除されました。 すべての「画像」が削除されました。 すべての「ベクター」が削除されました。 左から下の行:「テキスト」のみが保持されます。 「画像」のみが保持されます。 「ベクター」のみが保持されます。



2

@Rinzwindの答えは正しいことですが、「中間」ソリューションについてコメントしたいだけです。通常、ghostscriptを使用して画像のサイズを大幅に縮小できます。

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen \
   -dNOPAUSE -dQUIET -dBATCH -sOutputFile=small.pdf original.pdf

...校正のために本当に便利な場合があります。PDFを記述するためのマニュアルページはこちらです。


@KurtPfeifle /screenは、(特に)ビットマップイメージの解像度を72dpiに設定します。そのため、画像のDPIが小さい場合、ファイルサイズが大きくなる可能性があります。これが、私が「通常」という言葉を使用した理由です(「常にではなく、かなり頻繁に」という意味)。自由に投票してください。
Rmano

次のコマンドを実行しますfor s in screen default ; do gs -o /dev/null -sDEVICE=pdfwrite -dPDFSETTINGS=/${s} -c "currentpagedevice {exch ==only ( ) print === } forall" | sort | tee ghostscript---pdfwrite-PDFSETTINGS-${s}--pagedevice-settings.txt; done。を使用して比較できる2つのテキストファイルが生成されますsdiff -sbB $[file1}.txt ${file2}.txt。これで、!によって導入されたすべての異なる設定を正確かつ完全に 把握できました!-dPDFSETTINGS=/screen
カート・ファイフル

できた それでもで大きなファイルを与えることができますどのオプションを見ることができない/screenよりも/default--- 72dpiです対150dpi、最適化、廃棄EPSプレビュー...ちょっと、ない大きな問題。人々はより良​​いソリューションをテストして選択します。
Rmano

申し訳ありませんが、多分私は私の最初の声明の生意気さのために今謝罪しなければなりません。正直に言うと、以前の調査(数年前の調査)から、本当に悪い結果をもたらしたことを覚えているようです/screen。おそらく私の記憶が失敗するか、私はそれと混同しました/epub。私があなたに与えたコマンドは、それが私が意味することを示すと確信していたため、メモリからでした。今、私は再びそれを再実行しましたが、私はもう何を期待していたのかわかりません。数年前に実行したより拡張されたテストです。その後、多くの(CID?/ CFF?)フォントが、結果のPDFのラスタライズされた肥大化サイズになりました。もっと時間ができたら、もう一度問題を再
検討する必要があり

0

マスターpdfエディターを使用して、それらの画像を削除し、新しいpdfファイルとして保存できます。Ubuntuソフトウェアセンターからダウンロードできます。


試しにインストールしましたが、自動化された方法はありません。これは500ページのドキュメントであるため、ここでの解決策としての手動削除は見当たりません。私は何か見落としてますか ?
Ornux

いいえ、画像は大きいと思ったので見逃しませんでした。とにかくいい質問。
Sudheer
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.