我正在尝试使用 ABCpdf 将包含图像的网页渲染为 pdf 文档。这是通过网络应用程序完成的。
当我在 IIS 5 中的开发计算机上运行该应用程序时,一切都很好。当我在 IIS 6 上部署应用程序时,图像不会出现在 pdf 中。
为了重现这个问题,我做了一个简单的网络应用程序来从一个简单的网页渲染一个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 http://myserver/test/testpage.html(上面的代码)转换成pdf。
在 IIS6 中,第二个图像(对于服务器来说不是本地的)不会出现在 pdf 中。
似乎是访问权限的问题,但我无法弄清楚。
谢谢。
我知道这有点晚了,但希望能对其他人有所帮助!
刚刚遇到了一个非常相似的问题(这就是我到达此页面的方式..)。 IIS 的版本相同,但运行在不同的服务器上。看起来问题是在图像下载完成之前生成了更多 PDF。
我联系了WebSuperGoo。据说它在幕后使用 MSHTML(很可能这就是您的环境的差异),并且有一些建议可以尝试:
theDoc.SetInfo(0, "CheckBgImages", "1");
and
theDoc.SetInfo(0, "RenderDelay", "5000"); // You can change this value, just an initial test.
第二个将延迟渲染 PDF,让图像有机会下载。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)