如何打印 HTML 而不是使用 Java 打印 API 的代码?
How to print HTML and not the code using Java Print API?
我想在用户定义的打印机上打印 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() 的情况下完成此操作。有人可以帮忙吗?
您首先需要使用 HTML 渲染引擎渲染 HTML,然后打印生成的图像。有几个基于 Java 的 HTML 渲染引擎。我自己没有尝试过,所以不知道推荐哪个。 Google 将 http://cssbox.sourceforge.net/ 置于列表顶部。
CSSBox 有一个 class ImageRenderer 可以满足您的需要。 "Renders a document and stores the result to a bitmap or vector image"。一旦你有了位图,你就可以打印它。
http://cssbox.sourceforge.net/api/org/fit/cssbox/demo/ImageRenderer.html
我想在用户定义的打印机上打印 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() 的情况下完成此操作。有人可以帮忙吗?
您首先需要使用 HTML 渲染引擎渲染 HTML,然后打印生成的图像。有几个基于 Java 的 HTML 渲染引擎。我自己没有尝试过,所以不知道推荐哪个。 Google 将 http://cssbox.sourceforge.net/ 置于列表顶部。
CSSBox 有一个 class ImageRenderer 可以满足您的需要。 "Renders a document and stores the result to a bitmap or vector image"。一旦你有了位图,你就可以打印它。
http://cssbox.sourceforge.net/api/org/fit/cssbox/demo/ImageRenderer.html