2011-08-13 49 views

回答

1

PDF文件存储为JPEG格式JPEG文件的实际(DCT和JPX编码),所以在大多数情况下,你可以从撕裂的数据。使用Tiffs,您正在查找CCITT数据(但您需要为数据添加标题以使其成为Tiff)。我在PDF文件中写了2篇关于图像的博客文章,分别是http://www.jpedal.org/PDFblog/2010/09/understanding-the-pdf-file-format-images/http://www.jpedal.org/PDFblog/2011/07/extract-raw-jpeg-images-from-a-pdf-file/,这可能有所帮助。

+0

谢谢,马克---我看过那些文章---我只是希望有人已经用一个简单的例子,像我在python中找到jpg示例一样完成了艰苦的工作。 – David

3

PDF文件可能包含不同的图像数据(不奇怪)。

最常见的情况是:

  • 传真数据(CCITT组3和4)
  • 与解码参数和可选的调色板中的所有压缩以DEFLATE或LZW压缩
  • JPEG数据
  • 原始光栅数据

最近,我(作为PDF库的开发人员)开始注意到越来越多的带有JBIG2图像数据的PDF。另外,JPEG2000有时可以放入PDF中。

我应该说,你可能可以提取JPEG/JBIG2/JPEG2000数据转换成对应*.jpeg/*.jp2/*.jpx文件,而无需外部库,但各种以破发电机发出怪异的PDF文件的准备。另外,PDF经常使用对象流,因此您需要为PDF实现复杂的解析器。

传真数据(即您可能称之为TIFF)应至少包装到有效的TIFF中。例如,你可以借用一些来自开源libtiff的代码。

然后是原始栅格数据。我不认为在没有图书馆的帮助下尝试提取这些数据是有意义的。当然,你可以这样做,但需要数月的时间。因此,如果您尝试仅从一组PDF中提取特定类型的图像数据,而这些数据都是使用相同的生成器创建的,那么您的任务可能是可行的。在其他所有情况下,我会建议节省时间,金钱和头发,并使用图书馆来完成任务。

+0

我更愿意使用一个库,但是我一直无法找到一个适用于Windows和Mac的价格合理的免版税库。 – David

相关问题