gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 04:34:15 25 4
gpt4 key购买 nike

我必须在 80mm * 297 mm 的纸张上打印一页。我正在使用以下代码:

 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 print api 。

在工作中,我们的 Xerox MFD 会轻松地忽略打印命令或来自打印 API 的格式。对于打印到特定用户帐户的解决方案,我们必须保存并更改 pcl 文件中的某些字节,然后再将其传递到打印机。这不是一个很好的解决方案,但它似乎是唯一的方法......

关于java - 如何在java中设置页面的默认边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17555533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com