簡體   English   中英

如何在Java中為頁面設置默認邊距

[英]How can I set default margins for my page in java

我必須在80mm * 297mm的紙上打印頁面。 我正在使用以下代碼:

 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());
}

}

該代碼運行良好,但是唯一的問題是,每次使用此代碼都必須設置邊距。 預設邊距是距頂部20毫米,距左側21毫米和距底部18毫米。 因此,文本不適合在小頁面上顯示。 如何從代碼中設置自定義邊距? 還是可以設置默認打印機設置,這樣就不必每次都設置邊距了?

我看不到代碼中有什么特別錯誤的地方,但是值得一看java.awt.print.PageFormat類中的setImageableWidth和setImageableHeight。

如果您嘗試過此操作(我認為您已經嘗試過),但發現它不起作用,那么就不要假設您會生氣,我發現特定的打印機似乎根本不接受Java打印api。

在工作中,我們的Xerox MFD巧妙地忽略了打印命令或來自打印API的格式。 對於打印到特定用戶帳戶的解決方案,我們必須先保存然后更改pcl文件中的某些字節,然后再將其傳遞給打印機。 這不是一個很好的解決方案,但這似乎是唯一的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM