我已经能够按照这里的例子,如果他们在一张桌子之外,就可以显示中文字符,但是他们不会在表格的单元格内显示。
这是示例html代码 -
@{
<head>
<title>Daily Production Report 国务院公布了房</title>
</head>
}
@{
<table style="width: 61%; font-size:x-small; font-family:'Arial Unicode MS'" border="1">
<tr>
<td style="width: 78px">Date:</td>
<td style="width: 200px"> </td>
<td style="width: 80px">Order ID</td>
<td style="width: 200px">国务院公布了房</td>
<td style="width: 112px">Total Pieces</td>
<td style="width: 200px"> </td>
</tr>
</table>
}
这是背后的代码 -
FontFactory.Register("c:/windows/fonts/ARIALUNI.TTF");
StyleSheet style = new StyleSheet();
style.LoadTagStyle("body", "face", "Arial Unicode MS");
style.LoadTagStyle("body", "encoding", BaseFont.IDENTITY_H);
using (Document document = new Document())
{
PdfWriter.GetInstance(document, new FileStream(fileName, FileMode.Create));
document.Open();
foreach (IElement element in HTMLWorker.ParseToList(
new StringReader(HTMLData.ToString()), style))
{
document.Add(element);
}
document.Close();
}
答案 0 :(得分:1)
虽然您的HTML有效,但HTMLWorker
打破了您将字体名称用HTML中的单引号括起来的事实。将font-family:'Arial Unicode MS'
更改为font-family:Arial Unicode MS
对我有用。更好的是,如果您控制HTML,那么只需完全删除font-family
声明,因为<body>
标记只会继承其他所有内容。
如果您无法更改生成的HTML,则在声明时也可以实际重命名/重新别名Arial。
//Register one alias
FontFactory.Register("C:\\Windows\\Fonts\\ARIALUNI.TTF", "Arial Unicode MS");
//Register another alias
FontFactory.Register("C:\\Windows\\Fonts\\ARIALUNI.TTF", "'Arial Unicode MS'");
此外,请注意HTMLWorker
长时间不赞成使用XMLWorker
。