我正在尝试修改PDF元数据(标题、作者等)iOS上现有的PDF文件。虽然很容易找到用于PDF解析和从头开始创建PDF的示例代码,但似乎没有一种简单的方法可以将现有的PDF转储到新文件中-并对其进行简单的修改。
更具体地说,当我粗略地阅读PDF时,如何获取信息:
CGPDFDocumentRef myPDF = CGPDFDocumentCreateWithURL((CFURLRef)urlOfInputPDF);
CGPDFDictionaryRef myPDFDict=CGPDFDocumentGetInfo(myPDF);到新的PDF中,我将大致这样创建它:
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复制到一个新文件中?以及如何使其可变,以便我可以在保存之前修改元数据?
发布于 2013-01-12 19:26:41
对于CoreGraphics,除了遍历每一页并将它们打印到新文档中之外,我不知道还有什么方法可以做到。至少这是我在PSPDFKit中做的事情。对于较大的文档,重新呈现整个文档的速度非常慢。
在这种情况下,您还会丢失一些元数据-也许更直接地操作PDF是更好的方法-但请注意,如果直接编辑字符串,则需要更新PDF中的外部参照尾部,因为尾部是字节坐标的映射,一旦添加/删除字符,该尾部将更改。
发布于 2018-02-04 20:24:38
不要使用CGPDFDocument (核心图形),而应使用PDFDocument (PDFKit)。这为这类事情提供了更容易的方法。
writeToFile:withOptions方法允许您将PDF保存到新文件,并在字典中指定DOCINFO数据。
https://stackoverflow.com/questions/8953061
复制相似问题