我正在开发一个项目,我需要在PDF上创建和设置我自己的元数据(以便将GUID直接设置到文件中)。
我目前能够设置经典元数据(例如创建者,关键字等),但我无法弄清楚如何添加自定义字段。
以下是我设置元数据的方法:
CFMutableDictionaryRef auxInfo = CFDictionaryCreateMutable(kCFAllocatorDefault, 1, NULL, NULL);
CFDictionaryAddValue(auxInfo, kCGPDFContextCreator, CFSTR("John doo"));
CFDictionaryAddValue(auxInfo, kCGPDFContextAuthor, CFSTR("foo bar"));
CFDictionaryRef auxillaryInformation = CFDictionaryCreateCopy(kCFAllocatorDefault, auxInfo);
CFRelease(auxInfo);
// create a context to draw into
CGContextRef graphicContext = CGPDFContextCreate(PDFDataConsumer, &mediaRect, auxillaryInformation);
CFRelease(auxillaryInformation);
CGDataConsumerRelease(PDFDataConsumer);
我尝试用自定义名称替换kCGPDFContextThing,但是当我读取元数据时,它根本不显示。
为了阅读我使用的元
CGPDFDictionaryRef dict = CGPDFDocumentGetInfo(*pdfDoc);
CGPDFDictionaryGetString(dict, "Creator", &objectValue);
我也尝试添加元:
NSString* str= @"Hello World";
NSData* data=[str dataUsingEncoding:NSUTF8StringEncoding];
CFDataRef cfdata = CFDataCreate(NULL, [data bytes], [data length]);
CGPDFContextAddDocumentMetadata(graphicContext, cfdata);
但它似乎也不起作用,我不确定我是否正确理解那里做了什么。
我也使用PDFNet SDK来帮助编辑,但它似乎没有提供任何有关元数据的帮助,所以我使用的是石英。
任何帮助或建议或任何事情都会受到欢迎,很遗憾,我根本不是iOS专家!
答案 0 :(得分:2)
您可以在PDFNet中对PDF进行低级编辑。简言之:
创建一个新的自定义条目(在文档的根目录上):
Obj* cust_dict = [[myPDFDoc GetRoot] PutDict:@"_MyCustomData" ];
[cust_dict PutText:@"_myGUID" value:@"123-4567-890"];
阅读自定义条目:
Obj* dict = [[myPDFDoc GetRoot] FindObj:@"_MyCustomData"];
DictIterator* itr = [dict Get:@"_myGUID"];
Obj* strObj = [itr Value];
NSString* str = [strObj GetAsPDFText];
NSLog(@"guid is %@", str);
删除自定义条目:
[[myPDFDoc GetRoot] EraseDictElementWithKey:@"_MyCustomData"];
您还可以在页面的根目录或更标准的位置放置元数据,如下所示:https://groups.google.com/d/msg/pdfnet-sdk/gtPjLZVbRSQ/Tv5DTb9pRXkJ
有关添加XMP元数据的更多具体信息(因为您的标记意味着您对此感兴趣),请尝试在PDFNet支持论坛上搜索XMP:https://groups.google.com/forum/#!searchin/pdfnet-sdk/XMP
我不确定如何使用Quartz。
披露:我为PDFT的制造商PDFTron工作。