具有循环间接引用的 Pdf 可以是有效的 PDF 吗?

问题描述 投票:0回答:2

只是为了进一步解释一下。 我有一个内部结构定义如下的 Pdf:(请参考图片)

Catalog
   Page
    Kids
      0000
        Resources
           XObject
             Form1  7 [2 0 R]
               Resources
                 XObject
                    Image1 3 [4 0 R]
                    Image2 5 [6 0 R]
                    Image3 7 [2 0 R]

Form1(父)和 Image3(子)引用相同的间接引用 7 [2 0 R]

当我们从XObject读取pdf结构到Resource,然后通过间接引用Id在该Resources中定义XObject时。这会导致循环引用,从而导致无限循环。 它是有效的 PDF 吗?在 Adobe Acrobat Pro/Dc 或任何其他应用程序中打开 pdf 不是问题。

如何解决?

c# itext
2个回答
0
投票

据我所知,这种构造并没有被明确禁止。因此,PDF 处理器有望防止无休止的递归。

例如:

尝试收集所有 XObject 时,会导致无限循环。怎么解决?

在收集 XObject 的用例中,您可以简单地检查是否已经收集了当前访问的 XObject。如果有,则不需要添加它,也不需要再次递归到其资源。

一般来说,人们可以选择跟踪访问的对象(例如通过收集它们或标记它们)或仅递归到固定的最大深度。后一个选项可能会错过某些细节,但更容易实现,不需要在某处保留可能大量的已访问对象;前者更准确,但也需要更多资源。


0
投票

这不仅是允许的,而且是预期的,即

Root
指向
Kids
,并将
Root
引用为它们的
Parent

© www.soinside.com 2019 - 2024. All rights reserved.