如何使文本适合单元格 itext 7
How to fit the text in a cell itext 7
仅供参考
How to get the content as above, by using Cell with itext 7 library
我使用了 cell.setPadding(0f);
,但它并没有帮助我获得预期的结果。
您似乎忘记设置要添加到 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
的乘数行距。请随意更改该值。
注:很烦人的是你不能在parent上设置level的值(例如table
,document
,...)。我创建了a feature request on JIRA,希望下一个版本能支持它。
虽然默认行距没有合适的setter,但有一种方法可以在实现IPropertyContainer 的文档/table/其他class 上进行设置。只需使用 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();
但是,强烈建议不要自行设置属性,除非您了解这会导致什么结果。
仅供参考
How to get the content as above, by using Cell with itext 7 library
我使用了 cell.setPadding(0f);
,但它并没有帮助我获得预期的结果。
您似乎忘记设置要添加到 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
的乘数行距。请随意更改该值。
注:很烦人的是你不能在parent上设置level的值(例如table
,document
,...)。我创建了a feature request on JIRA,希望下一个版本能支持它。
虽然默认行距没有合适的setter,但有一种方法可以在实现IPropertyContainer 的文档/table/其他class 上进行设置。只需使用 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();
但是,强烈建议不要自行设置属性,除非您了解这会导致什么结果。