(教程)图像是如何存储在PDF文件中的?

当我们的开发人员在学习PDF文件格式时,他们发现图像这一主题在PDF中可能相当复杂。所以我们写了这篇文章,希望能清楚地解释这个问题。如果您有任何改进建议,欢迎留言与我们互动。

PDF文件通常将图像存储为单独的对象(XObject),其中包含图像的原始二进制数据。这些都列在页面或文件的资源对象中,每个都有一个名称(即Im1)。因此,将嵌入PDF中的图像视为Tif、Gif、Bmp、Jpeg或Png是错误的。

重要的是要认识到,这通常不是 Tif、Jpg 或 Png 图像意义上的图像 – 它是像素的二进制数据、用于图像的色彩空间、有关图像的信息。创建 PDF 时会将图像拆分,不同的 PDF 创建工具可能会以非常不同的方式存储同一图像。

这是Acrobat的PDF对象查看器中显示的示例。 

0d5d7f0acc1e4274a4546471c4c3cc03.png

有时原始图像数据会调整到页面所需的大小,有时则不会(在这种情况下,它会在绘制时被放大或缩小),不同的 PDF 创建工具以非常不同的方式创建 PDF 文件。

实际像素数据可以被压缩,并且其中一种压缩格式(DCTDecode)与 JPEG 中使用的格式相同(JPX 与 Jpeg2000 相同)。如果您保存此数据,它可以作为JPEG文件打开,但可能需要为了包含色彩空间数据进行一些更改。

然后,通过 DO 命令和图像名称(即 Im1)将此图像绘制在 PDF 内容流中。该图像可以多次使用,并可缩放、旋转或剪切 - 它采用执行 DO 命令时设置的任何值。一些在眼睛看来是图像的东西也可能由多个图像组成,甚至根本不是图像!

所有这些都意味着,如果您想从PDF中提取图像,就需要使用所有原始数据对图像进行组装 ——它不会存储为您可以直接翻录的完整图像文件。

此外,还有一个“原始”版本(有时质量更高,有时大小完全相同)的图像和一个剪辑/缩放版本的图像 - 两者都可以提取(您还可以将剪辑版本的图像放大到原始版本,从而生成更高质量的图像 - 我们在 JPedal 中使用它来提取 PDF 中剪辑版本的图像)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值