从Cocoa导出视图为PDF

时间:2011-10-28 14:28:32

标签: macos cocoa pdf appkit

Brad Miller @ Cocoa Dev Central写了一篇关于从Cocoa创建PDF的教程。我尝试按照那里的教程,但由于它相当陈旧(2003年),很多代码都被弃用了。我在一些fiddeling之后开始工作,但是当我尝试导出PDF时,打印对话框显示,并且它不会将PDF保存到我指定的文件中。

NSPrintInfo *printInfo;
NSPrintInfo *sharedInfo;
NSPrintOperation *printOp;
NSMutableDictionary *printInfoDict;
NSMutableDictionary *sharedDict;

sharedInfo = [NSPrintInfo sharedPrintInfo];
sharedDict = [sharedInfo dictionary];
printInfoDict = [NSMutableDictionary dictionaryWithDictionary: sharedDict];

[printInfoDict setObject:NSPrintSaveJob
                  forKey:NSPrintJobDisposition];

[printInfoDict setObject:[panel URL] forKey:NSPrintSavePath];

printInfo = [[NSPrintInfo alloc] initWithDictionary:printInfoDict];
[printInfo setHorizontalPagination: NSAutoPagination];
[printInfo setVerticalPagination: NSAutoPagination];
[printInfo setVerticallyCentered:NO];

printOp = [NSPrintOperation printOperationWithView:textView
                                         printInfo:printInfo];

[printOp setShowsProgressPanel:NO];
[printOp runOperation];

我的导出PDF实现的完整代码是here。上面的代码只是关于导出。

如果有人能看到我在这里做错了什么,会很高兴...

1 个答案:

答案 0 :(得分:1)

实际上,当我再次阅读时,我自己在这里找到了问题的答案。问题在于包含以下内容的行:

[printInfoDict setObject:[panel URL] forKey:NSPrintSavePath];

如您所见,文件URL在那里被选中,但它应该是路径而不是URL。所以我改成了这个:

[printInfoDict setObject:[[panel URL] path] forKey:NSPrintSavePath];

而且,这很有效!