[英]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.