pdfimages -all
在 .pdf 文件(每页都是文本)上使用时,我为 pdf 中的每页获取 3 个图像:
Foo-001-000.jp2
Foo-001-002.png
Foo-001-002.jb2e
第一个文件大部分是空白的,但包含一些幽灵般的背景以及偶尔的一段文本。第二个文件是黑白的,似乎是某种掩码,也许标识了第三个文件中的文本所在的位置(?)我无法在 Ubuntu 的图像查看器或 gimp 中查看第三个文件。
如果我使用,-png
我同样会得到三个图像,但都是 .png 的。大部分(几乎全部)pdf 文本都在第三张图片中。
pdfimages -list
看起来像这样:
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
1 0 image 829 1254 rgb 3 8 jpx yes 3659 0 150 150 76.2K 2.5%
1 1 image 829 1254 rgb 3 8 image yes 3663 0 150 150 5250B 0.2%
1 2 mask 1658 2508 - 1 1 image yes 3663 0 300 300 5250B 1.0%
2 3 image 934 1254 rgb 3 8 jpx yes 11 0 150 150 85.6K 2.5%
2 4 image 934 1254 rgb 3 8 image yes 15 0 150 150 14.1K 0.4%
2 5 mask 1868 2508 - 1 1 image yes 15 0 300 300 14.1K 2.5%
3 6 image 858 1243 rgb 3 8 jpx yes 47 0 150 150 78.0K 2.5%
3 7 image 858 1243 rgb 3 8 image yes 51 0 150 150 7681B 0.2%
有人可以帮助我了解我在这里得到的内容,以及如何组合这三个图像以获得每个页面的单个图像。或者等效地,只提取每页的单个图像。对我来说,关键问题是保留这些图像中尽可能多的可用信息。我想避免质量下降。
答案1
我想,您认为您将单个图像作为页面,并对它实际上是合成的感到惊讶。这是一种广泛使用的杂志归档方法,因为这些杂志在图形上比带有一些图像的简单书籍更复杂。它保留了质量并最终提供了一个非常小的 pdf 文件 - 但渲染速度慢得无法使用。
现在来说说解决方案。您实际上不想从 pdf 中提取任何内容。您希望以与 pdf 阅读器相同的方式呈现它。我建议使用 Ghostscript。像这样的事情会起作用:
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=png16m -r600 -dGraphicsAlphaBits=4 -sOutputFile=./img/img-%03d.png "$pdffilename"
根据需要进行调整。