itext html转pdf table示例

 public void print() throws IOException, DocumentException {
        // freemark模板填充解析
        String htmlData = parseTemplate();
        // 设置文档格式,数字边距 A4横向
        Document document = new Document(new RectangleReadOnly(842F, 595F));

        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(DEST));

        // 添加页码
       PDFBuilder builder = new PDFBuilder();
       writer.setPageEvent(builder);

        // 打开文档
        document.open();
        XMLWorkerHelper.getInstance().parseXHtml(writer, document, new ByteArrayInputStream(htmlData.getBytes()), Charset.forName("UTF-8"), new MyFontsProvider());

        // 关闭文档
        document.close();
    }
table.ftl模板  样式由html控制

<div style="text-align: center;font-size: 50px;font-weight: bold">排班设置</div>
<table style="repeat-header:yes;repeat-footer:yes;width: 100%" border="1" cellspacing="0"
       cellpadding="0">
    <thead style=" background: #d6f2f1;">
    <tr style="font-size: 12px;height: 50px; line-height: 50px; color: #0a8783;  text-align: center;">
        <td style="width:100px;  ">组名</td>
        <td style="width:120px; ">工号</td>
        <td style="width:100px;">姓名</td>
        <td style="width:100px;">工时</td>
        <td style="width:100px; ">欠休</td>
        <td style="width:200px;font-size: 10px;">星期一(5-13)</td>
        <td style="width:200px;font-size: 10px;">星期一(5-13)</td>
        <td style="width:200px;font-size: 10px;">星期一(5-13)</td>
        <td style="width:200px;font-size: 10px;">星期一(5-13)</td>
        <td style="width:200px;font-size: 10px;">星期一(5-13)</td>
        <td style="width:200px;font-size: 10px;">星期一(5-13)</td>
        <td style="width:200px;font-size: 10px;">星期日(5-13)</td>
    </tr>
    </thead>
    <tbody>
    <#list lists as item>
    <tr style="width: 100%;font-size: 12px; height: 40px; line-height: 40px; color: #333;    text-align: center;">
        <td>${item.groupName}</td>
        <td>${item.workerNo}</td>
        <td>
        ${item.name}
        </td>
        <td>${item.workerTime}</td>
        <td>${item.oweToTake}</td>

        <td>${item.groupName}</td>
        <td>${item.groupName}</td>
        <td>${item.groupName}</td>
        <td>${item.groupName}</td>
        <td>${item.groupName}</td>
        <td>${item.groupName}</td>
        <td>${item.groupName}</td>
    </tr>
    </#list>
    </tbody>
</table>

   pdf效果:

转载实现来自:https://www.cnblogs.com/huangheng01/p/10338946.html

iTextPDF是一个流行的用于Java平台的库,它允许开发者将HTML内容换成PDF文档。通过iTextPDFHTMLPDF功能,你可以创建专业的PDF文件,包括文本、图像、表格等元素,这些元素来源于HTML源码。 使用iTextPDF进行HTMLPDF换通常涉及以下几个步骤: 1. 引入依赖:首先需要在你的项目中添加iTextPDF的jar包,例如Maven可以这样配置: ```xml <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.13</version> </dependency> ``` 2. 创建PDF文档:使用`Document`类初始化一个新的PDF文档。 3. 设置字体和样式:因为HTML有自己的CSS,你需要将它们应用到PDF上,这可能需要一些CSS解析。 4. 解析HTML:使用`WebConverter`或`WebColors`类将HTML字符串加载进来,并设置相应的样式和布局。 5. 将HTML内容添加到PDF:遍历HTML元素,根据元素类型(如`<p>`、`<table>`等)添加到对应的PDF组件,如`Paragraph`、`Table`等。 6. 关闭文档并保存:完成后记得关闭`Document`,然后使用`PdfWriter.getInstance(outputStream, document)`将内容写入指定的输出流。 示例代码片段: ```java try { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("output.pdf")); document.open(); // 使用WebConverter将HTML字符串换为ElementList ElementList elements = WebConverter.convertToElementList(html); for (Element element : elements) { if (element instanceof Paragraph) { ((Paragraph) element).createFont(document); document.add(element); } else if (element instanceof Table) { ((Table) element).exportAsTable(document, Element.ALIGN_LEFT); } } document.close(); } catch (Exception e) { e.printStackTrace(); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值