如何强制 Itext 7 PDF 不修剪空格?

问题描述 投票:0回答:1

我想创建一个具有这种布局的 PDF:

1.  Name  : John Doe
    Class : I-A
    Grade : 100
    Status: PASS

我使用此代码生成 PDF:

    public void generateDoc(List<String> toPrint) throws IOException {
        PdfWriter writer = new PdfWriter(path);
        PdfDocument pdf = new PdfDocument(writer);
        pdf.setDefaultPageSize(PageSize.A4);
        Document document = new Document(pdf);
        document.setFontSize(10.0F);
        document.setFont(PdfFontFactory.createFont(StandardFonts.COURIER));
        document.setMargins(10F, 0F, 10F, 0F);
        for(String s : toPrint) {
            if(s.equals("EOF")) document.add(new AreaBreak(AreaBreakType.NEXT_PAGE));
            else document.add(new Paragraph(s));
        }
        document.close();
    }

toPrint
列表包含针对所需输出的格式化字符串,因为我使用
Courier
字体,该字体具有monospace功能:

[
 "1.  Name  : John Doe",
 "    Class : I-A",
 "    Grade : 100",
 "    Status: PASS"
]

那么结果PDF文件就是这样的:

1.  Name  : John Doe
Class : I-A
Grade : 100
Status: PASS

当我格式化字符串列表时,是否有办法使这项工作正常进行?

itext itext7
1个回答
0
投票

在格式化字符串中不要使用常规空格

 
,而是使用不间断空格字符 (
\u00a0
)。

或者,替换空格也可以:

document.add(new Paragraph(s.replaceAll(" ", "\u00a0")));
© www.soinside.com 2019 - 2024. All rights reserved.