ABCpdf 5编码问题(特殊字符)

本文关键字:特殊字符 问题 编码 ABCpdf | 更新日期: 2023-09-27 18:19:09

我使用ABCpdf版本5,以便将一些html页面呈现为pdf。

我基本上使用HttpServerUtility.Execute() - Method来检索pdf的html:

System.IO.StringWriter writer = new System.IO.StringWriter();
server.Execute(requestUrl, writer);
string pageResult = writer.ToString();
WebSupergoo.ABCpdf5.Doc pdfDoc = new WebSupergoo.ABCpdf5.Doc();
pdfDoc.AddImageHtml(pageResult);
response.Buffer = false;
response.ContentType = "application/pdf";
response.AddHeader("Content-Disposition", "attachment;filename=MyPdf_" + 
    FormatDate(DateTime.Now, "yyyy-MM-dd") + ".pdf");
response.BinaryWrite(pdfDoc.GetData());

现在一些特殊字符,如Umlaute (äöü)被替换为空白。有趣的是,不是所有的。我发现:在html页面中,我有。

`<meta http-equiv="content-type" content="text/xhtml; charset=utf-8" />` 

如果我把它解析掉,所有特殊字符都会正确呈现。但在我看来,这是一个丑陋的hack。

在早期,我没有使用HttpServerUtility.Execute(),但我让ABCpdf调用URL本身:pdfDoc.AddImageUrl("someUrl");。在那里我没有这样的编码问题。

我还能尝试什么?

ABCpdf 5编码问题(特殊字符)

刚刚在ABCpdf 8中遇到了这个问题。

在代码中,检索HTML内容并将pageResult传递给addmagehtml()。如文档所述,

ABCpdf将此HTML保存到一个临时文件中并呈现该文件使用'file://'协议说明符

没有提到的是,临时文件是UTF-8编码的,但在HTML文件中没有说明编码。

标签实际上设置了所需的编码,并解决了我的问题。 避免声明编码的一种方法是使用addmageurl()方法,我希望它从HTTP/HTML响应中检测HTML编码。

编码元标记和addmageurl方法可能有助于简单的文档,但不是在链的情况下,编码不知怎的丢失尽管编码标记。我遇到了这个问题(正如原来的问题所描述的-一些外国字符,如变音符会消失),没有解决方案。我正在考虑完全摆脱ABCPDF,用SSRS代替它,它可以呈现PDF格式。