Проблема ABCPDF6: "HTML-рендер пуст", но вывод веб-страницы в порядке

Как видно из названия, мы используем ABCPdf6 для рендеринга PDF-файлов из XSLT. Все работало нормально, но теперь мы получаем сообщение об ошибке "HTML render пуст". Используя браузер (протестировано в IE/Firefox/Chrome), я могу просматривать сгенерированный HTML (отформатированный XSL), и он отлично отображается в браузере. ABCPDF6 не может конвертировать файл. Я пытался передать управление странице, которая выводит XSL, но я все еще получаю эту ошибку.

Кто-нибудь имеет опыт работы с ABCPdf и сталкивался с этим раньше? Код работал раньше без проблем, и другая страница, которая использует точно такой же генерирующий код (даже указывающий на ту же самую страницу-заполнитель, которая выплевывает HTML!), Работает нормально.

4 ответа

Решение

Теперь я знаю, в чем проблема в моем случае. Когда я запустил обновление Windows на моем сервере 2008, Internet Explorer 9 был установлен. IE 9 имеет другой способ рендеринга HTML, который тормозит abcPDF. Обновление до последней версии (8) решило все мои проблемы. В этой версии вы также можете попробовать другой движок HTML под названием Gecko.

Даже если вы решили свою проблему, если кто-то еще получит эту ошибку, я бы посоветовал вам установить пробную версию и попробовать ее с последней версией.

У меня была такая же ошибка на Windows 7 машина с AbcPdf4.0. Во время обновлений MS IE8 был обновлен до IE10. Проблема была исправлена ​​удалением IE10.

Примечание: Abcpdf4.0 не работает с IE9 и выше. Либо обновите Abcpdf, либо удалите последнюю версию IE.

У меня была похожая проблема сегодня утром с AbcPdf9. Я добавил код для проверки типов движков, и GECKO работал, затем я переключил его обратно на MSHTML, и он все еще работал. Так что это была временная проблема.

Вот как вы указываете тип двигателя:

using (var document = new Doc())
{
    document.HtmlOptions.Engine = EngineType.Gecko;
    ...
    ...
}

Этот код вызывает метод, который преобразует HTML в PDF, но при необходимости вызывает его дважды, так как он потерпит неудачу только один раз:

try
{
    return GeneratePdfFromHtml(html, width, EngineType.MSHtml);
}
catch (Exception ex)
{
    /* detect this known issue, swapping the rendering engine once seems to fix it */
    if (ex.Message.ToUpper().Contains("BLANK"))
    {
        return GeneratePdfFromHtml(html, width, EngineType.Gecko);
    }
    throw;                            
}

Затем вы можете добавить параметр в метод, который выполняет преобразование:

    public byte[] GeneratePdfFromHtml(string html, int width, EngineType engineType)
    {
        if (string.IsNullOrWhiteSpace(html)) throw new ArgumentNullException("html");
        if (width < 100) throw new ArgumentOutOfRangeException("width");

        try
        {
            using (var document = new Doc())
            {
                document.HtmlOptions.Engine = engineType;
                ...
                ...

Если у вас есть предложение или другое решение, пожалуйста, оставьте комментарий.

В regedit используйте следующие шаги

1) HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node

2) Создать ключ DWORD 32 Bit

3) Переименуйте его в "w3wp.exe"

4) Установить значение даты = 1

Другие вопросы по тегам