如何使文本适合单元格 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的值(例如tabledocument ,...)。我创建了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();

但是,强烈建议不要自行设置属性,除非您了解这会导致什么结果。