



Для печати вам нужно будет либо использовать Подписанные апплеты, либо, если неподписанный апплет попытается напечатать, пользователю будет предложено спросить, разрешить ли разрешение.
Вот пример кода для печати 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();
}
Спасибо за отличный код! Однако есть одна проблема с моими данными тестирования: testPanel.setText ("<html> <h1> Это тестовая печать </h1> blaa blaa </html>"); Вывод на бумаге имеет видимые HTML-теги, поэтому его форматирование не выполняется, например. заголовок, он просто выводит теги H1.
Том, вы должны использовать HTMLEditorKit. Попробуйте testPanel.setContentType ("text / html") перед настройкой содержимого html с помощью setText.
каковы все необходимые импортные данные для выполнения этого запуска?
Для печати диспетчер безопасности должен разрешить ему доступ к принтеру. Это означает либо подпись апплета, либо, по крайней мере, последние версии подключаемого модуля Sun Java, если неподписанный апплет попытается напечатать, пользователю будет предложено, чтобы спросить, разрешить ли разрешение.
Wew! Ненавижу, если случайный сайт начнет печатать спам на моих листах ... :-)
PhiLho: Есть диалоговое окно. JavaScript может делать то же самое.
Нил Коффи: Последние версии? Он был там уже десять лет.
Том - спасибо за исправление - это действительно так долго ...? Вы внезапно заставили меня почувствовать себя очень старым !! :-)
Даже более новые версии JRE могут развертывать апплет с помощью JWS и использовать javax.jnlp.PrintService. По ощущениям это похоже на «приглашение / печать» ненадежного апплета.
Как ответил Нил Коффи, вам не нужно подписывать.