Advertisement
Guest User

PrintHTML

a guest
Feb 7th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.66 KB | None | 0 0
  1. package toolbox.print;
  2.  
  3. /*
  4.  * ImprString.java
  5.  *
  6.  * Created on 9 de Marco de 2005, 18:32
  7.  *
  8.  * ATENCAO: 1cm  = 28 pixels
  9.  * ATENCAO: 1Pol = 72 pixels
  10.  * tamanho da folha A4 630x864
  11.  */
  12. /**
  13.  *
  14.  * @author  ZerossH
  15.  */
  16. public class PrintHTML extends javax.swing.JEditorPane implements java.awt.print.Printable {
  17.  
  18.     /**
  19.      * Construtor
  20.      * @param html Código HTML que será impresso
  21.      * @param pageFormat Formato da página
  22.      */
  23.     public PrintHTML(String html, java.awt.print.PageFormat pageFormat) {
  24.         super("text/html", html);
  25.         javax.swing.RepaintManager.currentManager(this).setDoubleBufferingEnabled(false);
  26.         this.setSize((int) pageFormat.getImageableWidth(), (int) pageFormat.getImageableHeight());
  27.  
  28.         java.awt.print.PrinterJob prnJob = java.awt.print.PrinterJob.getPrinterJob();
  29.         prnJob.setPrintable(this, pageFormat);
  30.  
  31.         if (prnJob.printDialog()) {
  32.             try {
  33.                 prnJob.print();
  34.             } catch (Exception PrinterException) {
  35.                 PrinterException.printStackTrace();
  36.                 System.out.println("Nao conseguiu imprimir !!");
  37.             }
  38.         }
  39.     }
  40.  
  41.     /**
  42.      * Construtor
  43.      * @param html Código HTML que será impresso
  44.      * @param larguraPag Largura da página em pixels 72 pixels = 1 polegada
  45.      * @param alturaPag Altura da página em pixels
  46.      * @param tamMargem Tamanho da margem página em pixels
  47.      */
  48.     public PrintHTML(String html, int larguraPag, int alturaPag, int tamMargem) {
  49.         super("text/html", html);
  50.         javax.swing.RepaintManager.currentManager(this).setDoubleBufferingEnabled(false);
  51.  
  52.         java.awt.print.PrinterJob prnJob = java.awt.print.PrinterJob.getPrinterJob();
  53.         java.awt.print.PageFormat pageFormat = new java.awt.print.PageFormat();
  54.         java.awt.print.Paper paper = new java.awt.print.Paper();
  55.  
  56.         paper.setSize(larguraPag, alturaPag);
  57.         paper.setImageableArea(tamMargem, tamMargem, larguraPag - tamMargem * 2, alturaPag - tamMargem * 2);
  58.         pageFormat.setPaper(paper);
  59.         this.setSize((int) pageFormat.getImageableWidth(), (int) pageFormat.getImageableHeight());
  60.         prnJob.setPrintable(this, pageFormat);
  61.  
  62.         if (prnJob.printDialog()) {
  63.             try {
  64.                 prnJob.print();
  65.             } catch (Exception PrinterException) {
  66.                 PrinterException.printStackTrace();
  67.                 System.out.println("Nao conseguiu imprimir !!");
  68.             }
  69.         }
  70.     }
  71.  
  72.     /**
  73.      * Construtor
  74.      * @param html Código HTML que será impresso
  75.      */
  76.     public PrintHTML(String html) {
  77.         super("text/html", html);
  78.         javax.swing.RepaintManager.currentManager(this).setDoubleBufferingEnabled(false);
  79.  
  80.         java.awt.print.PrinterJob prnJob = java.awt.print.PrinterJob.getPrinterJob();
  81.         java.awt.print.PageFormat pageFormat = new java.awt.print.PageFormat();
  82.         pageFormat = prnJob.pageDialog(pageFormat);
  83.         this.setSize((int) pageFormat.getImageableWidth(), (int) pageFormat.getImageableHeight());
  84.         prnJob.setPrintable(this, pageFormat);
  85.  
  86.         if (prnJob.printDialog()) {
  87.             try {
  88.                 prnJob.print();
  89.             } catch (Exception PrinterException) {
  90.                 PrinterException.printStackTrace();
  91.                 System.out.println("Nao conseguiu imprimir !!");
  92.             }
  93.         }
  94.     }
  95.  
  96.     /**
  97.      * Impressao
  98.      */
  99.     @Override
  100.     public int print(java.awt.Graphics g, java.awt.print.PageFormat pageFormat, int pageIndex) throws java.awt.print.PrinterException {
  101.         java.awt.Graphics2D g2 = (java.awt.Graphics2D) g;
  102.  
  103.         //panel Dimension
  104.         java.awt.Dimension d = this.getPreferredSize();
  105.         double panelWidth = d.getWidth();
  106.         double panelHeight = d.getHeight();
  107.         d = this.getSize();
  108.         if (d.getWidth() > panelWidth) {
  109.             panelWidth = d.getWidth();
  110.         }
  111.  
  112.         //page Dimension
  113.         double pageWidth = pageFormat.getImageableWidth();
  114.         double pageHeight = pageFormat.getImageableHeight();
  115.  
  116.         // Check the number of pages
  117.         double scale = pageWidth / panelWidth;
  118.         int totalNumPages = (int) Math.ceil(scale * panelHeight / pageHeight);
  119.  
  120.         // Check for empty pages
  121.         if (pageIndex >= totalNumPages) {
  122.             return java.awt.print.Printable.NO_SUCH_PAGE;
  123.         }
  124.  
  125.         // Translate and scale the printing area
  126.         g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY() - pageIndex * pageHeight);
  127.         g2.scale(scale, scale);
  128.         this.paint(g2);
  129.  
  130.         return java.awt.print.Printable.PAGE_EXISTS;
  131.     }
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement