gpt4 book ai didi

使用 XObject 带有外部图像的 PDF

转载 作者:行者123 更新时间:2023-12-04 20:04:43 25 4
gpt4 key购买 nike

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

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

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

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

  • 谢谢

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

    我最初使用 Acrobat 创建了我的测试文档,但输出非常困惑。

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

    此文档当前未正确打开,但我尝试获取最小测试用例。我以前的尝试显示没有错误只是运气好(但远程图像无论如何都不起作用)。

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

    最佳答案

    首先,

    I'm using the spec https://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf



    我建议不要使用 PDF 引用,而是使用 ISO 标准。 Adobe PDF 引用本质上不是规范性的,而 ISO 标准是。 (实际内容差异很小,但如果有规范性规范,则应使用它。)Adobe 还发布了 copy of the ISO standard with merely the header exchanged .

    然后,请不要将 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 处找到。一个包含 1 ( /Width 1/Height 1 ) RGB ( /ColorSpace/DeviceRGB ) 样本数组的文件,每种颜色有 1 个字节 ( /BitsPerComponent 8 ),参见。第 8.9.5 节 ISO 32000-1 的图像词典.

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

    PDF 不支持 PNG 格式,您必须转换数据。不过,它确实支持使用 /FFilter /DCTDecode 的 JPEG 格式。这就是为什么规范中的样本
    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

    让它看起来很容易。

    关于使用 XObject 带有外部图像的 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36318312/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com