ABCpdf 5 Проблемы с кодировкой (специальные символы)

Я использую 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");. Там у меня таких проблем с кодировкой не было.

Что еще я мог попробовать?


person sl3dg3    schedule 30.12.2011    source источник
comment
Я понял, что ABCpdf Verion 7, похоже, не имеет этой проблемы.   -  person sl3dg3    schedule 03.01.2012


Ответы (2)


Только что столкнулся с этой проблемой с ABCpdf 8.

В вашем коде вы извлекаете содержимое HTML и передаете pageResult в AddImageHtml (). Как в документации состояния,

ABCpdf сохраняет этот HTML-код во временный файл и отображает файл, используя спецификатор протокола 'file: //'.

Что не упомянуто, так это то, что временный файл закодирован в UTF-8, но кодировка не указана в файле HTML.

Тег ‹meta> фактически устанавливает требуемую кодировку и решил мою проблему.

Один из способов избежать объявления кодировки - использовать AddImageUrl (), который, как я ожидаю, обнаружит кодировку HTML из ответа HTTP / HTML.

person devio    schedule 11.05.2012

Кодирование метатега и метода AddImageURL, возможно, помогает с простым документом, но не в ситуации цепочки, когда кодирование каким-то образом теряется, несмотря на тег кодирования. Я столкнулся с этой проблемой (точно так, как описано в исходном вопросе - некоторые иностранные символы, такие как умляуты, исчезнут), и не вижу решения. Я подумываю полностью избавиться от ABCPDF и заменить его SSRS, который может отображать форматы PDF.

person captainvp    schedule 10.07.2013