如何从 CGPDFDocumentRef 获取预告片字典?

How to get the trailer dictionary from a CGPDFDocumentRef?

我知道之前有人问过这个问题,但我会更具体一些。

我有一个 CGPDFDocumentRef 文档,我想找到预告片,最好是 CGPDFDictionaryRef 的形式,这样我就可以查看它的 Encrypt 字典,看看它是否允许文本提取。

苹果图书馆似乎没有办法让我找到这本词典。

您可以使用 CGPDFDocumentGetCatalog() 获取目录 是否有 CGPDFDocumentGetTrailer() 的等价物?

否则我想我将不得不自己手动解析预告片的 PDFDocument。

这些人:How to find the trailer dictionary?

谈论编写这样一个低级解析器。

我怎样才能得到他们正在解析的代码?

我可以将 PDF 中的最后一页转换为 CGPDFStream,然后将该流转换为 NSData,然后可能转换为 ascii,然后开始实施他们正在谈论的 Trailer 解析器吗?

谢谢!

双重答案:

1) 不,Apple 不提供进入预告片的功能。如果您仍想访问它,则必须将 PDF 文件作为二进制文件打开并构建一个解析器来解析它(如描述 PDF 文件格式的 ISO 32000-1 标准中所述)。

2) 您很可能不需要(幸运的是,这不是一件容易的事)。 Apple贴心地为您提供了这两个功能:

bool CGPDFDocumentIsEncrypted ( CGPDFDocumentRef document );

这将告诉您文档是否加密。

bool CGPDFDocumentAllowsCopying ( CGPDFDocumentRef document );

这将告诉您文档是否允许从中复制文本(以及文本提取)。