PDF的内部结构已经分析过了。
带有单个过滤器的流可以正常工作。
但是在如下图多个过滤器的情况下,应该先关闭哪一个呢?
我不知道如何关闭它。
标头由于编码(或解码)问题而损坏,或者未按需要解决。
[/ASCIIHexDecode /FlateDecode]
PDF的内部结构已经分析过了。
带有单个过滤器的流可以正常工作。
但是在如下图多个过滤器的情况下,应该先关闭哪一个呢?
我不知道如何关闭它。
标头由于编码(或解码)问题而损坏,或者未按需要解决。
[/ASCIIHexDecode /FlateDecode]
但是在如下图多个过滤器的情况下,应该先关闭哪一个呢?
根据 PDF 规范 ISO 32000-2:2020,过滤器应按照它们在该数组中出现的顺序应用:
钥匙 | 类型 | 价值 |
---|---|---|
筛选 | 名称或数组 | (可选)过滤器的名称或由零个、一个或多个名称组成的数组,应用于处理在关键字stream和endstream之间找到的流数据。应按应用顺序指定多个过滤器。 |
(表 5——所有流词典共有的条目)
因此,在您的示例中,
您首先必须对内容进行ASCIIHexDecode - 即流中的十六进制数字应成对转换为字节 - 然后对这些字节进行FlateDecode。
在你问的评论中
有没有办法找出多个过滤器是如何配置的?
过滤器可以通过DecodeParms值中的参数进行配置:
钥匙 | 类型 | 价值 |
---|---|---|
解码参数 | 字典或数组 | (可选)参数字典或此类字典的数组,分别由Filter指定的过滤器使用。如果只有一个过滤器并且该过滤器具有参数,则应将DecodeParms设置为过滤器的参数字典,除非所有过滤器的参数都有其默认值,在这种情况下,可以省略DecodeParms条目。如果有多个过滤器并且任何过滤器的参数设置为非默认值,则 DecodeParms应该是一个数组,每个过滤器都有一个条目,其顺序与过滤器相同数组:该过滤器的参数字典,或者如果该过滤器没有参数(或者如果它的所有参数都有其默认值),则为空对象。如果所有过滤器都没有参数,或者如果它们的所有参数都有默认值,则可以省略DecodeParms条目。 |
(表 5——所有流词典共有的条目)