答案 0 :(得分:1)
您似乎忘了设置要添加到Cell
的内容的前导。我试图模仿你分享的屏幕截图:
这是我过去常用的代码:
public void createPdf(String dest) throws IOException {
// step 1
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(dest));
pdfDocument.setDefaultPageSize(PageSize.A4.rotate());
// step 2
Document document = new Document(pdfDocument);
// step 3
Table table = new Table(new float[]{ 50 , 50 });
table.setWidthPercent(30);
table.addCell(new Cell().setPadding(0).setTextAlignment(TextAlignment.CENTER)
.add(new Paragraph("4.0").setMultipliedLeading(1.2f).setItalic()));
table.addCell(new Cell().setPadding(0).setTextAlignment(TextAlignment.CENTER)
.add(new Paragraph("0.14").setMultipliedLeading(1.2f).setItalic()));
document.add(table);
// step 4
document.close();
}
在这种情况下,我使用了1.2f
的乘法前导。随意改变这个价值。
注意:非常烦人的是,您无法在父级上设置级别的值(例如table
,document
,...) 。我创建了a feature request on JIRA,希望在下一个版本中支持此功能。
答案 1 :(得分:0)
虽然没有适当的默认前导设置器,但有一种方法可以在实现IPropertyContainer的document / table / other类上设置它。只需使用setProperty方法。由于继承了LEADING和ITALIC_SIMULATION属性,容器及其所有子项将具有此属性(除非它被覆盖)。
我重写了Bruno的代码,下一个代码段会执行您想要的结果。
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFileName));
pdfDocument.setDefaultPageSize(PageSize.A4.rotate());
Document document = new Document(pdfDocument);
Table table = new Table(new float[]{ 50 , 50 });
table.setWidthPercent(30);
document.setProperty(Property.LEADING, new Leading(Leading.MULTIPLIED, 1.2f));
document.setProperty(Property.ITALIC_SIMULATION, true);
table.addCell(new Cell().setPadding(0).setTextAlignment(TextAlignment.CENTER)
.add("4.0"));
table.addCell(new Cell().setPadding(0).setTextAlignment(TextAlignment.CENTER)
.add("0.14"));
document.add(table);
document.close();
然而,强烈建议不要自己设置属性,除非您了解它会导致什么结果。