在我的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];
请帮助。提前谢谢。
答案 0 :(得分:1)
阅读此答案:Printing without an NSView。
它解释了如何获取存储在NSData结构中的PDF文件并将其发送到打印机。所以剩下的唯一挑战(除了清理那些绝对不是生产质量的代码)就是将你的PDF文件放到NSData流中。这应该不是很困难。
实际上,您可以更改部分代码,而不是使用从NSData流获取信息的数据提供程序,构建一个直接从文件读取的代码:
CGDataProviderRef CGDataProviderCreateWithFilename ( const char *filename );
如果你已经在某个地方的磁盘上安装了PDF文件,这应该会更加直截了当。