【问题标题】:Printing in Java using JPS in Mac OSX Lion在 Mac OS X Lion 中使用 JPA 以 Java 打印
【发布时间】:2013-06-14 09:06:48
【问题描述】:

我正在尝试按照教程使用 JPS 将 JPG 图像打印到打印机,但它总是在 mac osx 中给我一个错误。它总是说,“无法转换 PostScript 文件”。

这是我用来打印的代码:

final PrintRequestAttributeSet photoAttr = createPhotoPaperPrintAttributes(copies);
PrintService printerService = findPrintService(photoAttr);
        try {
            DocAttributeSet das = new HashDocAttributeSet();
            das.add(new PrinterResolution(300, 300, PrinterResolution.DPI));
            das.add(MediaSizeName.ISO_A6);
            final Doc doc = new SimpleDoc(new FileInputStream(new File(imageFile)), DocFlavor.INPUT_STREAM.JPEG, das);

            DocPrintJob printJob = printerService.createPrintJob();
            printJob.print(doc, photoAttr);
        } catch (Exception e) {
            throw new PrintException(e);
        }

有谁知道哪里出了问题?

我设法让它使用 Printable 界面进行打印,但我无法以高于 72 DPI 的分辨率打印图像。我尝试了一些建议,例如缩放图形 2d,但它似乎不起作用。

任何帮助将不胜感激。

【问题讨论】:

  • 现在在任何 mac 打印上都会遇到这个问题。你找到解决方案了吗?
  • 不,我没有,所以我完全放弃了使用 java 打印 api 的实现。我所做的只是使用本机打印“lp”和“CUPS”驱动程序

标签: java printing


【解决方案1】:

仅使用 JPS 会遇到 Mac 问题。 我的建议是使用 Java 2 Print API + Java Print Service。

Java 2 Print API 有点像 1990 年的风格。为避免使用 Java 2 Print API 创建代码,您可以使用 PDFBox http://pdfbox.apache.org 作为框架。

使用 PDFBox,您可以创建一个 PDF 文档 (http://pdfbox.apache.org/cookbook/documentcreation.html),但不是保存,而是使用该代码打印它:

PrinterJob printJob = PrinterJob.getPrinterJob();
PrintService service = PrintServiceLookup.lookupDefaultPrintService(); 
printJob.setPrintService(service);      
document.silentPrint(printJob);

它在我的 Mac 上运行良好。

【讨论】:

    猜你喜欢
    • 2012-03-22
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 2011-12-27
    相关资源
    最近更新 更多