在Web浏览器中使用javascript控制PDF

时间:2011-07-19 20:23:59

标签: javascript pdf

我想要一个带有PDF文档的框架。主文档将使用javascript告诉PDF文档要显示的页面和缩放级别。可以这样做吗?如果是这样,您如何或可以指向我的文档。感谢。

5 个答案:

答案 0 :(得分:2)

您不能/不应该在框架中执行此操作,但您可以在页面上创建可使用JavaScript API控制的<object>

http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/js_api_reference.pdf

答案 1 :(得分:2)

不容易。这完全取决于用于在浏览器中显示PDF的内容。并非所有浏览器都有内置的PDF查看器,然后还有许多不同的外部查看器(例如Acrobat,Fox-It等)。据我所知,有

您可以尝试破解这样的网址:

http://example.com/somedocument.pdf#page=5

但这可能仅适用于Acrobat,如此处所述:http://partners.adobe.com/public/developer/en/acrobat/PDFOpenParameters.pdf

答案 2 :(得分:2)

您是否需要加载和运行PDF阅读器?如果没有,您可以编写后端脚本/程序,以指定页面作为特定缩放级别的图像(GIF,PNG等)。然后您的主页可以加载图像,如:

<img src="render_pdf?page=4&zoom=150">

可以使用javascript控制src值以使其动态化。

要从PDF转换为render_pdf脚本中的图像,您可以使用ghostscript或ImageMagick或GD等图像特定库,具体取决于您使用的后端技术。

答案 3 :(得分:0)

看看jsPDF - 由于datauri的限制,它可能不会在IE6和IE7的屏幕上输出.pdf,但它是一个良好的开端。我不明白为什么这也不能在iframe中构建。

答案 4 :(得分:0)

正如Jordan指出的那样,您应该使用<object>标记来嵌入PDF。然后,在PDF本身中,您需要嵌入Javascript来处理传入的消息,例如:

if(!this.hostContainer.messageHandler) this.hostContainer.messageHandler = new Object();
this.hostContainer.messageHandler.onMessage = handleMessage;
function handleMessage(msg) {
    // do stuff here
}

最后,在HTML JS中,您使用以下命令传递消息:

document.getElementById('yourpdfobject').postMessage('some message or array');