这是单页图像的信息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
以两种不同的方式(“图章”和“背景”)从“图像”和“蒙版”恢复原始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(不透明图像)、mask(单色图像掩模)、smask(软掩模图像)和stencil(用于绘制颜色或图案的单色掩模图像)。
注意:PDF 中图像的透明度是通过使用两个单独的 PDF 对象创建的:一个用于图像,另一个用于蒙版或 smask。属于透明图像的 mask/smask 始终直接跟随列表中的图像。
“mask”、“smask”和“stencil”在pdf文件中用作前景还是背景?
它们与“水印”有何不同? “水印”总是用作背景吗?
另一个问题是,两个新的 pdf 文件
p1stamp.pdf
均为 476 KB,比原始文件 (仅 94 KB)p1bkg.pdf
大得多。p1.pdf
即使我通过以下命令压缩新的 pdf 文件,它们的大小也不会改变:$ pdftk p1bkg.pdf output p1bkgcomp.pdf compress
我们怎样才能真正做到与 分割工作相反的工作
pdfimages
,即从 提取的图像中恢复原始 pdf 文件pdfimages
。以便外观和大小与原始pdf文件相同或接近?
谢谢。
答案1
由于第二张图像是一个蒙版,因此需要像蒙版一样应用 - 可以这样做:
convert ./p1-001-000.ppm ./p1-001-001.pbm -alpha Off -compose CopyOpacity -composite output.pdf
这导致一个PDF文件它的底部黑色边缘被遮罩删除/隐藏,但文件大小要大得多(485.3Kb vs 96Kb)并且具有更大的 PDF 页面。:
请记住,PDF 不仅仅是分层的图像 - 它们还包含文本、格式等。因此,仅从 pdf 文件中提取图像会丢失信息。在这种情况下,在 LibreOffice Draw 中查看原始 PDF 文件时,图像的边缘超出了 PDF 页面的边缘,因此未显示(我认为每个图像中的图像也缩放为不同的尺寸... - 从 LibreOffice Draw 中提取为 PNG 的图像这里用于比较)