Java Applet可以使用打印机吗?

Java Applet能够轻松地将text / html打印到标准打印机驱动程序(所有常见平台Win / Mac / Linux)吗?

需要签名吗?

要打印,您需要使用已签名的小程序,或者如果未签名的小程序尝试打印,系统将提示用户询问是否允许。

以下是使用JEditorPane打印HTML的示例代码:

public class HTMLPrinter implements Printable{ private final JEditorPane printPane; public HTMLPrinter(JEditorPane editorPane){ printPane = editorPane; } public int print(Graphics graphics, PageFormat pageFormat, int pageIndex){ if (pageIndex >= 1) return Printable.NO_SUCH_PAGE; Graphics2D g2d = (Graphics2D)graphics; g2d.setClip(0, 0, (int)pageFormat.getImageableWidth(), (int)pageFormat.getImageableHeight()); g2d.translate((int)pageFormat.getImageableX(), (int)pageFormat.getImageableY()); RepaintManager rm = RepaintManager.currentManager(printPane); boolean doubleBuffer = rm.isDoubleBufferingEnabled(); rm.setDoubleBufferingEnabled(false); printPane.setSize((int)pageFormat.getImageableWidth(), 1); printPane.print(g2d); rm.setDoubleBufferingEnabled(doubleBuffer); return Printable.PAGE_EXISTS; } } 

然后将其发送到打印机:

 HTMLPrinter target = new HTMLPrinter(editorPane); PrinterJob printJob = PrinterJob.getPrinterJob(); printJob.setPrintable(target); try{ printJob.printDialog(); printJob.print(); }catch(Exception e){ e.printStackTrace(); } 

为了打印,安全管理器需要允许它访问打印机。 这意味着要么对applet进行签名,要么至少使用最新版本的Sun Java插件, 如果未签名的applet尝试打印,系统将提示用户询问是否允许。