ABCpdf 5 Problems with encoding (special characters)

拥有回忆 提交于 2019-12-24 10:02:14

问题


I am using ABCpdf Version 5 in order to render some html-pages into PDFs.

I basically use HttpServerUtility.Execute() - Method in order to retrieve the html for the pdf:

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());

Now some special characters like Umlaute (äöü) are replaced with an empty space. Interestingly not all of them. What I did figure out: Within the html-page I have.

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

If I parse this away, all special chars are rendered correctly. But this seems to me like an ugly hack.

In earlier days I did not use HttpServerUtility.Execute(), but I let ABCpdf call the URL itself: pdfDoc.AddImageUrl("someUrl");. There I had no such encoding-problems.

What could I try else?


回答1:


Just came across this problem with ABCpdf 8.

In your code you retrieve HTML contents and pass the pageResult to AddImageHtml(). As the documentation states,

ABCpdf saves this HTML into a temporary file and renders the file using a 'file://' protocol specifier.

What is not mentioned is that the temp file is UTF-8 encoded, but the encoding is not stated in the HTML file.

The <meta> tag actually sets the required encoding, and solved my problem.

One way to avoid the declaration of the encoding is to use the AddImageUrl() method that I expect to detect the HTML encoding from the HTTP/HTML response.




回答2:


Encoding meta tag and AddImageURL method perhaps helps with simple document, but not in a chain situation, where encoding somehow gets lost despite encoding tag. I encountered this problem (exactly as described in original question - some foreign characters such as umlauts would disappear), and see no solution. I am considering getting rid of ABCPDF altogether and replace it with SSRS, which can render PDF formats.



来源:https://stackoverflow.com/questions/8678936/abcpdf-5-problems-with-encoding-special-characters

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!