【问题标题】:Java Printing: Determine the page that is printingJava 打印:确定正在打印的页面
【发布时间】:2014-10-13 14:02:38
【问题描述】:

我在一个类下面有一个print 方法:

public void print(EditorPanePrinter epp) {
    try {
        PrinterJob pj=PrinterJob.getPrinterJob();
        boolean ok = pj.printDialog();
        if(ok) {
            pj.setPageable(epp);
            pj.print();
        }
    } catch (PrinterException e1) {
        e1.printStackTrace();
    }

}

EditorPanePrinter 是一个 JEditorPane 包裹着一个 JPanel 用于打印预览。详情请见here

在显示的打印对话框中单击“确定”后,该页面已从打印机正确打印。

对于超过 1 页,尤其是要打印的页面很多,我想显示一个打印页面的对话框:即在打印第一页时“打印第 1 页,共 100 页”,“正在打印第 2 页,共 100 页”打印第二页时,以此类推。

我到处搜索,但没有找到解决方案。如何做到这一点?

如果您需要更多信息,请告诉我。

【问题讨论】:

    标签: java printing


    【解决方案1】:

    一个Pageable是由Printables组成的,当每个Printable被调用时,都会传递系统正在尝试打印的pageIndex,例如可以用来打印页码在输出...

    更多详情请见Printable

    根据您打印的框架,您可能希望在SwingWorker 中执行此操作并使用publish/process 功能更改活动页码。详情请见Worker Threads and SwingWorker

    【讨论】:

    • 谢谢。我明白了。您能否发布一个SSCCE,特别是关于我如何从Printableprint() 方法到SwingWorkerdoInBackground() 方法获得pageIndex?据我所知,上述代码块中的pj.print() 方法。
    • pageIndex 被传递给Printable 接口,你看过链接的JavaDocs吗,它是基本的打印101...
    • 感谢您的见解。我所做的是创建一个扩展 EditorPanePrinter 的包装类,这样我就可以获得 pageIndex 并更新对话框以显示当前打印的页面。
    • 由于EditorPanePrinter 不是基础库的一部分,因此很难提供更多建议,但它本身必须实现Printable...
    猜你喜欢
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多