div.main {margin-left: 20pt; margin-right: 20pt}
О яве. Печатаем из аплета.
Часть 2.
Записи для Navigator-а и Internet Explorer-а
Код HTML, необходимый для указания и JAR файла и CAB файла обычно выглядит
так: <applet code=Main.class archive="signed.jar" width=320 height=400> <param name="cabbase" value="signed.cab"></applet>
Кроме этого, вам может потребоваться включить в вашу программу, похожий код,
для того, что бы удостовериться, что исполняется он действиетльно под
Netscape: String vendor = System.getProperty("java.vendor");if (vendor.substring(0,8).equals("Netscape")) PrivilegeManager.enablePrivilege("UniversalPrintJobAccess");
Создание объекта PrintJob
Интерфейс ToolKit может возвращать объект PintJob. Уже из него, Вы можете
получить объект типа Graphics. А уже затем заполнить его используя метод
Component.printAll(Graphics). Для очистки страницы, вызывайте Graphics.dispose()
и по моему мнению, для печати следующей страницы лучше создавать новый объект
типа PrintJob, заполнять его и потом опять уничтожать. Для преждевременного
прерывания печати нужно вызывать метод PrintJob.end().
Следующий код - простой пример:
import java.util.*;import java.awt.*;import java.awt.event.*;import java.applet.*;import netscape.security.PrivilegeManager; // this is Netscape's Capabilities APIclass ButtonActionListener implements ActionListener { PrintableFrame frame; ButtonActionListener(PrintableFrame frame) { this.frame = frame; } public void actionPerformed(ActionEvent e) { frame.print(); }}class PrintableFrame extends Frame { boolean is_netscape = System.getProperty("java.vendor").substring(0,8).equals("Netscape"); PrintableFrame() { setSize(100,100); setLayout(new GridLayout(1,1)); Label label = new Label("Hello World!"); add(label); pack(); } public void print() { Toolkit kit = getToolkit(); try { if (is_netscape) PrivilegeManager.enablePrivilege("UniversalPrintJobAccess"); // get the PrintJob object PrintJob job = kit.getPrintJob(this, "PrintableFrame print job", null); // do the printing if the user didn't cancel the print job if (job != null) { Graphics g = job.getGraphics(); printAll(g); // not paint(g) // finish with this page g.dispose(); // finish with the PrintJob job.end(); } } catch (Exception ex) { if (is_netscape && ex instanceof netscape.security.ForbiddenTargetException) System.err.println("User did not grant print access"); else ex.printStackTrace(); } }}public class Main extends Applet { PrintableFrame frame = new PrintableFrame(); public void init() { frame.setVisible(true); Button button = new Button("Print"); add(button); ButtonActionListener listener = new ButtonActionListener(frame); button.addActionListener(listener); }}
Кроме того я собрал Makefile, сорсы и прочее в один файл формата tar: pjobex.tar.
|