【问题标题】:iPad: How to print a pdf in an iframe in javascriptiPad:如何在 javascript 的 iframe 中打印 pdf
【发布时间】:2014-08-19 16:18:43
【问题描述】:

使用 javascript -- 在 iPad html5 网络应用程序中,是否可以打印加载到 iframe 中的 pdf?

我尝试了很多事情都没有成功,例如:

var iframe = document.getElementsByTagName('iframe')[0]

if (iframe.attachEvent) {
    iframe.attachEvent("onload", function(){
      console.log("Local iframe is now loaded.");
      iframe.contentWindow.print()
    });
}
else {
    iframe.onload = function(){
        console.log("sLocal iframe is now loaded.");
        iframe.contentWindow.print()
    };
}

iframe 的 url 是 '/data/xyz.pdf';

目标是打开打印对话框。这对我来说是个大问题,请帮忙!!!

【问题讨论】:

  • 用户将只使用 iPad 的 safari。如果它只适用于 safari 也没关系。
  • 浏览器在 iframe 中显示 pdf。你可以看到pdf就好了。
  • 对不起,问题读错了,只是在浏览器中显示 pdf 而没有打印出来

标签: javascript ipad iframe printing


【解决方案1】:

我认为您几乎可以找到解决方案。唯一剩下的就是如何打印 iframe。尝试使用它。

window.frames["iframe"].focus();
window.frames["iframe"].print();

希望对你有帮助 :)

【讨论】:

  • 这确实有效并且可以正确回答问题。在 safari 中,将打开 pdf 打印对话框(使用 gen 1 ipad 测试)。你已经赢得了赏金。我的问题仍然存在,我应该详细说明确切的问题:Web 应用程序在 ios webview 中提供服务,我认为它的行为与普通 Safari 相同。所以这个解决方案在 ios webview 中不起作用。我知道可以编写 ios 代码来与 iframe 交互并触发打印。我的目标是用javascript来做,如果你知道什么,请帮忙。
  • 嗨,Brian,很高兴它在 Safari 中工作,这是真的,如果您在 Safari 之外的其他应用程序(如 UIWebView)中尝试,此 window.print 将无法工作,因为 Apple 在两者之间的做法不同。请阅读有关此 URL 的扩展信息,它几乎是您所关注的完整解决方案。 stackoverflow.com/questions/22364543/…
  • 我以前做的是在 PDF 中使用 javascript 创建 pdf,这会触发打印。在发布 ios 补丁之前,这在新一代 ipad 中有效——即使在 uiwebview 中也是如此。我想我一直在编写 xcode 并重新发布应用程序。我不是最流畅的xcoder。
  • 啊,是的,忘记在解决方案上添加额外的副作用,您需要更新应用程序并将其重新发布到 App Store。否则,我希望您的应用程序有一种使用 iBooks 选项打开的方法。用户仍然能够摆脱它。虽然,有点往返。
【解决方案2】:

与其他两个答案不同的方法是使用 CSS 仅打印 iframe:

@media print {
    * {
        display: none;
    }

    iframe {
        display: block;
        width: 100%;
        height: 100%;
    }
}

这基本上使 iframe 成为页面的全宽和全高,并隐藏了其他元素,因此当用户单击打印时,iframe 是唯一可见的东西。与其他选项相比,它的优势在于它可以在关闭 JavaScript 的情况下工作,一些用户可能出于安全原因这样做。

【讨论】:

  • 如果你喜欢它,请你 +1 我的回答。谢谢。
【解决方案3】:

我对支持 PDFObject 的 Safari 非常有信心。它只是一个要声明的对象,非常容易使用。

即使不完全是 iframe,您也可以这样使用 div:

<div id="pdfIframe"></div>

var pdf = new PDFObject({
  url: "/data/xyz.pdf",
  id: "pdfRendered",
  pdfOpenParams: {
    view: "FitH"
  }
}).embed("pdfIframe");

来源:http://pdfobject.com/

编辑:我没有看到这是一个打印问题,所以我的答案不是真的。顺便说一句,我记得有朋友用过,他打印没问题,所以可能附带了打印支持功能。

【讨论】:

    猜你喜欢
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多