【问题标题】:Printable rotation in IE8IE8中的可打印旋转
【发布时间】:2012-10-22 17:40:32
【问题描述】:

如何在 IE8 中打印旋转的内容 (div)? DXImageTranform 过滤器选项似乎不可打印。

http://msdn.microsoft.com/en-us/library/ms533014(v=vs.85)


只是为了把它放在上下文中。我正在编写一个名为simpleCanvas 的纯基于dom 的画布库。我拼命尝试在不使用 VML 后备的情况下在 IE8 中提供文本、矩形和图像的旋转,因为它又丑又慢,而且 error prone。 VML 后备在我的待办事项列表上,因为我承认这是我知道如何在 IE8 中执行此操作而无需其他工具的唯一方法。我希望有一些我缺少的技巧,它不符合第三方或服务器端的要求。如果您找到了,那么您将获得赏金。

【问题讨论】:

  • 遗憾的是,在没有 CSS 或使用图像的情况下,您无法在 IE8 中旋转事物。更可悲的是,过滤器错误是在浏览器级别,因此修补它似乎不太合理。
  • 您是希望整个页面旋转,还是仅仅能够在页面内显示旋转的元素?
  • 我同意 Zirak 的观点。我将推测这对于 ActiveX HTA 来说几乎是不可能的——例如。从getting a screenshot to the printboard 开始,如果你能弄清楚如何使用 ActiveX 从剪贴板中进行操作,你就会在那里——但我非常怀疑。您说的是从根本上覆盖浏览器级别的功能,这很困难,部分原因是安全后果。
  • (顺便说一句,刚刚记得,Snap Engage use a Java Applet 获取屏幕截图。)

标签: javascript printing internet-explorer-8 rotation


【解决方案1】:

这是一个巨大的延伸,但这是我能想到的最好的主意:

Explorer Canvas - https://code.google.com/p/explorercanvas/ - 通过滥用 VML 在 IE8 中实现画布。

HTML2Canvas - http://html2canvas.hertzen.com/ - 可以将您的文档渲染到画布上,然后可以旋转。

如果做不到这一点,我怀疑您唯一的选择是在服务器端生成一个旋转的文档并将其提供给客户端进行打印。

编辑:另一个最后的办法是通过 Silverlight 处理打印,将页面嵌入到 silverlight 内的浏览器控件中(糟糕),旋转该页面并通过 SL 打印结果。

虽然对于旧版浏览器中的任何客户端,但这里确实抓住了稻草。

【讨论】:

  • 我知道所有这些选项,但它们还不够好。到目前为止,我认为服务器端渲染是最好的选择(我已经用 wkhtmltoimage 实现了),但我真的认为 DXImageTransform 永远不会打印并且没有替代方案很奇怪。有各种各样的插件解决方案(flash、java、silverlight),但我还没有找到一个可以通过在原始 html 元素上设置属性/样式来工作的答案。请记住,IE8 足够慢,因为它没有生成 VML 或在打印时加载插件,或者确实等待服务器生成图像。
  • DXImageTransform 不起作用的原因是它只适用于 DirectX 用于在屏幕上渲染文档的情况,当然它在打印时不适用。
  • 或者说,奇怪的是浏览器提供了无法打印的功能。
  • 我想我已经用尽了这方面的研究途径,而没有求助于插件。 IE8 在打印时不会这样做。您的客户将不得不接受等待服务器执行此操作作为使用旧浏览器的权衡。对于那些认为延迟不可接受的人,他们将不得不使用其他浏览器。抱歉,我帮不上什么忙了。
  • 我承认失败。不可能按照我想要的方式实现轮换,这个答案涵盖了最好的选择。我强烈建议在 VML 或 Flash 之前进行服务器端渲染。我会将此选项烘焙到我的简单画布库中,以便可以轻松地在服务器端复制画布。
【解决方案2】:

根据Printing webpage with rotated text in Internet Explorer 9,您也需要使用 -ms-transform。一定要阅读编辑,因为有一些错误。

【讨论】:

  • 这如何帮助我在 IE8 中打印旋转的 div?
  • 哦,对不起,我的错。由于某种原因,该链接已被删除。请查看编辑。
【解决方案3】:

https://developers.google.com/chrome/chrome-frame/ 可以接受吗?我猜如果它不是一个 LOB 应用程序,但它会为您提供所需的功能,而不会从最严格的意义上将用户带出 IE8。只是另一种探索途径。

【讨论】:

  • 我已经探索过的一条途径,是的,它是在 IE8 中正确显示时制作页面的解决方案。我在我的网站上启用了 chrome 框架,但是一些客户无法安装 chrome 框架,尽管它可以在没有管理员权限的情况下工作。有很多方法可以绕过 IE8,但这不是我在这里想要做的。我试图摆脱使用 IE8,因为它存在于标准安装中。我应该能够分发一个模块,该模块在其他打印元素之间呈现旋转文本,而不会强加第三方或服务器端要求。
【解决方案4】:

https://code.google.com/p/jqueryrotate/ - 这将旋转图像,它使用 VML 在 IE8 中进行。需要注意的是,您想要旋转的任何文本都必须是图像。

【讨论】:

  • 再次,我在打印 VML 时遇到了问题。将 OpenLayers 视为不打印的 VML 示例。
【解决方案5】:

我从未使用过它,它会有些工作,但你尝试过svgweb 吗?基本上,如果浏览器支持它,它会使用 SVG,如果不支持,它会使用 Flash。因为它是一个 Flash 对象,所以您可以像渲染图像一样打印它。

这里还有一些演示:svgweb Demos

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    相关资源
    最近更新 更多