1
votes

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?

2
I realized that ABCpdf Verion 7 doesn't seem to have this problem. - sl3dg3

2 Answers

5
votes

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.

1
votes

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.