【问题标题】:Create custom metaData on a PDF with iOS使用 iOS 在 PDF 上创建自定义元数据
【发布时间】:2014-04-10 13:50:04
【问题描述】:

我正在处理一个项目,我需要在 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 来帮助编辑,但它似乎没有提供有关元数据的任何帮助,所以我使用的是quartz。

欢迎任何帮助或建议或任何东西,我很迷茫,而且我根本不是 iOS 专家!!!

【问题讨论】:

    标签: ios pdf metadata xmp


    【解决方案1】:

    您可以在 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 来做到这一点。

    披露:我为 PDFTron 工作,PDFNet 的制造商。

    【讨论】:

    • 效果很好!非常感谢朋友,我几乎失去了希望。顺便说一句,非常好的产品,你在那里做得很好!
    猜你喜欢
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    相关资源
    最近更新 更多