Advertisement
nevermoreandmore

Untitled

Apr 10th, 2020
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.99 KB | None | 0 0
  1. import java.awt.print.*;
  2. import java.io.IOException;
  3.  
  4. public class PrinterTest {
  5.      public static void main(String[] args) {
  6.  
  7.         BoxWorks bxw = new BoxWorks();
  8.         String[] boxContents = new String[]{"1"};
  9.         double pageLength = 1.0;
  10.         double pageWidth = 7.7;
  11.  
  12.         try{
  13.             boxContents = bxw.getBoxContents("asdasdasd");
  14.             pageLength = (boxContents.length * 0.4) + 2.0; //this is an imprecise way of calculating page length
  15.         }catch(IOException e){
  16.                 System.out.println("Could not read.");
  17.                 boxContents[0] = "Could not read box contents";
  18.         }
  19.  
  20.         PrinterJob pj = PrinterJob.getPrinterJob();
  21.         if(pj.printDialog()){
  22.            
  23.             PageFormat pf = pj.defaultPage();
  24.             Paper paper = pf.getPaper();
  25.             double width = fromCMToPPI(pageWidth);
  26.             double height = fromCMToPPI(15);
  27.             paper.setSize(width, height);
  28.             paper.setImageableArea(
  29.                                 fromCMToPPI(0.25),
  30.                                 fromCMToPPI(0.5),
  31.                                 width - fromCMToPPI(0.35),
  32.                                 height - fromCMToPPI(1));                
  33.             System.out.println("Before- " + dump(paper));    
  34.             pf.setOrientation(PageFormat.PORTRAIT);
  35.             pf.setPaper(paper);    
  36.             System.out.println("After- " + dump(paper));
  37.             System.out.println("After- " + dump(pf));                
  38.             dump(pf);    
  39.             PageFormat validatePage = pj.validatePage(pf);
  40.             System.out.println("Valid- " + dump(validatePage));                
  41.             //Book book = new Book();
  42.             //book.append(new MyPrintable(), pf);
  43.             //pj.setPageable(book);
  44.             MyPrintable mprt = new MyPrintable();
  45.             mprt.setContents(boxContents);
  46.             pj.setPrintable(mprt, pf);
  47.             try {
  48.                  pj.print();
  49.             } catch (PrinterException ex) {
  50.                  ex.printStackTrace();
  51.             }
  52.         }
  53.     }
  54.  
  55.      protected static double fromCMToPPI(double cm) {            
  56.           return toPPI(cm * 0.393700787);            
  57.      }
  58.  
  59.      protected static double toPPI(double inch) {            
  60.           return inch * 72d;            
  61.      }
  62.  
  63.      protected static String dump(Paper paper) {            
  64.           StringBuilder sb = new StringBuilder(64);
  65.           sb.append(paper.getWidth()).append("x").append(paper.getHeight())
  66.               .append("/").append(paper.getImageableX()).append("x").
  67.               append(paper.getImageableY()).append(" - ").append(paper
  68.          .getImageableWidth()).append("x").append(paper.getImageableHeight());            
  69.           return sb.toString();            
  70.      }
  71.  
  72.      protected static String dump(PageFormat pf){  
  73.           Paper paper = pf.getPaper();            
  74.           return dump(paper);    
  75.      }
  76. }
  77.  
  78.  
  79. import java.awt.print.*;
  80. import java.awt.Graphics;
  81. import java.awt.Graphics2D;
  82. import java.awt.geom.Rectangle2D;
  83. import java.awt.FontMetrics;
  84. import java.util.Arrays;
  85.  
  86. public class MyPrintable implements Printable {
  87.     private String[] contentsArray;
  88.  
  89.     @Override
  90.     public int print(Graphics graphics, PageFormat pageFormat,
  91.         int pageIndex) throws PrinterException {    
  92.         System.out.println(pageIndex);
  93.         int result = NO_SUCH_PAGE;    
  94.         if (pageIndex < 1) {                    
  95.             Graphics2D g2d = (Graphics2D) graphics;
  96.             System.out.println("[Print] " + dump(pageFormat));
  97.             double width = pageFormat.getImageableWidth();
  98.             double height = pageFormat.getImageableHeight();
  99.             g2d.translate((int) pageFormat.getImageableX(),
  100.                 (int) pageFormat.getImageableY());                    
  101.             g2d.draw(new Rectangle2D.Double(1, 1, width - 1, height - 1));                    
  102.             FontMetrics fm = g2d.getFontMetrics();
  103.            
  104.             int csI = 0; //contentsArray index
  105.             while(csI < contentsArray.length){
  106.                 g2d.drawString(contentsArray[csI].toString(), 1, (csI + 1) * (fm.getAscent() +1)); //csI * (fm.getAscent() +1) - calculate where to position the new line
  107.                 csI++;
  108.             }
  109.            
  110.             result = PAGE_EXISTS;    
  111.         }    
  112.         return result;    
  113.     }
  114.  
  115.     public void setContents(String[] boxContents){
  116.         contentsArray = boxContents;
  117.     }
  118.  
  119.     protected static String dump(Paper paper) {            
  120.         StringBuilder sb = new StringBuilder(64);
  121.         sb.append(paper.getWidth()).append("x").append(paper.getHeight())
  122.            .append("/").append(paper.getImageableX()).append("x").
  123.            append(paper.getImageableY()).append(" - ").append(paper
  124.        .getImageableWidth()).append("x").append(paper.getImageableHeight());            
  125.         return sb.toString();            
  126.     }
  127.  
  128.     protected static String dump(PageFormat pf) {    
  129.         Paper paper = pf.getPaper();            
  130.         return dump(paper);    
  131.     }
  132. }
  133.  
  134.  
  135.  
  136. import java.io.BufferedReader;
  137. import java.io.FileReader;
  138. import java.io.IOException;
  139.  
  140. public class BoxWorks{
  141.     public String[] getBoxContents(String boxId) throws IOException{
  142.         String file = "aa.txt";
  143.         StringBuilder contents = new StringBuilder();
  144.         String ln = "";
  145.  
  146.         FileReader fr = new FileReader(file);
  147.         BufferedReader br = new BufferedReader(fr);
  148.  
  149.         try{
  150.             while((ln = br.readLine()) !=null){
  151.                 contents.append(ln + "\r\n");
  152.             }
  153.         }catch(IOException e){
  154.             System.out.println(e.getMessage());
  155.         }
  156.         br.close();
  157.  
  158.         return contents.toString().split("\r\n");
  159.     }
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement