You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 03:47:37