1

80mm * 297 mm の用紙にページを印刷する必要があります。私は次のコードを使用しています:

 public static void printCard(final String bill ){



Printable contentToPrint = new Printable(){
   @Override
   public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws     PrinterException {


       Graphics2D g2d = (Graphics2D) graphics;
    g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
    pageFormat.setOrientation(PageFormat.PORTRAIT);
    Paper pPaper = pageFormat.getPaper();
     pPaper.setImageableArea(1.0, 1.0, pPaper.getWidth() , pPaper.getHeight() -2);
     pageFormat.setPaper(pPaper);

       if (pageIndex >0){return NO_SUCH_PAGE;} //Only one page

      String Bill [] = bill.split(";");

      int y = 0;
    for (int i = 0; i < Bill.length; i++) {

        g2d.drawString(Bill[i], 0, y);
        y = y + 15;
    }

    return PAGE_EXISTS;

   }


};  
  PrinterJob job = PrinterJob.getPrinterJob();
  job.setPrintable(contentToPrint);
    boolean dojob = job.printDialog();
  //You can show a print dialog before printing by job by wrapping the following blocks     with a conditional statement if(job.printDialog()){...}


try {
    job.print();
} catch (PrinterException e) {
    System.err.println(e.getMessage());
}

}

コードは正常に動作していますが、唯一の問題は、このコードを使用するたびにマージンを設定する必要があることです。事前設定された余白は、上から 20mm、左から 21mm、下から 18mm です。そのため、テキストは小さなページに収まりません。コードからカスタム マージンを設定するにはどうすればよいですか? または、毎回マージンを設定する必要がないように、デフォルトのプリンター設定を設定できますか?

4

1 に答える 1