更新:ITextSharp 5.5.2支持此功能,但以前版本的ITextSharp不支持。
ITextSharp 5.5.1是否支持Class Element CSS选择器?如
<style>
.test td {
border: 1px solid green;
}
</style>
我得到了这样的结果
什么时候应该是
如果不是我将如何实现相同的结果?
使用以下代码,我得不到所需的结果。
byte[] bytes;
Document document = new Document();
using (var memoryStream = new MemoryStream())
using (var pdfWriter = PdfWriter.GetInstance(document, memoryStream))
{
document.Open();
XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, document, new StringReader(html));
document.Close();
bytes = memoryStream.ToArray();
}
return bytes;
这是我的完整HTML供参考
<html>
<head>
<style>
.test td {
border: 1px solid green;
}
</style>
</head>
<body>
<table class='test'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Savings</th>
</tr>
<tr>
<td>Peter</td>
<td>Griffin</td>
<td>$100</td>
</tr>
<tr>
<td>Lois</td>
<td>Griffin</td>
<td>$150</td>
</tr>
<tr>
<td>Joe</td>
<td>Swanson</td>
<td>$300</td>
</tr>
<tr>
<td>Cleveland</td>
<td>Brown</td>
<td>$250</td>
</tr>
</table>
</body>
</html>
答案 0 :(得分:1)
这是一个奇怪的问题,因为XML Worker的默认实现完全符合您的需要。我们有一个转换为table_css.html的HTML文件html_table_3.pdf,我们只使用基本的XML Worker代码:ParseHtmlTable3
您只需要5行即可获得屏幕截图中显示的结果:
public void createPdf(String file) throws IOException, DocumentException {
// step 1
Document document = new Document();
// step 2
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
// step 3
document.open();
// step 4
XMLWorkerHelper.getInstance().parseXHtml(writer, document,
new FileInputStream(HTML));
// step 5
document.close();
}