我有这个代码将文档发送到打印机进行打印。目前一切正常,其代码如下所示。
public int print(Graphics g, PageFormat pf, int page) throws
PrinterException {
if (page > 0) {
return NO_SUCH_PAGE;
}
Graphics2D g2d = (Graphics2D)g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
g.drawString(content, 100, 100);
return PAGE_EXISTS;
}
public void printDocument(String doc) {
content = doc;
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintable(this);
boolean ok = job.printDialog();
if (ok) {
try {
job.print();
} catch (PrinterException ex) {
/* The job did not successfully complete */
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}
}
现在的问题是,当我尝试打印具有新行的文档时,它仍然将其打印为一行。调用该函数的代码如下所示。
String message ="Library user name: \t" + user +"\n"
+"Item Loaned: \t" + book +"\n"
+"Date Loaned: \t" + dateLoaned +"\n"
+"Return Date: \t" + returnDate +"\n";
print.printDocument(message);
答案 0 :(得分:3)
+ "\r\n"
甚至更好,将其用于便携式解决方案:
System.lineSeparator()
如果上面没有帮助,这意味着打印机需要HTML换行符,那么你应该试试这个:
+ "<br/>"
答案 1 :(得分:0)
这可能是因为: 在Windows中,新行是“\ r \ n”,而在Linux中,“\ n”就足够了。
因此,如果您在Linux中运行Prog,它可以正常工作。
如果您编写“\ r \ n”,您的Prog将在Windows上运行,但如果在Linux上运行则会有一个额外的空行。这是一个常见的Linux / Windows问题。