iPad:如何用javascript在iframe中打印pdf

iPad:如何用javascript在iframe中打印pdf,javascript,ipad,iframe,printing,Javascript,Ipad,Iframe,Printing,使用javascript——在iPad html5 web应用程序中,是否可以打印加载在iframe中的pdf 我尝试过许多事情,但都没有成功,例如: var iframe = document.getElementsByTagName('iframe')[0] if (iframe.attachEvent) { iframe.attachEvent("onload", function(){ console.log("Local iframe is now loaded.

使用javascript——在iPad html5 web应用程序中,是否可以打印加载在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”


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

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

即使不完全是iframe,也可以通过以下方式使用div:

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

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

var pdf=新的PDFObject({
url:“/data/xyz.pdf”,
id:“pdfRendered”,
pdfOpenParams:{
视图:“FitH”
}
}).嵌入(“pdfIframe”);
资料来源:


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

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

即使不完全是iframe,也可以通过以下方式使用div:

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

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

var pdf=新的PDFObject({
url:“/data/xyz.pdf”,
id:“pdfRendered”,
pdfOpenParams:{
视图:“FitH”
}
}).嵌入(“pdfIframe”);
资料来源:


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

我想你差不多找到了解决方案。剩下的就是如何打印iframe。试着用这个

window.frames["iframe"].focus();
window.frames["iframe"].print();
希望能有帮助
:)

我想你快要找到解决办法了。剩下的就是如何打印iframe。试着用这个

window.frames["iframe"].focus();
window.frames["iframe"].print();
希望能有帮助
:)

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

@media print {
    * {
        display: none;
    }

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

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

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

@media print {
    * {
        display: none;
    }

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

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

用户将只使用iPad的safari。如果它只在safari中工作就可以了。浏览器会在iframe中显示pdf。你可以很好地看到pdf。很抱歉,把问题读错了,我们只是把pdf显示在浏览器中,而不是打印出来。用户将只使用iPad的safari。如果它只在safari中工作就可以了。浏览器会在iframe中显示pdf。你可以很好地看到pdf。很抱歉,你看错了问题,只是把pdf显示在浏览器中而没有打印出来。这确实有效,并且回答正确。在safari中,pdf打印对话框将打开(使用gen 1 ipad测试)。你赢得了赏金。我的问题仍然存在,我应该详细说明确切的问题:web应用程序是在ios webview中提供的,我认为它的行为与普通Safari相同。因此,此解决方案在ios网络视图中不起作用。我知道可以编写ios代码与iframe交互并触发打印。我的目标是用javascript实现,如果你知道什么,请帮助。嗨,布莱恩,很高兴它能在Safari中工作,这是真的,如果你尝试在Safari以外的其他应用程序(如UIWebView)中使用,这个window.print将不起作用,因为苹果在这两个应用程序中的做法不同。请阅读此URL,它几乎是您所关注的完整解决方案。我过去所做的是在pdf中创建一个javascript,它将触发打印。在ios补丁发布之前,即使在uiwebview中,这项技术在新一代iPad中也能发挥作用。我想我一直在写xcode并重新发布应用程序。我不是最流利的xcoder。啊,是的,忘了在解决方案上添加额外的副作用,你需要更新应用程序并将其重新发布到应用商店。否则,我希望您的应用程序中有一种使用iBooks选项打开的方法。用户仍然能够摆脱它。不过,这是一个有点往返的过程。这确实有效,并且正确地回答了问题。在safari中,pdf打印对话框将打开(使用gen 1 ipad测试)。你赢得了赏金。我的问题仍然存在,我应该详细说明确切的问题:web应用程序是在ios webview中提供的,我认为它的行为与普通Safari相同。因此,此解决方案在ios网络视图中不起作用。我知道可以编写ios代码与iframe交互并触发打印。我的目标是用javascript实现,如果你知道什么,请帮助。嗨,布莱恩,很高兴它能在Safari中工作,这是真的,如果你尝试在Safari以外的其他应用程序(如UIWebView)中使用,这个window.print将不起作用,因为苹果在这两个应用程序中的做法不同。请阅读此URL,它几乎是您所关注的完整解决方案。我过去所做的是在pdf中创建一个javascript,它将触发打印。在ios补丁发布之前,即使在uiwebview中,这项技术在新一代iPad中也能发挥作用。我想我一直在写xcode并重新发布应用程序。我不是最流利的xcoder。啊,是的,忘了在解决方案上添加额外的副作用,你需要更新应用程序并将其重新发布到应用商店。否则,我希望您的应用程序中有一种使用iBooks选项打开的方法。用户仍然能够摆脱它。虽然有点往返。如果你喜欢,请你+1我的答案。谢谢。如果你喜欢的话,你能帮我回答一下吗。谢谢