使用XObject的带有外部图像的PDF

Nic*_*ves 2 pdf

我正在尝试建立一个带有外部文件链接的PDF文件。

我正在使用规格https://www.adobe.com/content/dam/Adobe/zh/devnet/acrobat/pdfs/pdf_reference_1-7.pdf

在第348页上,有一个带有远程加载的替代图像的图像示例。当我使用文档中的示例创建文档时,阅读器(使用acrobat阅读器XI)不会获取图像。没有错误消息,但没有发出请求(使用wireshark检查)。

  1. 我可以只有一个远程图像(即没有“正常”图像和备用图像)吗?
  2. 在使用/ FS / URL语法的完整文档的某个地方是否存在示例(即不仅仅是对象)?我找不到实际执行请求的任何内容。

谢谢

编辑:我使用LibreOffice创建单个1x1像素的基础文档。 http://pastebin.com/5GqCYgMp

我最初使用Acrobat创建了我的测试文档,但是输出确实很混乱。

然后用pdf规范中的示例替换流,并尝试修复startxref偏移量,但不确定它是否正确。 http://pastebin.com/BT42g02P

该文档当前无法正确打开,但是我试图获得一个最低限度的测试用例。我以前的尝试仅凭运气即可显示,没有任何错误(但是远程映像仍然无法正常工作)。

是否有任何工具实际上允许使用/ URL创建XObject?我不知道文件格式不足以手动可靠地创建它们。

mkl*_*mkl 6

首先,

我正在使用规格https://www.adobe.com/content/dam/Adobe/zh/devnet/acrobat/pdfs/pdf_reference_1-7.pdf

我建议不要使用PDF参考,而应使用ISO标准。ISO标准实际上不是Adobe PDF参考标准。(实际的内容差异很小,但是如果有规范的规范,则应该使用它。)Adobe还发布了ISO标准副本,仅交换了标头

然后,请勿将PDF视为文本文档。例如,通过在pastebin上共享它们,就可以将它们当作实质上破坏内容的文本来对待。

综上所述,让我们看看您的实际问题:

在样本PDF中,您具有:

4 0 obj
<</Type/XObject/Subtype/Image/Width 1/Height 1/BitsPerComponent 8/Length 0/F << /FS /URL
/F ( https://upload.wikimedia.org/wikipedia/commons/c/ca/1x1.png )
>>/Filter/FlateDecode/ColorSpace/DeviceRGB
>>
stream
endstream
endobj
Run Code Online (Sandbox Code Playgroud)

这表示PDF查看器应在URL https://upload.wikimedia.org/wikipedia/commons/c/ca/1x1.png中找到一个文件,该文件包含1(/Width 1/Height 1)RGB(/ColorSpace/DeviceRGB)样本数组,每种颜色1字节(/BitsPerComponent 8),请参阅。ISO 32000-1的第8.9.5节“图像字典” 。

我怀疑您的文件是否满足这一要求,我认为它实际上是一个PNG文件,尤其是具有PNG结构的文件,而不是上面说明的结构。

PDF不支持PNG格式,因此您必须转换数据。不过,它确实支持使用的JPEG格式,/FFilter /DCTDecode这就是规范中的示例的原因

16 0 obj
  << /Type /XObject
     /Subtype /Image
     /Width 1000
     /Height 2000
     /ColorSpace /DeviceRGB
     /BitsPerComponent 8
     /Length 0 % This is an external stream
     /F << /FS /URL
           /F (http://www.myserver.mycorp.com/images/exttest.jpg)
        >>
     /FFilter /DCTDecode
  >>
stream
endstream
endobj
Run Code Online (Sandbox Code Playgroud)

使它看起来很容易。