我正在使用一个名为Aspose.Pdf的PDF生成库。我喜欢这个图书馆,但是我很难让汉字在PDF中显示出来。我使用以下代码在C#.NET MVC中生成PDF:
var pdf = new Aspose.Pdf.Generator.Pdf();
pdf.IsLandscape = true;
pdf.HtmlInfo.CharsetApplyingLevelOfForce = Aspose.Pdf.Generator.HtmlInfo.CharsetApplyingForceLevel.EnforceUseAlways;
pdf.HtmlInfo.CharSet = "UTF-8";
pdf.HtmlInfo.BadHtmlHandlingStrategy = Aspose.Pdf.Generator.BadHtmlHandlingStrategy.TreatAsPlainText;
pdf.BindHTML(htmlString);
pdf.SetUnicode();
pdf.Save(fullFilePath);htmlString变量中的值是:
<!DOCTYPE html>
<html>
<body style="font-family: 'Arial Unicode MS',Arial,sans-serif; ">
<center><h3>Corrective Action Plans PDF</h3></center>
<table style="padding: 5px; font-size: 8pt; border: 1px solid #000000;" cellpadding="5">
<tr style="border: 1px solid #000000;" bgcolor="#4D94FF">
<th style="border: 1px solid #000000;" width="11%">
ID
</th>
<th style="border: 1px solid #000000;" width="11%">
Status
</th>
<th style="border: 1px solid #000000;" width="11%">
审计类型
</th>
<th style="border: 1px solid #000000;" width="11%">
审核表格
</th>
<th style="border: 1px solid #000000;" width="11%">
Category
</th>
<th style="border: 1px solid #000000;" width="11%">
问题
</th>
<th style="border: 1px solid #000000;" width="11%">
Location ID
</th>
<th style="border: 1px solid #000000;" width="11%">
Location
</th>
<th style="border: 1px solid #000000;" width="11%">
Start Date
</th>
</tr>
<tr style="border: 1px solid #000000;" bgcolor="#CCCCCC">
<td style="border: 1px solid #000000;" width="11%">
1260
</td>
<td style="border: 1px solid #000000;" width="11%">
New
</td>
<td style="border: 1px solid #000000;" width="11%">
CAM Forms
</td>
<td style="border: 1px solid #000000;" width="11%">
CAM Form 4 - All Action Plan Options
</td>
<td style="border: 1px solid #000000;" width="11%">
CAM4: Use Action Plan
</td>
<td style="border: 1px solid #000000;" width="11%">
Droplist Non-Compliant
</td>
<td style="border: 1px solid #000000;" width="11%">
017
</td>
<td style="border: 1px solid #000000;" width="11%">
ANGLETON
</td>
<td style="border: 1px solid #000000;" width="11%">
2014/2/13 14:00:00
</td>
</tr>
</table>
</body>
</html>如您所见,在HTML标记中,在表的标题行中有中文字符。但是,在生成的PDF文档中,这些值正在被“删除”。
有人能帮我吗?
发布于 2014-02-19 18:48:42
这是一个非常具体的问题,所以我甚至不确定我会得到什么回应。但是,我当时很绝望,所以无论如何都会伸出援手。:)
无论如何,我坚持了下来,并设法找到了解决这个问题的方法。我通过将我的C#更改为以下内容来修正它:
var pdf = new Aspose.Pdf.Generator.Pdf();
pdf.IsLandscape = true;
Aspose.Pdf.Generator.Section section = pdf.Sections.Add();
Aspose.Pdf.Generator.Text text = new Aspose.Pdf.Generator.Text(section, htmlString);
text.IsHtmlTagSupported = true;
text.IsHtml5Supported = true;
text.TextInfo.FontName = "Arial Unicode MS";
text.IfHtmlTagSupportedOverwriteHtmlFontNames = true;
section.Paragraphs.Add(text);
pdf.SetUnicode();
pdf.Save(fullFilePath);发布于 2016-02-04 11:02:39
我也遇到了类似的问题,但情况却大不相同。
我不使用BindHTML和HTML,而是使用XML输入:
var pdf = new Aspose.Pdf.Generator.Pdf();
pdf.BindXML(thexml);
pdf.Save(fullFilePath);其中,thexml包含关于如何生成PDF对象的冗长而复杂的描述。一直以来,阿斯波斯PDF XML规范,所有的工作。除非某些内部文本或内部html数据包含非拉丁字符。
我试着用Cyrillics,日语和波兰的例子--在前两个“特殊”字符中,所有的特殊字符都表示为空格,而在波兰语中,所有特殊字符都被强制使用最近的拉丁字符(ć->c,Ł->L等等)。
顺便说一句。我使用Aspose.PDF v9.6.0.0
在这个问题/答案的帮助下,我能够让在某种程度上使用:
var pdf = new Aspose.Pdf.Generator.Pdf();
pdf.TextInfo.IsUnicode = true;
pdf.SetUnicode();
pdf.BindXML(thexml);
pdf.Save(fullFilePath);你介绍的其他设置似乎没有改变任何事情。而且,奇怪的是,我不得不设置两次IsUnicode,正如您所看到的。SetUnicode是不够的。
以上所述,西里尔语和波兰语都可以,但日语仍然是空白。不过,这对我来说已经足够了。也许它也会为某人带来好的回报。
https://stackoverflow.com/questions/21868057
复制相似问题