如何在单元格itext 7中拟合文本

时间:2017-06-26 07:39:20

标签: pdf itext pdf-generation itext7

FYI

enter image description here

  

如何使用带有itext 7库的Cell

获取上述内容

我使用cell.setPadding(0f);,但它没有帮助我按预期得到结果。

2 个答案:

答案 0 :(得分:1)

您似乎忘了设置要添加到Cell的内容的前导。我试图模仿你分享的屏幕截图:

enter image description here

这是我过去常用的代码:

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的乘法前导。随意改变这个价值。

注意:非常烦人的是,您无法在父级上设置级别的值(例如tabledocument,...) 。我创建了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();

然而,强烈建议不要自己设置属性,除非您了解它会导致什么结果。