Я использую ABCpdf версии 5, чтобы преобразовать некоторые html-страницы в PDF-файлы.
Я в основном использую HttpServerUtility.Execute()
- Метод, чтобы получить html для 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());
Теперь некоторые специальные символы, такие как Umlaute (äöü), заменяются пустым пространством. Что интересно, не все. Что я выяснил: на html-странице, которая у меня есть.
`<meta http-equiv="content-type" content="text/xhtml; charset=utf-8" />`
Если я разбираю это, все специальные символы отображаются правильно. Но мне это кажется уродливым взломом.
Раньше я не использовал HttpServerUtility.Execute()
, но позволял ABCpdf вызывать сам URL: pdfDoc.AddImageUrl("someUrl");
. Там у меня таких проблем с кодировкой не было.
Что еще я мог попробовать?