在java中打印一个新行

时间:2015-01-26 14:27:23

标签: java

我有这个代码将文档发送到打印机进行打印。目前一切正常,其代码如下所示。

 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);

2 个答案:

答案 0 :(得分:3)

你正在使用Windows吗?试试这个:

+ "\r\n"

甚至更好,将其用于便携式解决方案:

System.lineSeparator()

如果上面没有帮助,这意味着打印机需要HTML换行符,那么你应该试试这个:

+ "<br/>"

答案 1 :(得分:0)

这可能是因为: 在Windows中,新行是“\ r \ n”,而在Linux中,“\ n”就足够了。

因此,如果您在Linux中运行Prog,它可以正常工作。

如果您编写“\ r \ n”,您的Prog将在Windows上运行,但如果在Linux上运行则会有一个额外的空行。这是一个常见的Linux / Windows问题。