Java Applet能否轻松地将text / html打印到标准打印机驱动程序(所有常用平台Win / Mac / Linux)?
是否需要签名?
答案 0 :(得分:10)
要打印,您需要使用Signed Applets,或者如果未签名的小程序尝试打印,系统将提示用户询问是否允许。
以下是使用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();
}
答案 1 :(得分:5)
为了进行打印,安全管理员需要允许它访问打印机。这意味着要么签署applet,要么至少使用Sun的Java插件的最新版本,如果未签名的applet尝试打印,将提示用户询问是否允许权限。