List of usage examples for java.awt.print PageFormat clone
public Object clone()
From source file:lu.fisch.unimozer.Diagram.java
public void printDiagram() { // print preview takes a lot of memory (don't know why) // so it is a good idea to sugest to the JVM to clean up the heap System.gc();//from w ww .j a v a2 s . c o m printOptions = PrintOptions.showModal(frame, "Print options"); if (printOptions.OK == true) { this.deselectAll(); this.cleanAll(); this.repaint(); if (printOptions.getJob() == PrintOptions.JOB_PREVIEW) { PrintPreview pp = new PrintPreview(frame, this); pp.setLocation(Math.round((frame.getWidth() - pp.getWidth()) / 2 + frame.getLocation().x), (frame.getHeight() - pp.getHeight()) / 2 + frame.getLocation().y); pp.setVisible(true); } else { try { // Use default printer, no dialog PrinterJob prnJob = PrinterJob.getPrinterJob(); // get the default page format PageFormat pf0 = prnJob.defaultPage(); // clone it PageFormat pf1 = (PageFormat) pf0.clone(); Paper p = pf0.getPaper(); // set to zero margin p.setImageableArea(0, 0, pf0.getWidth(), pf0.getHeight()); pf1.setPaper(p); // let the printer validate it PageFormat pf2 = prnJob.validatePage(pf1); //prnJob.pageDialog(prnJob.defaultPage()); prnJob.setPrintable(this, pf2); if (prnJob.printDialog()) { setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); prnJob.print(); setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } } catch (PrinterException ex) { ex.printStackTrace(); System.err.println("Printing error: " + ex.toString()); } } } System.gc(); }
From source file:lu.fisch.unimozer.Diagram.java
@Override public int print(Graphics g, PageFormat pageFormat, int page) throws PrinterException { /*/*w w w .j av a 2s .c o m*/ // clone paper Paper originalPaper = pageFormat.getPaper(); Paper paper = new Paper(); // resize it paper.setSize(originalPaper.getWidth(), originalPaper.getHeight()); paper.setImageableArea( originalPaper.getImageableX(), originalPaper.getImageableY()+30, originalPaper.getImageableWidth(), originalPaper.getImageableHeight()-60); // apply it pageFormat.setPaper(paper); */ /* Paper paper = new Paper(); paper.setSize(pageFormat.getWidth(),pageFormat.getHeight()); double paddingLeftRight = pageFormat.getImageableX(); double paddingTopBottom = pageFormat.getImageableY()+30; if (pageFormat.getOrientation()==PageFormat.LANDSCAPE) { paddingLeftRight = 60; paddingTopBottom = 60; } paper.setImageableArea(paddingLeftRight, paddingTopBottom, pageFormat.getWidth()-2*paddingLeftRight, pageFormat.getHeight()-2*paddingTopBottom); pageFormat.setPaper(paper);*/ if (page == 0) { pageList.clear(); if (printOptions.printCode() == true) { /*Set<String> set = classes.keySet(); Iterator<String> itr = set.iterator(); while (itr.hasNext()) { String str = itr.next();*/ /* let's try this one ... */ for (Entry<String, MyClass> entry : classes.entrySet()) { // get the actual class ... String str = entry.getKey(); MyClass thisClass = classes.get(str); CodeEditor edit = new CodeEditor(); edit.setFont(new Font(edit.getFont().getName(), Font.PLAIN, printOptions.getFontSize())); String code = ""; // get code, depending on JavaDoc filter if (printOptions.printJavaDoc()) code = thisClass.getContent().getText(); else code = thisClass.getJavaCodeCommentless(); // filter double lines if (printOptions.filterDoubleLines()) { StringList sl = StringList.explode(code, "\n"); sl.removeDoubleEmptyLines(); code = sl.getText(); } //edit.setDiagram(diagram); edit.setCode(code); // resize the picture PageFormat pf = (PageFormat) pageFormat.clone(); Paper pa = pf.getPaper(); pa.setImageableArea(pa.getImageableX(), pa.getImageableY() + 20, pa.getImageableWidth(), pa.getImageableHeight() - 40); pf.setPaper(pa); //sheets = new Vector<BufferedImage>(); int p = 0; int result = 0; do { /*BufferedImage img = new BufferedImage((int) pageFormat.getImageableWidth(),(int) pageFormat.getImageableHeight(),BufferedImage.TYPE_INT_RGB ); img.getGraphics().setColor(Color.WHITE); img.getGraphics().fillRect(0,0,(int) pageFormat.getImageableWidth(),(int) pageFormat.getImageableHeight());*/ BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB); result = edit.print(img.createGraphics(), pf, p); if (result == PAGE_EXISTS) { //sheets.add(img); pageList.add(str); p++; } } while (result == PAGE_EXISTS); //edit.print(g, pf, p); edit = null; System.gc(); } } } if (page == 0 && printOptions.printDiagram() == true) { Graphics2D g2d = (Graphics2D) g; int yOffset = (int) pageFormat.getImageableY(); g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY()); double sX = (pageFormat.getImageableWidth() - 1) / getDiagramWidth(); double sY = (pageFormat.getImageableHeight() - 1 - 40) / getDiagramHeight(); double sca = Math.min(sX, sY); if (sca > 1) { sca = 1; } g2d.translate(0, 20); g2d.scale(sca, sca); paint(g2d); g2d.scale(1 / sca, 1 / sca); g2d.translate(0, -(20)); g2d.translate(-pageFormat.getImageableX(), -pageFormat.getImageableY()); printHeaderFooter(g2d, pageFormat, page, new String()); PageFormat pf = (PageFormat) pageFormat.clone(); Paper pa = pf.getPaper(); pa.setImageableArea(pa.getImageableX(), pa.getImageableY() + 20, pa.getImageableWidth(), pa.getImageableHeight() - 40); pf.setPaper(pa); // reset the paper //pageFormat.setPaper(originalPaper); return (PAGE_EXISTS); } else { int origPage = page; if (printOptions.printDiagram() == true) page--; if (page >= pageList.size() || printOptions.printCode() == false) return (NO_SUCH_PAGE); else { String mc = pageList.get(page); page--; int p = 0; while (page >= 0) { if (pageList.get(page).equals(mc)) p++; page--; } MyClass thisClass = classes.get(mc); CodeEditor edit = new CodeEditor(); edit.setFont(new Font(edit.getFont().getName(), Font.PLAIN, printOptions.getFontSize())); String code = ""; // get code, depending on JavaDoc filter if (printOptions.printJavaDoc()) code = thisClass.getContent().getText(); else code = thisClass.getJavaCodeCommentless(); // filter double lines if (printOptions.filterDoubleLines()) { StringList sl = StringList.explode(code, "\n"); sl.removeDoubleEmptyLines(); code = sl.getText(); } edit.setCode(code); printHeaderFooter(g, pageFormat, origPage, thisClass.getShortName()); PageFormat pf = (PageFormat) pageFormat.clone(); Paper pa = pf.getPaper(); pa.setImageableArea(pa.getImageableX(), pa.getImageableY() + 20, pa.getImageableWidth(), pa.getImageableHeight() - 40); pf.setPaper(pa); edit.print(g, pf, p); edit = null; System.gc(); // reset the paper //pageFormat.setPaper(originalPaper); return (PAGE_EXISTS); } } }