gpt4 book ai didi

iphone - 使用 CGPDFScanner 解析 CMap 流

转载 作者:行者123 更新时间:2023-12-03 20:56:35 29 4
gpt4 key购买 nike

有人使用 CGPDFScanner 来解析字体字典的 ToUnicode CMap 流条目吗?我遇到了一些麻烦。

我从字典中获取了 CGPDFStream 引用,并尝试用它构建 CGPDFScanner。问题是 CGPDFScanner 采用 CGPDFContentStream 作为参数,而不是 CGPDFStream。

当我解析 CGPDFPage 的文本运算符时,我可以使用 CGPDFContentStreamCreateWithPage 轻松获取 CGPDFContentStream,但是姊妹函数 CGPDFContentStreamCreateWithStream - 据说“您可以使用此函数来访问表单、图案、Type3 字体的内容,或任何 PDF 流” - 在 CGPDFContentStream Reference 中有些困惑我找不到示例代码。

无论如何,我将 CMap 流作为 stream 参数传递,将使用 CGPDFStreamGetDictionary 从流中获取的资源 CGPDFDictionary 作为 streamResources 参数传递,将页面内容流作为 em> parent 。资源字典可以很容易地从流本身获取,所以为什么首先要费心去询问它呢?最重要的是,传递 NULL 作为参数,但第一个似乎没有任何效果。

结果总是相同的:当我尝试使用设置了一些回调的扫描仪扫描内容流时,我收到以下消息

`begincodespacerange' isn't an operator.`beginbfrange' isn't an operator....`endbfrange' isn't an operator.

对于回调表中设置的每个运算符。这适用于遇到的每个 CMap。

所以,我不确定内容流是否设置错误,运算符是否无效,或者 CGPDFScanner 是否无法用于解析 CMap,即使它是常规 pdf 流对象,并且必须求助于编写自己的扫描器来解析流数据。

最佳答案

CGPDFScanner 只能解析 PDF 内容流,即包含要显示的内容的流。页面内容、表单XObjects、图案、Type3字体共享相同的流格式。 ToUnicode CMap 是一个完全不同的流,它使用与内容流不同的语法。您需要编写自己的扫描器来解析 CMap。 ToUnicode CMap 格式记录在 Adob​​e PDF 规范、PDF 引用 1.7 的第 5.9.2 节、Adobe 技术说明 #5014 和 #5411 中。

关于iphone - 使用 CGPDFScanner 解析 CMap 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4827488/

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