-all フラグを使用すると、pdfimages によって生成される画像が異なるのはなぜですか?

-all フラグを使用すると、pdfimages によって生成される画像が異なるのはなぜですか?

私の理解では、pdfimages -allPDF からネイティブ形式で画像を抽出するものです。

したがって、そのコマンドから抽出された JPG (非可逆) 画像には、オプションなしで生成された .ppm ファイルと .pbm ファイル、-allおよび Evince で画像を右クリックして保存したときに作成される PNG (可逆) ファイルと同じピクセル情報が含まれると予想しました。

しかし、ImageMagickcompareコマンドを使用すると、JPG ファイルに含まれる画像が上記の他のオプションと比較して異なることがわかります。再現するには、このリンク (https://fccid.io/document.php?id=2149405pdfimages) では、それをおよびの引数として使用しpdfimages -all、最初の .ppm ファイルと最初の .jpg ファイルを の引数として使用しますcompare。これを行うと、画像の違いを示すために赤色を含む画像ファイルが生成されます。

何か分からないことはありますか? pdfimages.ppm および .pbm ファイルを作成するときに、ピクセル情報がデフォルトで追加されますか?

答え1

pdfimages -allを返しますちょうどpdf に保存されたファイル。

これをテストするには、ラウンドトリップを実行します。まず jpg 画像から始めて、それを LaTeX を使用して pdf に追加し、 を使用して抽出しpdfimages -all、元の画像と比較します。(LaTeX を使用する理由については後で説明します。)

あなたのリンクから抽出した最初の jpg 画像があり、それに名前を付けましたdevice.jpg。LaTeX を使用してこれを PDF ファイルに入れてみましょう。

$ cat img.tex 
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics[width=5in,keepaspectratio]{device}
\end{document}
$ pdflatex img
[...snip...]
Output written on img.pdf (1 page, 672455 bytes).
Transcript written on img.log.

次に、これを抽出してpdfimages -all元のファイルと比較してみましょう。

$ pdfimages -all img.pdf img-all
$ cmp device.jpg img-all-000.jpg 
$

抽出されたjpgはバイト単位で同一オリジナルに。

脚注: LaTeX を使用する理由

上記のテストは、どの PDF 作成ツールを使っても実行できるわけではありません。すべての PDF 作成ツールが、画像をそのまま PDF に挿入できるわけではないからです。たとえば、ImageMagick を試してみましょうconvert

$ convert device.jpg device.pdf
$ pdfimages -all device.pdf device-all
$ cmp device.jpg device-all-000.jpg 
device.jpg device-all-000.jpg differ: byte 4, line 1

convert画像を PDF に配置する前に、小さいサイズに再サンプリングしました。

$ ls -1s device.jpg device-all-000.jpg 
528 device-all-000.jpg
656 device.jpg

画像の正確さは pdflatex の設計目標の一部でした。他の PDF 作成ソフトウェアでは、デフォルトで、画像を PDF に配置する前に「最適化」する場合があります。

アップデート: シュリーヴァツァル指摘する画像2pdfこのユーティリティは、画像を PDF に変換するロスレス方式も提供します。TeX 以外のユーザーにとっても、はるかに簡単に使用できるでしょう。

関連情報