我已将一个以空格开头的 Text 对象添加到 Paragraph 对象中,
但是iText7(7.0.4)中删除了段落的空白。
看起来像左装饰。这是段落的规范吗?
有什么办法可以保留文本前的空格吗?
Paragraph p = new Paragraph().add(new Text(" abc")); // Only "abc" appears in pdf
iText 将修剪空格。
但它不会删除不间断空格。
File outputFile = new File(System.getProperty("user.home"), "output.pdf");
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outputFile));
Document layoutDocument = new Document(pdfDocument);
layoutDocument.add(new Paragraph("\u00A0\u00A0\u00A0Lorem Ipsum"));
layoutDocument.add(new Paragraph("Lorem Ipsum"));
layoutDocument.close();
按照步骤:
我根据 anirban banerjee 的回答找到了解决方案。我做了以下课程:
import com.itextpdf.layout.element.Text;
import com.itextpdf.layout.renderer.*;
public class CodeRenderer extends TextRenderer {
public CodeRenderer(Text textElement) {
super(textElement);
}
@Override
public IRenderer getNextRenderer() {
return new CodeRenderer((Text) getModelElement());
}
@Override
public void trimFirst() {}
}
然后我这样使用它:
Text text = new Text(string);
text.setNextRenderer(new CodeRenderer(text));
document.add(new Paragraph(text));
结果是保留所有空格。
对我有用的是在空格后添加一个“幽灵”字符(白色字体)。像这样:
p = new Paragraph("Text: ").setFontSize(10);
p.add(new Text("some text ").setUnderline());
p.add(new Text(".").setFontColor(whiteColor));
document.add(p);