Table 的内容 java 飞碟?
Table of content java flying saucer?
我使用飞碟创建了一份审计报告,将 HTML 转换为 pdf。而我想在第一页创建一个table的内容来知道titleProduct
属于哪个页面?我该怎么做?
<div th:each="productGroup: ${productGroups}">
<table class="audit-table">
<thead>
<tr class="pg-node pg-title">
<td class="titleProduct" colspan="3">[[${productGroup.getPgNumber()}]] - [[${productGroup.getPgName()}]]</td>
</tr>
<tr class="pg-node row">
<th>BRAND</th>
<th>MODEL</th>
<th>FEATURE TEXT</th>
<th>ARTICLE</th>
</tr>
</thead>
<tbody>
<th:block th:each="audit: ${productGroup.getPdfAuditColumns()}">
<tr>
<td th:text="${audit.getBrand()}"></td>
<td th:text="${audit.getModel()}"></td>
<td th:text="${audit.getFeatureText()}"></td>
<td th:text="${audit.getArticle()}"></td>
</tr>
</th:block>
</tbody>
</table>
</div
您可以采用将 HTML 代码转换为字符串的方法。然后在 HtmlConverter class 中使用 iText 库的 convertToPdf() 方法,您将能够生成所需的 pdf。
FYR 示例代码:
String HTML = "<h1>Hello</h1>"
+ "<p>This was created using iText</p>"
+ "<a href='google.com'>google.com</a>";
public static void generatePdfFromHTML( String HTML ) throws FileNotFoundException, IOException {
HtmlConverter.convertToPdf(HTML, new FileOutputStream("your-filename.pdf"));
System.out.println( "PDF Created!" );
}
您需要在 pom.xml 中添加库的依赖项。
FYR 代码:
<dependencies>
<!-- iText Core -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.1.9</version>
<type>pom</type>
</dependency>
<!-- iText pdfHTML add-on -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>html2pdf</artifactId>
<version>2.1.6</version>
</dependency>
</dependencies>
你可以通过这个article on Medium
阅读更多关于这个库的信息
您可以使用 CSS cross references 创建 table 内容。这个是flying-saucer支持的
这是一个工作示例:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style>
div.newbr {page-break-before: always}
#table-of-content a::after {content: " on page " target-counter(attr(href), page);}
</style>
</head>
<body>
<div id="table-of-content">
<a href="#product1">Product 1</a><br/>
<a href="#product2">Product 2</a><br/>
<a href="#product3">Product 3</a><br/>
</div>
<div id="product1" class="newbr"><h1>Product 1</h1></div> <!-- product 1 on page 2 -->
<div id="product2"><h1>Product 2</h1></div> <!-- product 2 also on page 2 -->
<div id="product3" class="newbr"><h1>Product 3</h1></div> <!-- product 3 on page 3 -->
</body>
</html>
我使用飞碟创建了一份审计报告,将 HTML 转换为 pdf。而我想在第一页创建一个table的内容来知道titleProduct
属于哪个页面?我该怎么做?
<div th:each="productGroup: ${productGroups}">
<table class="audit-table">
<thead>
<tr class="pg-node pg-title">
<td class="titleProduct" colspan="3">[[${productGroup.getPgNumber()}]] - [[${productGroup.getPgName()}]]</td>
</tr>
<tr class="pg-node row">
<th>BRAND</th>
<th>MODEL</th>
<th>FEATURE TEXT</th>
<th>ARTICLE</th>
</tr>
</thead>
<tbody>
<th:block th:each="audit: ${productGroup.getPdfAuditColumns()}">
<tr>
<td th:text="${audit.getBrand()}"></td>
<td th:text="${audit.getModel()}"></td>
<td th:text="${audit.getFeatureText()}"></td>
<td th:text="${audit.getArticle()}"></td>
</tr>
</th:block>
</tbody>
</table>
</div
您可以采用将 HTML 代码转换为字符串的方法。然后在 HtmlConverter class 中使用 iText 库的 convertToPdf() 方法,您将能够生成所需的 pdf。
FYR 示例代码:
String HTML = "<h1>Hello</h1>"
+ "<p>This was created using iText</p>"
+ "<a href='google.com'>google.com</a>";
public static void generatePdfFromHTML( String HTML ) throws FileNotFoundException, IOException {
HtmlConverter.convertToPdf(HTML, new FileOutputStream("your-filename.pdf"));
System.out.println( "PDF Created!" );
}
您需要在 pom.xml 中添加库的依赖项。
FYR 代码:
<dependencies>
<!-- iText Core -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.1.9</version>
<type>pom</type>
</dependency>
<!-- iText pdfHTML add-on -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>html2pdf</artifactId>
<version>2.1.6</version>
</dependency>
</dependencies>
你可以通过这个article on Medium
阅读更多关于这个库的信息您可以使用 CSS cross references 创建 table 内容。这个是flying-saucer支持的
这是一个工作示例:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style>
div.newbr {page-break-before: always}
#table-of-content a::after {content: " on page " target-counter(attr(href), page);}
</style>
</head>
<body>
<div id="table-of-content">
<a href="#product1">Product 1</a><br/>
<a href="#product2">Product 2</a><br/>
<a href="#product3">Product 3</a><br/>
</div>
<div id="product1" class="newbr"><h1>Product 1</h1></div> <!-- product 1 on page 2 -->
<div id="product2"><h1>Product 2</h1></div> <!-- product 2 also on page 2 -->
<div id="product3" class="newbr"><h1>Product 3</h1></div> <!-- product 3 on page 3 -->
</body>
</html>