我正在使用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");
。在那里我没有这样的编码问题。
我还能试试什么呢?
发布于 2012-05-11 06:27:16
刚刚在ABCpdf 8中遇到了这个问题。
在代码中,检索HTML内容并将pageResult传递给AddImageHtml()。正如文档所说,
File://‘将此HTML保存到临时文件中,并使用“ABCpdf协议说明符”呈现该文件。
没有提到的是,临时文件是UTF-8编码,但编码没有在HTML文件中说明。
标签实际上设置了所需的编码,并解决了我的问题。
避免编码声明的一种方法是使用AddImageUrl()方法,我希望该方法能够从HTML中检测到HTML。
发布于 2013-07-10 20:48:05
编码元标记和AddImageURL方法可能对简单文档有所帮助,但在链式情况下则不然,在这种情况下,编码会在编码标记的情况下丢失。我遇到了这个问题(正如在最初的问题中所描述的--一些外国字符如umlauts会消失),并且看不到任何解决方案。我正在考虑完全摆脱ABCPDF,并将其替换为SSRS,它可以呈现PDF格式。
https://stackoverflow.com/questions/8678936
复制相似问题