栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在同一页面上将表添加到现有PDF-ITEXT

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在同一页面上将表添加到现有PDF-ITEXT

请看一下AddExtraTable示例。它是为回答“
如何继续第二页上的字段输出
”问题而编写的AddExtraPage示例的简化形式。

该问题几乎与您的问题完全相同,唯一的不同是您的要求更容易实现。

我简化了这样的代码:

public void manipulatePdf(String src, String dest) throws documentException, IOException {    PdfReader reader = new PdfReader(src);    Rectangle pagesize = reader.getPageSize(1);    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));    AcroFields form = stamper.getAcroFields();    form.setField("Name", "Jennifer");    form.setField("Company", "iText's next customer");    form.setField("Country", "No Man's Land");    PdfPTable table = new PdfPTable(2);    table.addCell("#");    table.addCell("description");    table.setHeaderRows(1);    table.setWidths(new int[]{ 1, 15 });    for (int i = 1; i <= 150; i++) {        table.addCell(String.valueOf(i));        table.addCell("test " + i);    }    ColumnText column = new ColumnText(stamper.getOverContent(1));    Rectangle rectPage1 = new Rectangle(36, 36, 559, 540);    column.setSimpleColumn(rectPage1);    column.addElement(table);    int pagecount = 1;    Rectangle rectPage2 = new Rectangle(36, 36, 559, 806);    int status = column.go();    while (ColumnText.hasMoreText(status)) {        status = triggerNewPage(stamper, pagesize, column, rectPage2, ++pagecount);    }    stamper.setFormFlattening(true);    stamper.close();    reader.close();}public int triggerNewPage(PdfStamper stamper, Rectangle pagesize, ColumnText column, Rectangle rect, int pagecount) throws documentException {    stamper.insertPage(pagecount, pagesize);    PdfContentByte canvas = stamper.getOverContent(pagecount);    column.setCanvas(canvas);    column.setSimpleColumn(rect);    return column.go();}

如您所见,主要区别在于:

  1. 我们
    rectPage1
    为第一页和第二页以及
    rectPage2
    随后的所有页面创建一个。那是因为我们不需要第一页上的整页。
  2. 我们不需要加载
    PdfimportedPage
    ,而是只添加与首页大小相同的空白页。

可能的改进:我对

Rectangle
实例进行了硬编码。不用说,这
rect1Page
取决于原始表单的位置。我也进行了硬编码
rect2Page
。如果我有更多时间,我将
rect2Page
根据该
pagesize
值进行计算。

请参阅官方常见问题解答的以下问题和答案:

  • 如何在表格上添加表格(并可能插入新页面)?
  • 如何在第二页上继续字段输出?


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/452766.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号