使用XObject创建带有外部图片的PDF

6
我正在尝试构建一个带有指向外部文件的链接的PDF文件。
我使用规范 https://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf 在第348页中,有一个示例图像,其中包含远程加载的替代图像。当我创建一个使用文档中的示例的文档时,读者(使用Acrobat Reader XI)不会获取图像。没有错误消息,但没有进行任何请求(使用Wireshark进行检查)。
  1. 我可以只有一个远程图像(即没有“正常”图像和替代图像)吗?
  2. 是否有一个完整的文档示例,使用该/FS /URL语法(即不仅仅是对象)?我找不到实际进行请求的任何内容。
谢谢
编辑:我使用LibreOffice创建了基本文档,其中只包含一个1x1像素。 http://pastebin.com/5GqCYgMp

我最初使用Acrobat创建了我的测试文档,但输出结果非常混乱。

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

这个文档目前无法正确打开,但我尝试得到了一个最小的测试案例。我的之前尝试只是侥幸没有出现错误(但远程图像仍然无法工作)。

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


请分享您的确切文档。 - mkl
我已经添加了一个例子,如果有帮助的话,请告诉我,谢谢。 - Nicolas Esteves
我在这里想知道这是否能够完成,@NicolasEsteves 有什么好消息吗? - mrcni
1个回答

9
首先,

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

我建议不要使用 PDF 参考文献,而是使用 ISO 标准。Adobe PDF 参考文献并非规范性的,而 ISO 标准是规范性的。(实际内容差异微小,但如果有规范性的规范,则应该使用它。)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

这表示PDF查看器应该在URL https://upload.wikimedia.org/wikipedia/commons/c/ca/1x1.png 中找到一个文件,其中包含一个数组(/Width 1/Height 1)RGB (/ColorSpace/DeviceRGB) 样本,每个颜色使用1字节 (/BitsPerComponent 8),参见ISO 32000-1的第8.9.5节图像字典。
我怀疑您的文件不符合要求,我认为它实际上是一种特定的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

使它看起来很容易。

有没有一份PDF文件证明这个可行?我没能创建出来。 - Mijail
1
@Mijail 我必须承认我还没有尝试过。在我的答案中,我只是指出了OP的PDF文件中显而易见的问题... - mkl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接