我在Jhipster中使用AngularJS。
我需要导出页面html的一部分的PDF。
我的html部分看起来像这样:
<ul>
<div ng-repeat="prop in vm.properties">
<li>
<span translate="test.ccxx"></span>
<div>
<table ng-repeat="tab in vm.tables">
<tr>
<th>
<span>{{tab.name}}</span>
</th>
</tr>
<tr ng-repeat="flow in vm.flows">
<td>
<span>{{flow.title}}</span>
<ul>
<li ng-repeat="us in vm.res[flow.id].us">
<span>
<img src="../content/flag_{{us.flag}}" />
</span>
</li>
</ul>
</td>
</tr>
</table>
</div>
</li>
</div>
</ul>
在我看来,它显示得很好。 但是现在我只需要在itext页面的主体中导出这部分。
String jrxmlPath = "C:\\Users\\XXXXX\\Downloads\\testPDF.pdf";
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY/MM/DD");
String dateStr = dateFormat.format(date);
Document document = new Document(PageSize.A4.rotate(), 0, 0, 0, 0);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(jrxmlPath));
// SET COVER -- add a header and a foooter to all pages
document.open();
setCover(writer, document, event);
StringBuilder htmlString = new StringBuilder();
htmlString.append(myhtml);
InputStream is = new ByteArrayInputStream(htmlString.toString().getBytes());
XMLWorkerHelper worker = XMLWorkerHelper.getInstance();
ElementHandlerClass ehc = new ElementHandlerClass();
worker.parseXHtml(ehc, new StringReader(htmlString.toString()));
ColumnText ct = new ColumnText(writer.getDirectContent());
ct.setSimpleColumn(5, 65, 830, 500);
for(Element element : ehc.elements) {
ct.addElement(element);
}
int status = ct.go();
while(ColumnText.hasMoreText(status)) {
document.newPage();
ct.setSimpleColumn(5, 65, 930, 500);
status = ct.go();
}
document.close();
System.out.println("PDF Created");
此Java部分将为所有页面创建一个带有页眉和页脚的pdf文件。 它在列文本中添加了我的html。
我的问题与分页符中放置的表有关。我需要将整个表显示为一张,而不是像今天这样剪裁。
我正在尝试使用分页符...但是目前没有成功。
有人有主意吗?
另一个问题是图像不在我的pdf中。
谢谢