我正在尝试建立一个带有外部文件链接的PDF文件。
我正在使用规格https://www.adobe.com/content/dam/Adobe/zh/devnet/acrobat/pdfs/pdf_reference_1-7.pdf
在第348页上,有一个带有远程加载的替代图像的图像示例。当我使用文档中的示例创建文档时,阅读器(使用acrobat阅读器XI)不会获取图像。没有错误消息,但没有发出请求(使用wireshark检查)。
谢谢
编辑:我使用LibreOffice创建单个1x1像素的基础文档。 http://pastebin.com/5GqCYgMp
我最初使用Acrobat创建了我的测试文档,但是输出确实很混乱。
然后用pdf规范中的示例替换流,并尝试修复startxref偏移量,但不确定它是否正确。 http://pastebin.com/BT42g02P
该文档当前无法正确打开,但是我试图获得一个最低限度的测试用例。我以前的尝试仅凭运气即可显示,没有任何错误(但是远程映像仍然无法正常工作)。
是否有任何工具实际上允许使用/ URL创建XObject?我不知道文件格式不足以手动可靠地创建它们。
首先,
我正在使用规格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)
使它看起来很容易。
| 归档时间: |
|
| 查看次数: |
3209 次 |
| 最近记录: |