请看一下示例ParseHtmlTable1和ParseHtmlTable2。
他们创建以下PDF:html_table_1.pdf
和html_table_2.pdf 。
该表是这样创建的:
StringBuilder sb = new StringBuilder();sb.append("<table border="2">");sb.append("<tr>");sb.append("<th>Sr. No.</th>");sb.append("<th>Text Data</th>");sb.append("<th>Number Data</th>");sb.append("</tr>");for (int i = 0; i < 10; ) { i++; sb.append("<tr>"); sb.append("<td>"); sb.append(i); sb.append("</td>"); sb.append("<td>This is text data "); sb.append(i); sb.append("</td>"); sb.append("<td>"); sb.append(i); sb.append("</td>"); sb.append("</tr>");}sb.append("</table>");我自由地定义了CSS,如下所示:
tr { text-align: center; }th { background-color: lightgreen; padding: 3px; }td {background-color: lightblue; padding: 3px; }在另一个答案中,已经提到您的设计存在缺陷。您
应该学习如何创建一个体面的体系结构。分隔数据(例如
表格)和样式(例如颜色)是您可以改进的一个示例。
现在,我们像这样解析CSS和HTML:
CSSResolver cssResolver = new StyleAttrCSSResolver();CssFile cssFile = XMLWorkerHelper.getCSS(new ByteArrayInputStream(CSS.getBytes()));cssResolver.addCss(cssFile);// HTMLHtmlPipelineContext htmlContext = new HtmlPipelineContext(null);htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());// PipelinesElementList elements = new ElementList();ElementHandlerPipeline pdf = new ElementHandlerPipeline(elements, null);HtmlPipeline html = new HtmlPipeline(htmlContext, pdf);CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);// XML WorkerXMLWorker worker = new XMLWorker(css, true);XMLParser p = new XMLParser(worker);p.parse(new ByteArrayInputStream(sb.toString().getBytes()));
现在elements列表包含一个元素:您的表:
return (PdfPTable)elements.get(0);
您可以将此表添加到PDF文档中



