2013-07-09 145 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文件中的某些字节。没有一个很好的解决方案,但它似乎是唯一的出路......