我正在尝试使用ABCpdf将包含图像的网页渲染到pdf文档中。这是通过Web应用程序完成的。
当我在IIS5中的开发机器上运行应用程序时,一切都很好。当我在IIS6上部署应用程序时,图像不会出现在pdf中。
为了重现这个问题,我创建了一个简单的Web应用程序来从一个简单的网页渲染pdf文件,我发现非本地的图像是那些没有出现在pdf中的图像。
与ABCpdf交互的相关代码是:
Doc theDoc = new Doc();
theDoc.Rect.Inset(18, 18);
theDoc.HtmlOptions.PageCacheEnabled = false;
theDoc.HtmlOptions.PageCacheClear();
theDoc.HtmlOptions.UseNoCache = true;
theDoc.HtmlOptions.Timeout = 60000;
int theID = theDoc.AddImageUrl(theUrl);
while (true)
{
if (!theDoc.Chainable(theID)) break;
theDoc.Page = theDoc.AddPage();
theID = theDoc.AddImageToChain(theID);
}
for (int i = 1; i <= theDoc.PageCount; i++)
{
theDoc.PageNumber = i;
theDoc.Flatten();
}
theDoc.Save(location);
theDoc.Clear();
我用于测试的html页面是:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Test page</title></head>
<body>
<p>This is a local image</p>
<img src="http://myserver/test/images/testimage.gif" />
<p>This is a remote image</p>
<img src="http://l.yimg.com/a/i/ww/beta/y3.gif" />
</body>
</html>
所以我正在尝试将此网址:http://myserver/test/testpage.html(上面的代码)的页面呈现为pdf。
在IIS6中,第二张图片(不是服务器的本地图片)没有出现在pdf中。
这似乎是访问权限的问题,但我无法理解。
谢谢。
答案 0 :(得分:3)
我知道这有点晚了,但希望能帮助别人!
刚刚遇到一个非常类似的问题(这就是我在这个页面上登陆的方式......)。 IIS的版本是相同的,但它是在不同的服务器上运行。看起来问题是在图像下载完成之前生成更多PDF文件。
我与WebSuperGoo取得联系。在引擎盖下它说它使用MSHTML(很有可能是你的环境的差异),并尝试了几个建议:
theDoc.SetInfo(0, "CheckBgImages", "1");
和
theDoc.SetInfo(0, "RenderDelay", "5000"); // You can change this value, just an initial test.
第二个会延迟渲染PDF,使图像有机会下载。
答案 1 :(得分:2)
我有一个类似的问题,发现它是由于图像文件的大小太大造成的。