Может ли Java-апплет использовать принтер? - PullRequest
11 голосов
/ 13 января 2009

Может ли Java-апплет легко печатать текст / html на стандартные драйверы принтера (со всеми распространенными платформами Win / Mac / Linux)?

Нужно ли подписываться?

Ответы [ 2 ]

10 голосов
/ 13 января 2009

Для печати вам понадобится либо Подписанные апплеты , либо, если неподписанный апплет попытается напечатать, пользователю будет предложено спросить, разрешить ли разрешение.

Вот пример кода для печати 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();
}
5 голосов
/ 13 января 2009

Для печати диспетчер безопасности должен разрешить ему доступ к принтеру. Это означает либо подписание апплета, либо, по крайней мере, последних версий плагина Java Sun , если неподписанный апплет пытается распечатать, пользователю будет предложено спросить, разрешить ли разрешение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...