【问题标题】:How to print HTML and not the code using Java Print API?如何使用 Java Print API 打印 HTML 而不是代码?
【发布时间】:2015-01-22 13:22:10
【问题描述】:

我想在用户定义的打印机上打印一个 HTML 文件而不显示打印对话框。下面是我运行的代码,但它打印的是 HTML 代码,而不是 IE 中显示的实际页面。

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintServiceAttributeSet;
import javax.print.attribute.PrintServiceAttributeSet;
import javax.print.attribute.standard.PrinterName;
public class Print {
    public static void main(String[] args) throws PrintException {
        String printerName = "\\\\network-path\\myPrinter";
        String fileName = "C:\\log\\myLog.html";

        PrintServiceAttributeSet printServiceAttributeSet = new HashPrintServiceAttributeSet();
        printServiceAttributeSet.add(new PrinterName(printerName, null));
        PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, printServiceAttributeSet); // list of printers

        URL url = null;
        try {
            url = (new File(fileName)).toURI().toURL();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        DocFlavor flavor = DocFlavor.URL.AUTOSENSE;
        SimpleDoc doc = new SimpleDoc(url, flavor, null);

        PrintService printService = printServices[0];
        DocPrintJob printJob = printService.createPrintJob();
        if(printService.isDocFlavorSupported(flavor)) {
            try {
                printJob.print(doc, null);
            } catch (PrintException e) {
                e.printStackTrace();
            }
        } else {
            throw new PrintException("HTML flavor not supported on this printer");
        }
    }
}

我可以使用 JEditorPane.print() 方法打印 HTML。但我想知道这是否可以在没有 JEditorPane.print() 的情况下完成。有人可以帮忙吗?

【问题讨论】:

    标签: java java-print


    【解决方案1】:

    您首先需要使用 HTML 渲染引擎渲染 HTML,然后打印生成的图像。有几个基于 Java 的 HTML 渲染引擎。我自己没有尝试过,所以不知道推荐哪个。 Google 将http://cssbox.sourceforge.net/ 置于列表顶部。

    CSSBox 有一个类 ImageRenderer 可以满足您的需要。 “渲染文档并将结果存储到位图或矢量图像”。一旦有了位图,您就可以打印它。

    http://cssbox.sourceforge.net/api/org/fit/cssbox/demo/ImageRenderer.html

    【讨论】:

    • 感谢您的评论。这意味着如果没有 JEditorPane.print(),使用标准 JDK API 是不可能的。
    猜你喜欢
    • 2015-08-30
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    • 2019-05-21
    • 2022-08-21
    • 1970-01-01
    相关资源
    最近更新 更多