単一ページイメージに関する情報です。PDFファイル:
$ pdfimages -list p1.pdf
page num type width height color comp bpc enc interp object ID
---------------------------------------------------------------------
1 0 image 900 1100 rgb 3 8 image yes 4 0
1 1 mask 900 1100 - 1 1 image no 4 0
PDFから画像を抽出するには、次の方法を使用していますpdfimages
。
$ pdfimages -p p1.pdf ./p1
$ ls
p1-001-000.ppm p1-001-001.pbm p1.pdf
出力
p1-001-000.ppm
とは、p1-001-001.pbm
それぞれ以前に表示された「画像」と「マスク」に対応します。
convert
その後、次の方法を使用して、pdftk
2つの方法(「スタンプ」と「背景」)で「画像」と「マスク」から元のPDFを復元しようとしました。
$ for i in *.{ppm,pbm}; do convert $i $i.pdf; done
$ ls
p1-001-000.ppm p1-001-000.ppm.pdf p1-001-001.pbm p1-001-001.pbm.pdf p1.pdf
$ pdftk p1-001-000.ppm.pdf stamp p1-001-001.pbm.pdf output p1stamp.pdf
$ pdftk p1-001-000.ppm.pdf background p1-001-001.pbm.pdf output p1bkg.pdf
p1stamp.pdf
は空で(元とは全く異なるp1.pdf
)p1bkg.pdf
、元のものと似ているように見えますが、p1.pdf
右と下の境界線の周りはまだ異なります。pdfimages
最初に表示される出力には「type」という列があります。タイプ
画像タイプ。可能な値は、image(不透明画像)、マスク(モノクロ画像マスク)、smask(ソフトマスク画像)、stencil(色やパターンを描画するための単色マスク画像)です。
注:PDFの画像の透明度は、2つの別々のPDFオブジェクト(画像用オブジェクトとマスク用オブジェクト)を使用して作成されます。透明画像に属するマスク/マスクは、常にリストの画像の直後にあります。
PDFファイルでは、「マスク」、「マスク」、「ステンシル」が前景または背景として使用されますか?
「透かし」とどう違うの? 「透かし」は常に背景として使用されますか?
もう1つの問題は、両方の新しいPDFファイルが
p1stamp.pdf
476KBで、元のファイル(わずか94KB)よりはるかに大きいことですp1bkg.pdf
。p1.pdf
次のコマンドを使用して新しいPDFファイルを圧縮しても、サイズは変更されません。$ pdftk p1bkg.pdf output p1bkgcomp.pdf compress
分割操作の反対の作業
pdfimages
、つまり抽出された画像から元のPDFファイルを回復する方法を実際にどのように実行できますかpdfimages
?では、外観とサイズが元のPDFファイルと同じか近いですか?
ありがとうございます。
答え1
2番目の画像はマスクなので、マスクのように適用する必要があります。次のようにできます。
convert ./p1-001-000.ppm ./p1-001-001.pbm -alpha Off -compose CopyOpacity -composite output.pdf
これによりPDFファイル下部の黒いエッジはマスクによって削除/非表示になりましたが、ファイルサイズははるかに大きく(485.3Kb対96Kb)、PDFページも大きくなります。 :
PDFは単なるレイヤーイメージ以上です。 PDFにはテキスト、書式なども含まれています。したがって、PDFファイルから画像を抽出すると、情報が失われます。この場合、LibreOffice Drawで元のPDFファイルを表示しても、画像の端はPDFページの端を超えて表示されません。 (それぞれの画像も異なるサイズに調整されているようです... - からDrawからPNGに抽出されたLibreOffice画像ここ比較しよう)