首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在iOS上读取、修改、写入CGPDFDocument?

如何在iOS上读取、修改、写入CGPDFDocument?
EN

Stack Overflow用户
提问于 2012-01-21 20:45:46
回答 2查看 1.7K关注 0票数 3

我正在尝试修改PDF元数据(标题、作者等)iOS上现有的PDF文件。虽然很容易找到用于PDF解析和从头开始创建PDF的示例代码,但似乎没有一种简单的方法可以将现有的PDF转储到新文件中-并对其进行简单的修改。

更具体地说,当我粗略地阅读PDF时,如何获取信息:

代码语言:javascript
复制
CGPDFDocumentRef myPDF = CGPDFDocumentCreateWithURL((CFURLRef)urlOfInputPDF);
CGPDFDictionaryRef myPDFDict=CGPDFDocumentGetInfo(myPDF);

到新的PDF中,我将大致这样创建它:

代码语言:javascript
复制
CGRect pageRect;
CFMutableDictionaryRef myDictionary = CFDictionaryCreateMutable(NULL, 0,
                                         &kCFTypeDictionaryKeyCallBacks,
                                         &kCFTypeDictionaryValueCallBacks);
CFDictionarySetValue(myDictionary, kCGPDFContextTitle, CFSTR("My PDF File"));
CFDictionarySetValue(myDictionary, kCGPDFContextCreator, CFSTR("My Name"));
pdfContext = CGPDFContextCreateWithURL (urlOfOutputPDF, &pageRect, myDictionary);

显然,字典类型不匹配,并且以这种方式创建的输出与页面(而不是文档)相关。

有什么想法吗?如何将整个CGPDFDocumentRef复制到一个新文件中?以及如何使其可变,以便我可以在保存之前修改元数据?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-12 19:26:41

对于CoreGraphics,除了遍历每一页并将它们打印到新文档中之外,我不知道还有什么方法可以做到。至少这是我在PSPDFKit中做的事情。对于较大的文档,重新呈现整个文档的速度非常慢。

在这种情况下,您还会丢失一些元数据-也许更直接地操作PDF是更好的方法-但请注意,如果直接编辑字符串,则需要更新PDF中的外部参照尾部,因为尾部是字节坐标的映射,一旦添加/删除字符,该尾部将更改。

票数 0
EN

Stack Overflow用户

发布于 2018-02-04 20:24:38

不要使用CGPDFDocument (核心图形),而应使用PDFDocument (PDFKit)。这为这类事情提供了更容易的方法。

writeToFile:withOptions方法允许您将PDF保存到新文件,并在字典中指定DOCINFO数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8953061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档