正如标题所述,我们使用ABCPdf6来呈现XSLT的PDF。一切都很好,但是现在我们得到了一个错误,即"HTML呈现是空白的“。使用浏览器(在IE/Firefox/Chrome上测试),我可以浏览生成的HTML (格式化的XSL),它在浏览器中显示得非常好。ABCPDF6无法转换该文件。我已经尝试过控制输出XSL的页面,但是我仍然会收到这个错误。
是否有人有使用ABCPdf的经验,以前也遇到过这种情况?代码以前运行良好,没有任何问题,另一个页面使用完全相同的生成代码(甚至指向相同的占位符页面,该页面会释放HTML!)效果很好。
发布于 2011-10-20 13:28:27
我现在知道我的案子出了什么问题。当我在我的2008服务器上运行Windows更新时,已经安装了Internet 9。IE9有一种不同的方式来渲染HTML,阻止abcPDF。更新到最新版本(8)解决了我所有的问题。在这个版本中,您还可以尝试另一个名为Gecko的HTML引擎。
即使您已经解决了您的问题,如果其他人有此错误,我建议您安装试用版,并尝试使用最新版本。
发布于 2013-08-30 09:52:51
我在使用AbcPdf4.0的windows 7机器上也有同样的错误。在MS更新期间,IE8被升级为IE10。通过卸载IE10解决了问题。
注意: Abcpdf4.0不适用于IE9。升级Abcpdf或卸载最新的IE。
发布于 2014-09-19 06:06:16
我今天早上和AbcPdf9也有过类似的问题。我添加了代码来测试引擎类型和壁虎工作,然后我把它换回了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;
...
...如果您有建议或不同的解决方案,请留下评论。
https://stackoverflow.com/questions/7653365
复制相似问题