9

正如标题所说,我们使用 ABCPdf6 从 XSLT 呈现 PDF。一切正常,但现在我们收到一条错误消息,指出“HTML 呈现为空白”。使用浏览器(在 IE/Firefox/Chrome 上测试)我能够浏览到生成的 HTML(格式化的 XSL),它在浏览器中显示得非常好。ABCPDF6 无法转换文件。我尝试控制输出 XSL 的页面,但我仍然收到此错误。

有没有人有过 ABCPdf 的经验并且以前遇到过这种情况?该代码之前工作正常,没有问题,另一个使用完全相同的生成代码的页面(甚至指向吐出 HTML的同一个占位符页面!)工作正常。

4

4 回答 4

16

我现在知道我的问题出在哪里。当我在我的 2008 服务器上运行 Windows 更新时,安装了 Internet Explorer 9。IE 9 有一种不同的方式来呈现 HTML,这会阻止 abcPDF。更新到最新版本(8)解决了我所有的问题。在这个版本中,您还可以尝试另一个名为 Gecko 的 HTML 引擎。

即使您已经解决了问题,但如果其他人收到此错误,我建议您安装试用版并尝试使用最新版本。

于 2011-10-20T13:28:27.957 回答
3

我在带有 AbcPdf4.0 的 Windows 7 机器上遇到了同样的错误。在 MS 更新期间,IE8 已升级到 IE10。通过卸载 IE10 解决了问题。

注意:Abcpdf4.0 不适用于 IE9 及更高版本。升级 Abcpdf 或卸载最新的 IE。

于 2013-08-30T09:52:51.407 回答
1

今天早上我在 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;
                ...
                ...

如果您有建议或不同的解决方案,请发表评论。

于 2014-09-19T06:06:16.690 回答
-1

在 regedit 中使用以下步骤

1)HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node

2)创建一个密钥 DWORD 32 位

3) 将其重命名为“w3wp.exe”

4) 设定起息日 = 1

于 2015-09-28T10:16:20.287 回答