使用iText 7时如何保留文本行末尾的全角空格?
解决iText 7保留行尾全角空格的问题
iText 7默认会清除行尾空格,包括全角空格(Unicode U+3000),要保留这类空格,可通过以下方式实现:
针对文本片段或段落设置空格保留策略
使用WhiteSpaceProcessingMode.PRESERVE属性,强制iText保留所有空格字符,包括行尾的全角空格。示例代码(Java):// 针对单个Text对象设置 Text textWithFullWidthSpace = new Text("示例文本 ") // 末尾为全角空格 .setWhiteSpaceProcessingMode(WhiteSpaceProcessingMode.PRESERVE); Paragraph para = new Paragraph(textWithFullWidthSpace); document.add(para); // 直接对Paragraph设置 Paragraph paraWithSpace = new Paragraph("另一行示例文本 ") .setWhiteSpaceProcessingMode(WhiteSpaceProcessingMode.PRESERVE); document.add(paraWithSpace);自定义场景下用底层API绘制文本
如果通过PdfCanvas直接绘制文本,确保传入的字符串包含全角空格且不做额外截断处理即可。示例代码:PdfCanvas canvas = new PdfCanvas(document.getLastPage()); canvas.beginText() .setFontAndSize(PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H"), 12) .moveText(50, 700) .showText("自定义绘制的文本 ") // 末尾全角空格会被保留 .endText();
全角空格是独立的Unicode字符,只要关闭iText的空格清理逻辑,就能正常保留在PDF输出中。
内容的提问来源于stack exchange,提问作者superfans
相关产品推荐
相关产品推荐

