微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 iText JAVA 中给出列宽的固定百分比值

如何解决如何在 iText JAVA 中给出列宽的固定百分比值

在这里,我使用 iText 7 来处理几代 pdf。我已使用 100% 设置表格宽度 table.setWidthPercent(100) 并且我想要固定的列宽,以百分比表示。

我设置列宽如下

 float columnWidth[] = {33,34,33};
 Table table = new Table(columnWidth);

但是当我们执行时它不是百分比,它会给出具有此相对宽度的 3 列,但是当我们为最后一个单元格提供左边距时,这一列会中断。

每个单元格的左边距、右边距都影响列宽我想要以百分比为单位的固定列大小

这是我的全部代码输出图像。

        String pdfPath = "first.pdf";
        PdfWriter pdfWriter = new PdfWriter(pdfPath);
        PdfDocument pdfDocument = new PdfDocument(pdfWriter);
        Document document = new Document(pdfDocument);
        pdfDocument.setDefaultPageSize(PageSize.A4);
        document.setMargins(20,20,20);

        float columnWidth[] = {33,33};
        Table table = new Table(columnWidth);
        table.setWidthPercent(100);
        table.addCell(new Cell().add("First").setFontSize(7).setMargins(0,0));
        table.addCell(new Cell().add("Second").setFontSize(7).setMargins(0,0));
        table.addCell(new Cell().add("Third").setFontSize(7).setMargins(0,50));
        document.add(table);
        document.close();
        System.out.println("pdf created");

这是上面代码输出

This one is output of above code

即使应用左边距也需要固定的列大小。它应该只影响文本而不是列这里列大小正在改变

想要这种行为:

Want this type of behaviour

解决方法

而不是直接给出浮点值

  float columnWidth[] = {33,34,33};
  Table table = new Table(columnWidth);

UnitValue 解决了我的疑问

 Table table = new Table(UnitValue.createPercentArray(columnWidth));

现在列宽是固定的。单元格边距不会影响列宽。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?