2013-07-09 142 views
1

設置默認邊距爲我的網頁我有一個80毫米*297毫米紙打印頁面。我使用下面的代碼:我怎樣才能在Java

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。 所以文本不適合小頁面。 如何從我的代碼設置自定義邊距?或者我可以設置默認的打印機設置,以便我不需要每次都設置頁邊距?

回答

0

我看不到任何具體的錯誤在你的代碼,但值得一看setImageableWidth和setImageableHeight在java.awt.print.PageFormat中的類。

如果你曾經嘗試這樣做(我假設你有),並發現它沒有工作,那麼不要以爲你會生氣它只是似乎沒有接受Java打印,我已經找到了具體的打印機API。

在工作中我們施樂的MFD輕率地忽略從打印API打印命令或格式化。對於打印到特定用戶帳戶的解決方案,我們必須在將pcl文件傳遞給打印機之前保存並更改pcl文件中的某些字節。沒有一個很好的解決方案,但它似乎是唯一的出路......