📄 fopprintapplet.java
字号:
StringBuffer sb = new StringBuffer(); StringTokenizer st = new StringTokenizer(s, "&"); while (st.hasMoreTokens()) { String pair = st.nextToken(); System.out.println("Next token: " + pair); int pos = pair.indexOf('='); if (pos == -1) { throw new IllegalArgumentException(); } String key = parseName(pair.substring(0, pos), sb); String val = parseName(pair.substring(pos + 1, pair.length()), sb); System.out.println("Key: " + key + " / Val: " + val); ht.put(key, val); } return ht; } private static String toHex(byte[] buf) { char[] cbf = new char[buf.length * 2]; for (int jj = 0, kk = 0; jj < buf.length; jj++) { cbf[kk++] = "0123456789ABCDEF".charAt((buf[jj] >> 4) & 0x0F); cbf[kk++] = "0123456789ABCDEF".charAt(buf[jj] & 0x0F); } return new String(cbf); } private static byte[] toByteArray(String hex) { byte[] result = new byte[hex.length() / 2]; for (int jj = 0, kk = 0; jj < result.length; jj++) { result[jj] = (byte) ( ("0123456789ABCDEF".indexOf(hex.charAt(kk++)) << 4) + "0123456789ABCDEF".indexOf(hex.charAt(kk++))); } return result; } private static byte[] getBytes(Object obj) { ByteArrayOutputStream bos = null; ObjectOutputStream oos = null; byte[] data = null; try { bos = new ByteArrayOutputStream(); oos = new ObjectOutputStream(bos); oos.writeObject(obj); data = bos.toByteArray(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (oos != null) { oos.flush(); oos.close(); } if (bos != null) { bos.close(); } } catch (IOException e) { e.printStackTrace(); } } return data; } private static Object getObject(byte[] bytes) { ByteArrayInputStream bis = null; ObjectInputStream ois = null; Object obj = null; try { bis = new ByteArrayInputStream(bytes); ois = new ObjectInputStream(bis); obj = ois.readObject(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (ois != null) { ois.close(); } if (bis != null) { bis.close(); } } catch (IOException e) { e.printStackTrace(); } } return obj; } // This is stolen from FOP PrintStarter class PrintRenderer extends AWTRenderer { public static final int EVEN_AND_ALL = 0; public static final int EVEN = 1; public static final int ODD = 2; private int startNumber; private int endNumber; private int mode = EVEN_AND_ALL; private int copies = 0; private PrintSettings settings; private PrintService service; private String jobName; PrintRenderer(String jobName, PrintSettings settings) { super(null); this.settings = settings; this.jobName = jobName; this.service = settings.getPrintService(); this.copies = settings.getCopies(); this.mode = settings.getMode(); this.startNumber = settings.getStartNumber(); this.endNumber = settings.getEndNumber(); this.setScaleFactor(1); } /* PrintRenderer(PrintService service, String jobName) { this(service, jobName, EVEN_AND_ALL, 0); } PrintRenderer(PrintService service, String jobName, int mode, int copies) { super(null); this.service = service; this.jobName = jobName; this.copies = copies; this.mode = mode; this.startNumber = 0 ; this.endNumber = -1; this.setScaleFactor(1); } */ public void stopRenderer(OutputStream outputStream) throws IOException { super.stopRenderer(outputStream); if (endNumber == -1) { endNumber = getPageCount(); } Vector numbers = getInvalidPageNumbers(); for (int i = numbers.size() - 1; i > -1; i--) { removePage(Integer.parseInt((String) numbers.elementAt(i))); } // print job attribute JobName printJobName = new JobName(jobName.substring(jobName.indexOf("#") + 1), Locale.getDefault()); PrintRequestAttributeSet aset = settings.getAttributeSet(); aset.add(printJobName); if (copies > 0) { aset.add(new Copies(copies)); } if (service != null) { log.info("Printing job [" + jobName + "] to printer - " + service.getName()); DocPrintJob job = service.createPrintJob(); job.addPrintJobListener(applet); DocAttributeSet das = new HashDocAttributeSet(); Doc doc = new SimpleDoc(this, flavor, das); try { int copiesToPrint = 1; if (!service.isAttributeCategorySupported(Copies.class)) { copiesToPrint = ((Copies) aset.get(Copies.class)).getValue(); aset.add(new Copies(1)); } getAppletContext().showStatus("Printing..."); for (int i = 0; i < copiesToPrint; i++) { System.out.println("Printing copy [" + i+1 + " of " + copiesToPrint + "]"); job.print(doc, aset); } /* try { setJobComplete(jobName, false); } catch (Exception e) { e.printStackTrace(); throw new IOException(e.getMessage()); } */ } catch (PrintException e) { log.error("Unable to print", e); throw new IOException("Unable to print: " + e.getClass().getName() + ": " + e.getMessage()); } } } public void renderPage(Page page) { pageWidth = (int)((float) page.getWidth() / 1000f); pageHeight = (int)((float) page.getHeight() / 1000f); super.renderPage(page); } private Vector getInvalidPageNumbers() { Vector vec = new Vector(); int max = getPageCount(); boolean isValid; for (int i = 0; i < max; i++) { isValid = true; if (i < startNumber || i > endNumber) { isValid = false; } else if (mode != EVEN_AND_ALL) { if (mode == EVEN && ((i + 1) % 2 != 0)) { isValid = false; } else if (mode == ODD && ((i + 1) % 2 != 1)) { isValid = false; } } if (!isValid) { vec.add(i + ""); } } return vec; } } class PrintSettings implements Serializable { protected transient PrintService service; protected PrintRequestAttributeSet aset; protected String printerName; protected int startNumber; protected int endNumber; protected int copies; protected int mode; public PrintSettings(PrintService service, PrintRequestAttributeSet aset, int start, int end, int copies, int mode) { this.printerName = service.getName(); this.service = service; this.aset = aset; this.startNumber = start; this.endNumber = end; this.copies = copies; this.mode = mode; } public PrintSettings(PrintService service, PrintRequestAttributeSet aset) { this(service, aset, 0, -1, 0, 0); } public synchronized PrintService getPrintService() { if (service == null) { PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, new HashPrintRequestAttributeSet()); if (printService.length > 0) { for (int i = 0; i < printService.length; i++) { PrintService svc = printService[i]; if (svc.getName().equals(printerName)) { service = svc; } } } } return service; } public String getPrinterName() { return printerName; } public PrintRequestAttributeSet getAttributeSet() { return aset; } public int getStartNumber() { return startNumber; } public int getEndNumber() { return endNumber; } public int getCopies() { return copies; } public int getMode() { return mode; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -