好的,我有一个正在生成 PDF 的网页。到目前为止,创建 PDF 的代码非常可靠 - 但是我在显示创建的 PDF 时遇到了问题。
我已经在 Chrome 中获得了稳定的显示代码 - 但是我根本无法让 IE 工作。我需要一种在 Javascript 中生成 PDF 并使用 IE 显示它的方法。
这里的关键问题是我在客户端生成 PDF - 这意味着没有服务器端 URL 可以从中加载 PDF。这需要我使用 blob 或 dataurl,而 IE 出于某种奇怪的原因不会呈现其中任何一个。据我了解,这是设计使然,但他们没有提供我能找到的解决方法
该项目要求后台加载PDF,显示后只弹出打印对话框(我不能简单地将文件保存到客户的计算机上)。正在打印的数据也非常明确地定位于打印它们的表单,这意味着我无法将 PDF 渲染到 Canvas 中,而只能打印 Canvas 元素,因为这会在带有 URL 和页码的页面上放置额外的边距。
这是我的问题:
对于 IE,是否有任何解决此问题的方法?我过去使用过 PdfObject,但它在 IE 中仍然存在与 blob 和 dataurls 相同的问题
该网站的后端是经典的 ASP(它正在 .Net 中重做,但最早要到下一次才能使用)- 是否可以将 blob 的二进制数据上传到ASP 页面,将其存储在 session 中,然后将 iframe 定向到返回该 session 变量内容的页面?这会绕过 blob,但我担心这是一项有点雄心勃勃的任务......
最佳答案
如果不涉及服务器或插件,您无法随时随地生成 PDF 文件然后显示它。
如果您尝试使用数据 URI 显示它:
Data URIs are supported only for the following elements and/or attributes.
- object (images only)
- img
- input type=image
- link -CSS declarations that accept a URL, such as background, backgroundImage, and so on.
http://msdn.microsoft.com/en-us/library/cc848897(v=vs.85).aspx
您不能将它用作框架的 URL。
如果您尝试使用 Blob 显示它:
The Blob that is created can be used for resources in elements such as Image, video, audio, XMLHttpRequest, css backgroundImage, and css fonts.
http://msdn.microsoft.com/en-us/library/ie/hh772302(v=vs.85).aspx
还是不行
您可以做的是将 PDF 转换为 HTML5 或 Canvas 。有些库已经可以为您处理该部分,例如 ViewJS .不确定您提到的“额外边距”,但页面 URL 和页码,甚至边距,都可以在打印前在客户端更改和关闭。
关于javascript - IE 不会呈现 PDF Blob ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26273934/