PDFView printWithInfo:autoRotate:失败

时间:2010-03-19 15:00:11

标签: objective-c printing pdfview

我正在尝试打印我正在构建的一系列图像的PDF文档。如果它很重要,我会在Mozilla插件中完成所有这些操作。

我创建PDFDocument,并将其放入PDFView,然后我调用

[printView printWithInfo: [NSPrintInfo sharedPrintInfo] autoRotate: YES];

打印对话框出现(作为一个单独的窗口,而不是面板。我假设它来自于一个mozilla窗口,所以我不太担心它。对话框显示我的文档,我可以页面正确地通过它,一切看起来都很好。

然而,当我点击“打印”时,带有“布局”等的下拉列表变空,并且其下的视图变为空白。窗口不会消失,文档不会打印。点击取消完全相同。我唯一能做的就是强行退出Mozillla。

我基于PDFKitLinker2的程序来自apple dev网站,该程序有效。但我看不出它与我的版本之间有任何显着差异。

关于在哪里寻找的任何建议?

感谢。

编辑:是的,我知道这几乎与Printing Off-screen PDFViews完全重复,但从来没有得到足够的答案......(直到现在才注意到它......)

2 个答案:

答案 0 :(得分:7)

听起来你在这里遇到了内存管理问题。您是否检查过控制台日志以查看是否抛出了异常?您是如何创建PDFView的?

但为什么不按照WebKit的方式去做呢?

具体而言,在PDFDocument

上声明一个类别
@interface PDFDocument (PDFSecretsIKnowViaWebKit)
- (NSPrintOperation *)getPrintOperationForPrintInfo:(NSPrintInfo *)printInfo autoRotate:(BOOL)doRotate;
@end

然后,当您想要打印PDFDocument时,只需从中获取NSPrintOperation并运行它。

NSPrintOperation *op = [myPDFDoc getPrintOperationForPrintInfo:info autoRotate:YES];
[op runOperation];
// [op runOperationModalForWindow:delegate:didRunSelector:contextInfo:] if you have a window to attach it to

答案 1 :(得分:1)

这也适合我。我已经验证了getPrintOperationForPrintInfo:autoRotate:存在并且似乎在10.4,10.5和10.6上正常工作。