0

我正在桌面和手持设备之间发送文档,并且我想将元数据标题添加到 PDF,如下所示。

<CUSTOM_HEADER>\n
{"fileInfoEncodedInJson\":
   {"filename":"My Print Out",
   "filesize\":"630",
   "filedesc":"",}
   }\n
</CUSTOM_HEADER>\n
… file contents …

我一直在使用提供documentAttributessetDocumentAttributes方法的 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 上),但没有答案。有谁知道将自定义(即不是文档属性键下提供的 8 个预定义常量)标题存储到 PDF 文件的方法?

4

1 回答 1

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];

这会生成一个在 Adob​​e 中为我打开的 PDF 文件,并且在查看时标题是不可见的。

于 2012-06-19T15:27:42.727 回答