cocoa osx print pdf文档

时间:2015-04-20 14:26:01

标签: macos cocoa pdf printing

在我的cocoa应用程序中,我从webview获取了一个pdf文档。我需要打印那份pdf。我读到有NSPrintOperation printOperationWithView方法,但是这个方法打印了一个文档视图。无论如何直接从文件URL打印?我怎样才能正确实现这一目标?

这是我的代码:

NSString *fileName = [NSString stringWithFormat:@"%@/mypdf.pdf", documentsDirectory];

NSData *pdfFinal = [[[[webView mainFrame] frameView] documentView] dataWithPDFInsideRect:[[[webView mainFrame] frameView] documentView].frame];
PDFDocument *doc = [[PDFDocument alloc] initWithData:pdfFinal];
[doc writeToFile:fileName];

请帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

阅读此答案:Printing without an NSView

它解释了如何获取存储在NSData结构中的PDF文件并将其发送到打印机。所以剩下的唯一挑战(除了清理那些绝对不是生产质量的代码)就是将你的PDF文件放到NSData流中。这应该不是很困难。

实际上,您可以更改部分代码,而不是使用从NSData流获取信息的数据提供程序,构建一个直接从文件读取的代码:

CGDataProviderRef CGDataProviderCreateWithFilename ( const char *filename );

如果你已经在某个地方的磁盘上安装了PDF文件,这应该会更加直截了当。