Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中设置页面的默认页边距_Java_Printing - Fatal编程技术网

如何在java中设置页面的默认页边距

如何在java中设置页面的默认页边距,java,printing,Java,Printing,我必须用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 {

我必须用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());
}

}
公共静态无效打印卡(最终字符串账单){
可打印内容toprint=新的可打印内容(){
@凌驾
公共整型打印(图形图形、页面格式、页面格式、整型页面索引)引发PrinterException{
Graphics2D g2d=(Graphics2D)图形;
translate(pageFormat.getImageableX(),pageFormat.getImageableY());
pageFormat.setOrientation(pageFormat.PORTRAIT);
Paper pPaper=pageFormat.getPaper();
pPaper.setImageableArea(1.0,1.0,pPaper.getWidth(),pPaper.getHeight()-2);
页面格式。设定纸(pPaper);
如果(pageIndex>0){不返回这样的页面;}//只返回一个页面
字符串Bill[]=Bill.split(“;”);
int y=0;
for(int i=0;i
代码运行良好,但唯一的问题是每次使用此代码都必须设置边距。预设边距顶部为20毫米,左侧为21毫米,底部为18毫米。 因此文本不适合放在小页面上。
如何从代码中设置自定义页边距?或者我可以设置默认的打印机设置,这样就不需要每次都设置页边距了吗?

我看不出代码中有什么特别的错误,但是值得一看java.awt.print.PageFormat类中的setImageableWidth和setImageableHeight

如果您尝试过这个方法(我想您已经尝试过了),并且发现它不起作用,那么不要以为您会发疯,我已经找到了一些似乎不接受java打印api的特定打印机

在工作中,我们的Xerox MFD轻松地忽略了打印api中的打印命令或格式设置。对于打印到特定用户帐户的解决方案,在将pcl文件传递到打印机之前,我们必须先保存并更改pcl文件中的某些字节。这不是一个好的解决方案,但似乎是唯一的办法