CGPDF< ...> - 主持人在哪里?

时间:2015-07-19 04:09:28

标签: ios pdf pdf-generation core-graphics pdf-parsing

是否有任何方法可以使用CGPDF< ...>创建PDF对象(例如,具有自定义PDF生产者/消费者/查看者所需参数的PDF字典)。或者我是否必须编写自己的解析器并创建新的预告片,外部参照等,以便向PDF添加新对象?据我所知,CG在创建PDF时将其图形上下文的所有绘图调用转换为正确的PDF对应 - 但我有自定义数据/对象(例如注释,线程等)应该存储在PDF中但显然不能由CG自动创建。

我只能找到所有这些吸气剂

从字典中获取数据

CGPDFDictionaryGetArray
CGPDFDictionaryGetBoolean
CGPDFDictionaryGetCount
CGPDFDictionaryGetDictionary
CGPDFDictionaryGetInteger
CGPDFDictionaryGetName
CGPDFDictionaryGetNumber
CGPDFDictionaryGetObject
CGPDFDictionaryGetStream
CGPDFDictionaryGetString

任何帮助都会受到赞赏吗?

顺便说一下 - 有没有人知道一些链接,我可以通过这个函数及其回调找出在现实世界中可以实现的目标。

CGPDFDictionaryApplyFunction
CGPDFDictionaryApplierFunction

也许是一个示例应用程序来看它的实际效果?

提前谢谢

2 个答案:

答案 0 :(得分:3)

没有制定者。 CGPDF API是只读的。
CGPDFDictionaryApplyFunction只允许您枚举字典对象中的条目。如果你想看到现实世界的用法,PDFKitten框架会在一些地方使用这个功能。

答案 1 :(得分:2)

我们在iOS和Android的商业PSPDFKit SDK中添加了注释支持时发现了困难。

在简单的词法分析器/解析器旁边,查看PDF Specification,页面23ff,了解您需要支持的标准过滤器列表。

我们在Objective-C中构建了初始版本,使用原始文件访问,然后使用我们自己的小解析器。解析完所有对象后,可以附加一个包含要更改的对象的新预告片。如果不支持所有上述压缩方法,这将不适用于所有文档。花了几年的时间才到达一个州,在那里我们可以说它与99.9%的所有文件一起工作。有PDF规范,然后有文件的现实,不应该在任何理智的渲染器中工作,但Adobe Acrobat愉快地呈现文档。 PDF更像是HTML,即使在事情变得糟糕和破碎的情况下,浏览器仍会显示某些内容。

我们最终在C ++中重新实现了所有内容,以实现出色的解析性能,并且仅针对该组件进行了数千次测试。您还可以查看其他可能对您有帮助的商业产品,例如muPDF - 我只是想让您免于从头开始重新实现所有内容,因为只需几年时间就可以将代码转换为可接受的兼容性和性能水平。