Java 将字符串发送到打印机时保持字符串格式

Java 将字符串发送到打印机时保持字符串格式,java,Java,我是这个论坛的新手。有人知道如何在发送到microsoft xps打印机之类的打印机时保持字符串格式吗?我的代码如下: String uniPQtyToPFormat = "%1$-20s%5s%25s\r\n"; String unitPrice="1000.00x"; String numberOfUnits="1.00"; String totalPrice="10000000.00"; String formattedUniPQtyToP=String.format(uniPQtyToP

我是这个论坛的新手。有人知道如何在发送到microsoft xps打印机之类的打印机时保持字符串格式吗?我的代码如下:

String uniPQtyToPFormat = "%1$-20s%5s%25s\r\n";
String unitPrice="1000.00x";
String numberOfUnits="1.00";
String totalPrice="10000000.00";
String formattedUniPQtyToP=String.format(uniPQtyToPFormat,unitPrice,StringUtils.center(numberOfUnits,10),totalPrice);
当我在文本文件中打印formattedUniPQtyToP行时,格式会像我预期的那样得到很好的保留。这在文本文件中显示为:

1000.00x                   1000.00x                      10000000.00
但是,当我打印formattedUniPQtyToP时,总价将转到下一行,而不是停留在与单价和单位数相同的行上,如下图所示:

1000.00x                   1000.00x              
10000000.00
要将字符串打印到xps打印机,我使用以下代码:

while (measurer.getPosition() < charIterator.getEndIndex()) {
    int next=measurer.nextOffset(wrappingWidth);
    int limit=next;
    if(limit<=text.length()){
        for(int i=measurer.getPosition();i<next;i++){
            char c=text.charAt(i);
            if(c=='\n'){//to break text into line in case there are many lines
                limit=i+1;
                break;
            }
        }
    }
    TextLayout layout = measurer.nextLayout(wrappingWidth,limit,false);
    pen.y += layout.getAscent();
    float dx = layout.isLeftToRight() ? 0 : (wrappingWidth - layout.getAdvance());
    layout.draw(graphics2d, pen.x + dx, pen.y);
    pen.y += layout.getDescent() + layout.getLeading();
}
while(measurer.getPosition()如果(Limit)你确定最后一个长字符串加上前面的空格实际上可以放在一行上吗?不熟悉打印命令,但你的代码似乎在测量下一个“单词”以确保它放在页面上。添加跟踪代码,这样你就知道为什么它认为应该有一行。Xaver Kapeller,当我增加文档,并试图打印许多行,文本是不正当的,因为我得到它在一个文本文件。