1

我正在使用 ABCpdf 第 5 版将一些 html 页面呈现为 PDF。

我基本上使用HttpServerUtility.Execute()- 方法来检索 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());

现在一些特殊字符,如元音变音 (äöü) 被替换为空格。有趣的是,并非所有人。我发现了什么:在我拥有的 html 页面中。

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

如果我将其解析,所有特殊字符都会正确呈现。但这在我看来就像一个丑陋的黑客。

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

我还能尝试什么?

4

2 回答 2

5

刚刚遇到ABCpdf 8这个问题。

在您的代码中,您检索 HTML 内容并将 pageResult 传递给 AddImageHtml()。正如文件所述,

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

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

<meta> 标签实际上设置了所需的编码,并解决了我的问题。

避免声明编码的一种方法是使用我希望从 HTTP/HTML 响应中检测 HTML 编码的AddImageUrl()方法。

于 2012-05-11T06:27:16.147 回答
1

编码元标记和 AddImageURL 方法可能有助于简单的文档,但不是在链式情况下,尽管编码标记会以某种方式丢失编码。我遇到了这个问题(正如原始问题中所描述的那样 - 一些外来字符,如变音符号会消失),并且没有解决方案。我正在考虑完全摆脱 ABCPDF 并将其替换为可以呈现 PDF 格式的 SSRS。

于 2013-07-10T20:48:05.303 回答