如何解决Java Swing PrinterJob打印内容超出页面的问题
问题:将GUI打印到半张信纸大小的纸张
我有一个GUI界面,想要将其打印在半张信纸大小的纸张上,但当前打印输出不符合需求。
当前打印逻辑代码
在「确认打印GUI」中使用的打印代码:
PrinterJob job = PrinterJob.getPrinterJob(); PageFormat format = new PageFormat(); job.setPrintable(impresionpanel, format); if (job.printDialog()) { try { job.print(); this.dispose(); } catch (PrinterException ex) { JOptionPane.showMessageDialog(this, "Error en la impresión."); } } else { JOptionPane.showMessageDialog(this, "La impresión se canceló."); }
被打印面板的print方法实现
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException { if (pageIndex == 0) { Graphics2D graphics2d = (Graphics2D) graphics; graphics2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY()); printAll(graphics2d); return PAGE_EXISTS; } else { return NO_SUCH_PAGE; } }
测试生成的PDF结果不符合半张信纸的要求。我知道PageFormat的Paper类中有可设置打印区域的属性,但担心和需求无关所以没尝试。
我已经尝试过修改JPanel的尺寸和宽高比,输出结果始终不变;也把print方法修改为以下代码,结果还是一样:
if (pageIndex == 0) { Graphics2D graphics2d = (Graphics2D) graphics; graphics2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY()); printAll(graphics); return PAGE_EXISTS; } else { return NO_SUCH_PAGE; }
求各位帮忙解决这个问题。
内容的提问来源于stack exchange,提问作者NappeyWappey
相关产品推荐
相关产品推荐

