-1

PDF的内部结构已经分析过了。

带有单个过滤器的流可以正常工作。

但是在如下图多个过滤器的情况下,应该先关闭哪一个呢?

在此处输入图像描述

我不知道如何关闭它。

标头由于编码(或解码)问题而损坏,或者未按需要解决。

[/ASCIIHexDecode /FlateDecode]

4

1 回答 1

1

但是在如下图多个过滤器的情况下,应该先关闭哪一个呢?

根据 PDF 规范 ISO 32000-2:2020,过滤器应按照它们在该数组中出现的顺序应用:

钥匙 类型 价值
筛选 名称或数组 (可选)过滤器的名称或由零个、一个或多个名称组成的数组,应用于处理在关键字streamendstream之间找到的流数据。应按应用顺序指定多个过滤器。

(表 5——所有流词典共有的条目)

因此,在您的示例中,

/ASCIIHexDecode /FlateDecode

您首先必须对内容进行ASCIIHexDecode - 即流中的十六进制数字应成对转换为字节 - 然后对这些字节进行FlateDecode


在你问的评论中

有没有办法找出多个过滤器是如何配置的?

过滤器可以通过DecodeParms值中的参数进行配置:

钥匙 类型 价值
解码参数 字典或数组 (可选)参数字典或此类字典的数组,分别由Filter指定的过滤器使用。如果只有一个过滤器并且该过滤器具有参数,则应将DecodeParms设置为过滤器的参数字典,除非所有过滤器的参数都有其默认值,在这种情况下,可以省略DecodeParms条目。如果有多个过滤器并且任何过滤器的参数设置为非默认值,则 DecodeParms应该是一个数组,每个过滤器都有一个条目,其顺序与过滤器相同数组:该过滤器的参数字典,或者如果该过滤器没有参数(或者如果它的所有参数都有其默认值),则为空对象。如果所有过滤器都没有参数,或者如果它们的所有参数都有默认值,则可以省略DecodeParms条目。

(表 5——所有流词典共有的条目)

于 2022-01-12T12:31:54.897 回答