2011-07-19 65 views
3

我想要一个带有PDF文档的框架。主文档将使用javascript来告诉PDF文档要显示的页面和缩放级别。这可以做到吗?如果是这样,你如何或可以指向我的文档。谢谢。在网络浏览器中使用javascript控制PDF

回答

2

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

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

+0

这看起来不仅是我需要的东西,还有更多。谢谢!一个问题 - 我在具有该对象的网页中如何从脚本引用文档,然后使用adobe的api中描述的javascript来处理它。你能举一个简单的例子吗? – thf

+0

我真的想检查这个答案,但我仍然需要如何控制它的答案。 – thf

2

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

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

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

但这可能仅Acrobat工作,如记录在这里:http://partners.adobe.com/public/developer/en/acrobat/PDFOpenParameters.pdf

+0

至少'page'参数适用于目前为止我所见过的大多数PDF插件。 – Michael

0

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

2

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

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

src值可以用JavaScript来使其动态控制。

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

-1

正如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'); 
相关问题