在页面中嵌入PDF并打印- IE9问题
Embed PDF in page and print - IE9 issues
我有一些代码通过将容器的innerHTML设置为此函数的返回字符串来动态加载PDF文档到网页:
function getPdfString(url) {
return '<object data="' + url + '" type="application/pdf" classid="clsid:ca8a9780-280d-11cf-a24d-444553540000" style="width:100%;height:600px"></object>';
}
在安装了Adobe Reader插件的IE中(由检测PDFObject上的Adobe ActiveX的代码确定),我的代码将这个HTML插入到一个隐藏的容器中,将对object元素的引用放入el
,然后运行这个代码(Repeater是一个自定义类):
log("** start repeater **");
var r = _repeater = new Repeater(function() {
try {
var delta = timeInterval();
log("iteration - " + delta + "ms");
el.gotoFirstPage(); //throws exceptions until the PDF is loaded
log("** assuming success, stop **");
r.stop();
r = undefined;
setTimeout(function() {
el.print(); //should succeed, can't tell because it doesn't throw or return anything
}, 100);
} catch(e) { }
}, 0, 100);
这是非常复杂的,但必要的,因为没有办法告诉PDF何时加载,也没有el.print()
是否成功。我花了很长时间才弄明白,但它似乎在IE7和IE8中工作得很好。IE9断断续续,通常在我的本地机器(运行IIS7.5)上工作,但有时也不行。当站点在我的测试服务器上运行时,IE9从来没有工作过,我的测试服务器必须运行IIS6。我不知道我正在运行的IIS版本是否导致了我的问题,但从Fiddler日志判断,我怀疑它。
我一直在研究Fiddler,在这里和那里做些小的调整,看看是否有什么不同。到目前为止,还没有任何进展。我能看到的唯一区别是Server
头。
我发现IE7和IE8需要classid
属性;否则,他们将对PDF发出多次请求,并且通常无法加载它。它还显著改善了IE9的缓存行为。
每次获取的PDF都略有不同。我目前没有把它保存到一个临时文件或任何东西,虽然我可以如果它是绝对必要的(所以我可以在随后的请求中重新发送相同的PDF)。
响应正在被gzip编码,但我有同样的问题,无论它是否启用。
我注意到,当问题发生时,终止AcroRd32.exe有时会暂时解决问题。
旁注:Firefox和Opera在嵌入PDF的页面内弹出中使用相同的HTML。这工作得很好。(Adobe Reader NPAPI插件没有一个print()方法,我已经能够找到,可悲的是,所以弹出提示用户点击嵌入视图的print按钮)
没有什么能阻止我尝试其他的嵌入方法,比如iframe
,但是当我第一次尝试的时候,我遇到了一些奇怪的问题(在所有这些混乱之后,我记不清它们现在是什么了)。
我想这就是我目前对这个问题所知道的一切了。
这似乎是adobereader和IE插件特有的问题。我发现一些论坛线程表明这是一个常见的,可重复的错误(http://forums.adobe.com/thread/758489)。
解决方案似乎是在<object>
/<embed>
标签上使用iFrame。
- Angular JS IE9 Hashbang url rewriting
- 使用javascript将动态表从一个html页面打印到另一个html页
- JavaScript打印功能使日历停止工作
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- esri javascript异步打印
- 文本框不是从Javascript/Asp.net中的对话框中打印出来的
- jQuery/JavaScript在线公文包表单-打印样式表
- 在IE9中的输入字段中输入焦点最近按钮
- 如何打印嵌套对象的所有值
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- 为什么jQuery 1.8不能在IE8和InternetExplorer9中使用?(截至2012年9月的IE9最新版本)
- 打印预览没有应用程序页眉和页脚的html表格
- 正在打印图表上的文本
- IE9 在 iframe 中打印 PDF 时出现“无效调用对象”
- 在IE9中打印IFrame文档
- 在页面中嵌入PDF并打印- IE9问题
- 为什么IE9没有打印任何东西?
- Tryied窗口.用Ajax打开窗口.打印不工作(IE9)
- 无法在IE9中打印Raphael创建的SVG图像
- 在IE9的每个打印页面上都保留一个标题