如何检测“另存为 PDF…”是从 OS X 上的 AWT PrinterJob 中挑选出来的

Posted

技术标签:

【中文标题】如何检测“另存为 PDF…”是从 OS X 上的 AWT PrinterJob 中挑选出来的【英文标题】:How to detect the ‘Save as PDF…’ was picked from an AWT PrinterJob on OS X 【发布时间】:2012-06-14 18:24:41 【问题描述】:

我有以下代码在我的 java 应用程序中显示本机打印对话框。

PrinterJob job = PrinterJob.getPrinterJob();
PrintRequestAttributeSet atts = new HashPrintRequestAttributeSet();
atts.add(DialogTypeSelection.NATIVE);

if (job.printDialog(atts)) 

    PrintService newlyUsedService = job.getPrintService();
    DocPrintJob docJob = newlyUsedService.createPrintJob();
    // print the passed javax.print.SimpleDoc object.
    docJob.print(simpleDoc, atts);

This code works fine when a printer is selected and the Print button is clicked, but it does not work when the user selects any option from the “PDF” menu at the bottom left. getPrintService方法返回最后一个选定的打印机(从屏幕截图中的Lillith)时,选择“PDF”菜单中的一个选项时。

谁能建议应该做些什么来检测何时在打印对话框中选择了“另存为 PDF...”并做出相应的响应。

【问题讨论】:

当你的程序得到真正的打印机,但你选择“另存为 PDF...”时,它会做什么? 我在打印机上打印了页面,但没有保存 pdf 或 postscript 文件。 @trashgod 该示例在哪里打印? 我用PreviewSave as PDF 都试过了。编辑:我也尝试在pageDialog() 中使用Any printer 对不起,我想引用这个example。 【参考方案1】:

您是否尝试过添加打印作业侦听器?现在就阅读它,我希望它会有所帮助:

Print Job Listener

【讨论】:

以上是关于如何检测“另存为 PDF…”是从 OS X 上的 AWT PrinterJob 中挑选出来的的主要内容,如果未能解决你的问题,请参考以下文章

如何将网页另存为PDF?

单词。不带对话框窗口另存为 PDF

Powershell 与 Access 2007 的交互,如何将报告另存为 PDF?

Java Apache POI Excel 另存为 PDF

asp.net 另存为 PDF文件

word另存为pdf图片模糊