Может ли Java-апплет легко распечатать текст /html для стандартных драйверов принтера (со всеми распространенными платформами Win/Mac/Linux)?
Нужно ли его подписывать?
Может ли Java-апплет легко распечатать текст /html для стандартных драйверов принтера (со всеми распространенными платформами Win/Mac/Linux)?
Нужно ли его подписывать?
Для печати вам нужно либо использовать Подписанные апплеты, либо если неподписанный апплет пытается распечатать, пользователю будет предложено спросить, следует ли разрешить разрешение.
Вот пример кода для печати HTML с помощью JEditorPane:
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();
}
Для печати менеджеру безопасности необходимо разрешить ему доступ к принтеру. Это означает либо подписание апплета, либо, по крайней мере, с последними версиями плагина Sun Java, , если неподписанный апплет пытается распечатать, пользователю будет предложено спросить, разрешать ли разрешение.