8

pdfimages -j bar.pdf /tmp/imagePDFから画像を抽出するために使用しています。私の目的は、それらが追加されたときの生の状態にすることです。.tif の場合は .tif を取得したいのですが、jpg の場合は .jpg を取得したいと思います。抽出したものすべてに対して .ppm を取得し続けます。

元の形式で画像を取得することは可能ですか、それとも ppm が私の唯一の意見ですか?

更新:これを行う主な目的は、ドキュメントに含まれるすべての画像の DPI を確認すること、またはそれらがベクターかどうかを確認することです。

4

6 に答える 6

9

まず、PDF用語で「画像」と呼ばれるものは、定義上、常にラスター画像です。「ベクター画像」などというものはありません。PDF に変換された元のファイルにベクター グラフィックスが含まれていたとしても、コンバーター プログラムは、これらがラスター イメージとして含まれていると判断した可能性があります。これを抽出すると、ベクター グラフィックスではなく、ラスター イメージが返されます。PDF 内にそのまま保存されているラスター グラフィックスは、 では抽出できませんpdfimages

次に、 を使用して実際に画像を抽出する必要はありませんpdfimages。現在のバージョン (v0.20.2 以降) の「Poppler」フォークをpdfimages使用している場合、-listパラメータを使用して、特定の範囲の PDF ページのすべての画像のリストを取得できます。

pdfimages -list -f 7 -l 8 ct-magazin-14-2012.pdf

  ページ番号 タイプ 幅 高さ カラー コンプ bpc enc interp オブジェクト ID
  -------------------------------------------------- -------------------
     7 0 画像 581 838 rgb 3 8 jpeg no 39 0
     7 1 画像 4 4 RGB 3 8 画像番号 40 0
     7 2 画像 314 332 RGB 3 8 jpx no 44 0
     7 3 画像 358 430 RGB 3 8 jpx no 45 0
     7 4 画像 4 4 RGB 3 8 画像番号 46 0
     7 5 画像 4 4 RGB 3 8 画像番号 47 0
     7 6 画像 4 6 RGB 3 8 画像番号 48 0
     7 7 画像 596 462 RGB 3 8 jpx no 49 0
     7 8 画像 4 6 RGB 3 8 画像番号 50 0
     7 9 画像 4 4 RGB 3 8 画像番号 51 0
     7 10 画像 8 10 RGB 3 8 画像番号 41 0
     7 11 画像 6 6 RGB 3 8 画像番号 42 0
     7 12 画像 113 27 RGB 3 8 jpx no 43 0
     8 13 画像 582 839 グレー 1 8 jpeg no 2080 0
     8 14 画像 344 364 グレー 1 8 jpx no 2079 0

再度注意してください: このバージョンのpdfimagesは Poppler のものです (XPDF のものは(まだ?) この新機能をサポートしていません)。

ご覧のとおり、これは画像のそれぞれの幅と高さを示しています。ただし、これは (まだ) DPI についての手がかりにはなりません。大きなラスター画像が PDF ページの小さなスペースに詰め込まれている場合、DPI 値は非常に高くなります。(これは、彼自身の答えに対する台座のコメントも強調していることです...)

DPI を計算するには、ページに表示される画像の幅/高さを測定する必要があります (Acrobat/Reader のツールの 1 つを使用して行うことができます)。上記の出力で DPI を計算します。


アップデート

の最近のバージョンでは、追加の列に含まれる画像の実際の解像度が DPI で直接pdfimages表示されるようになりました。この情報を取得することが、質問の当初の目標でした:

  pdfimages -list -f 6 -l 7 example.pdf
  ページ番号 タイプ 幅 高さ カラー コンプ bpc enc interp オブジェクト ID x-ppi y-ppi サイズ比
  -------------------------------------------------- ----------------------------------------------
     6 0 画像 1901 1901 RGB 3 8 画像番号 632 0 1818 1818 468K 4.4%
     6 1 画像 1901 1901 RGB 3 8 画像番号 645 0 1818 1818 521K 4.9%

新しい出力形式では、各イメージの水平解像度と垂直解像度も表示されます ( 'x-ppi''y-ppi' )。また、ストレージ ( 'size' ) とその圧縮率 ( 'ratio' )に関するイメージの実際のサイズも示します。

( のこれらの新機能を示唆する更新を提案してくれた @Eric に感謝しますpdfimages。)

于 2013-02-24T16:40:54.810 に答える
7

PDF の画像を見て、元の画像ファイル形式を (確実に) 知ることはできません。たとえば、TIFF 画像は、(頭のてっぺんから)none、RLE、CCITT(いくつかのバリエーション)、LZW、Flate、Jpeg で圧縮できます。PDF 内の画像が DCT (jpeg) で圧縮されている場合、ソースが TIFF か JPEG かをどのように判断しますか? Flateで圧縮されている場合、TIFFとPNGの見分け方は?さらに、圧縮を決定するのは PDF を生成するソフトウェアなので、Flate で圧縮された TIFF 画像を取得し、それを JPEG2000 または CCITT 圧縮画像を使用して PDF にエンコードし、Jbig2 または jpeg 画像で圧縮して、 8 ビットのパレット画像を Flate で圧縮します。

TL;DR あなたが知ることはできません。

于 2013-01-25T13:56:20.120 に答える
2

台座に同意します。使用されている元の画像形式を判断できない可能性があります。ppm だけが出力オプションではありません。

Pdfimages は PDF ファイルを読み取り、1 つまたは複数のページをスキャンし、イメージごとに 1 つのPPM、PBM、または JPEGファイル image-root-nnn.xxx を書き込みます。nnn はイメージ番号、 xxx はイメージ タイプ (.ppm、 .pbm、.jpg) .

http://linux.die.net/man/1/pdfimages

さらに、もちろん、イメージマジックの変換などを使用してフォーマットを変更できます

于 2013-01-25T14:08:37.550 に答える
1

元の質問への「更新」を扱う別の回答を追加しています。

「これを行う主な目的は、ドキュメントに含まれるすべての画像の DPI を確認すること、またはそれらがベクターかどうかを確認することです。」

Ghostscript を使用して、各ページのテキストピクセル イメージ、およびベクトル グラフィック領域を選択的に削除 (または保持) できます。

これの鍵は、新しい CLI パラメータを適用することです

  • -dFILTERIMAGE
  • -dFILTERTEXTおよび/または
  • -dFILTERVECTOR

によると。

この方法の詳細については、ここで説明します。回答には、結果を視覚化するスクリーンショットが含まれています。

PDF からすべての画像を削除するにはどうすればよいですか?

一番上の行、左から: すべての「テキスト」が削除されました。すべての「画像」が削除されました。すべての「ベクトル」が削除されました。下段、左から: 「テキスト」のみ保持。「画像」のみが保持されます。「ベクトル」のみが保持されます。
上段左から:全員


于 2019-08-27T18:35:38.167 に答える
0

画像XObject(元の画像の幅と高さを含む)を取得してから、実際に表示されるサイズを取得する必要があります。そうすれば、これを実行できます。

于 2013-01-26T17:29:16.707 に答える
0

まだ不思議に思っている人のためにpdfimages -all、最新のソリューションがあります:

-all: JPEG、JPEG2000、JBIG2、および CCITT イメージをネイティブ形式で書き込みます。CMYK ファイルは TIFF ファイルとして書き込まれます。他のすべての画像は PNG ファイルとして書き込まれます。これは、オプション -png -tiff -j -jp2 -jbig2 -ccitt を指定するのと同じです。

于 2021-03-28T10:32:58.737 に答える