我正在桌面和手持设备之间发送文档,我想将元数据标题添加到PDF中,如下所示。
<CUSTOM_HEADER>\n
{"fileInfoEncodedInJson\":
{"filename":"My Print Out",
"filesize\":"630",
"filedesc":"",}
}\n
</CUSTOM_HEADER>\n
… file contents …
我一直在使用提供documentAttributes
和setDocumentAttributes
方法的PDFKit和PDFDocument,但因为它是一个自定义标题,所以当我设置属性并保存时它似乎不会持续存在文件:
NSURL *path = [NSURL fileURLWithPath:@"/Users/username/Desktop/file.pdf"];
PDFDocument *document = [[PDFDocument alloc] initWithURL:path];
NSDictionary *docAttributes = [self.document documentAttributes];
NSMutableDictionary *newAttributes = [[NSMutableDictionary alloc] initWithDictionary:docAttributes];
[newAttributes setObject: @"Custom header contents" forKey:@"Custom header"];
docAttributes = [[NSDictionary alloc] initWithDictionary: newAttributes];
[document setDocumentAttributes: docAttributes];
//Here Custom Header is an entry in the dictionary
[self.document writeToFile:@"/Users/username/Desktop/UPDATEDfile.pdf"];
//Here the UPDATEDfile.pdf does not contain the custom header
我一直在寻找,我发现了几个类似的问题(例如cocoadev上的here),但没有答案。有没有人知道如何将自定义(即文档属性键下提供的8个预定义常量)标题存储到PDF文件?
答案 0 :(得分:1)
我实际上没有编辑预先存在的标题,我只是创建了一个NSMutableData对象,首先添加了文本数据,然后是PDF数据,然后将这些数据保存到我想要的路径中。
NSString *header = [NSString stringWithFormat:@"<CUSTOM_HEADER>\n {\"fileInfoEncodedInJson\": {\"filename\":\"My Print Out\", \"filesize\":\"630\",\"filedesc\":\"\",} }\n </CUSTOM_HEADER>\n"];
// Append header to PDF data
NSMutableData *data = [NSMutableData dataWithData:[header dataUsingEncoding:NSWindowsCP1252StringEncoding]];
[data appendData:[doc dataRepresentation]];
[data writeToFile:@"/Users/username/Desktop/UPDATEDfile.pdf" atomically:NO];
这会生成一个PDF文件,在Adobe中为我打开,并且在查看时标题是不可见的。