简体   繁体   English

在itext7中再表OccupiedAreaBBox

[英]Table more then OccupiedAreaBBox in itext7

i create table as here: Draw custom borders for table with more flexibility in itext7 . 我按如下方式创建表格: 在itext7中为表格绘制自定义边框,具有更大的灵活性

Everythink works, but if i do it: 一切都可以,但是如果我这样做:

    PdfDocument pdfDoc = new PdfDocument(new 
    PdfWriter("_testPd/dashed_underline.pdf"));
    Document doc = new Document(pdfDoc, PageSize.A5);

    Table table = new Table(new float[]{40, 40,40,40,40});

    table.addCell("Pelle habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus");
    table.addCell("Pell morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus");
    table.addCell("Pel habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus");
    table.addCell("Pel habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus");
    table.addCell("Pel habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus");




    table.addCell("test");
table.setNextRenderer(new CustomTableRenderer(table));

    doc.add(table);

    doc.close();

WARN com.itextpdf.layout.renderer.TableWidths - Table width is more than expected due to min width of cell(s). WARN com.itextpdf.layout.renderer.TableWidths-由于单元格的最小宽度,表的宽度超出了预期。 在此处输入图片说明

if do it: 如果这样做:

Table table = new Table(new float[]{40, 40,40,40,40},true);

i get: 我得到:

在此处输入图片说明

By default iText works as browsers and uses auto-layout algorithm to process tables. 默认情况下,iText用作浏览器,并使用自动布局算法来处理表。 That implies that the width of the column will be not less than its min-width. 这意味着列的宽度将不小于其最小宽度。

If you want your columns to be exactly of the width provided as an argument, no matter whether it's enough to place the content without introducing any breaks or not, enable fixed-layout algorithm: 如果您希望列的宽度恰好是作为参数提供的宽度,则无论放置内容而不引起任何中断都足够,请启用固定布局算法:

    table.useAllAvailableWidth();
    table.setFixedLayout();

That's important to understand that a table to be processed with fixed-layout algo should have a set width: that's why I've set a 100% width value in the first line of the snippet above. 了解要使用固定布局算法处理的表应该具有设置的宽度很重要:这就是为什么我在上面代码段的第一行中设置了100%的宽度值的原因。

The resultant pdf looks as follows: 生成的pdf如下所示: 在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM