如何在Google文档查看器上打开特定页面

时间:2012-02-08 12:16:48

标签: pdf google-docs

我正在使用谷歌的文档查看器在html页面中显示pdf文档,我想从第20页开始打开文档,而不是例如1。

几乎没有关于Google的文档查看器服务的任何文档。他们在其网页https://docs.google.com/viewer中说该服务只接受两个参数(网址和嵌入式),但我看到其他参数搜索网页,如“a”,“pagenumber”,“v”和“attid”,他们都没有对我做任何事。我试图在我的网址末尾添加#:0.page.19(这是包含谷歌内部页面编号20的div的ID)但它只是忽略它或以随机方式工作。

你们知道如何告诉谷歌文档查看器在特定页面上显示文档吗?

5 个答案:

答案 0 :(得分:16)

我找到了一个解决方案,我会在这里发布,以防有​​人遇到同样的情况。

google的docs viewer iframe中的每个页面都有一个类似:0.page.X的ID,其中X是页面的编号。像这样调用服务

<iframe id="iframe1" src="http://docs.google.com/gview?url=http://yourpdf&embedded=true#:0.page.20">

不起作用(可能是因为在呈现页面时尚未创建页面ID?)

所以你只需要向iframe添加一个onload属性:

<iframe id="iframe1" src="http://docs.google.com/gview?url=http://yourpdf&embedded=true" onload="javascript:this.contentWindow.location.hash=':0.page.20';">

和voilà,iframe将在加载后自动向下滚动。

请注意,网页索引是从零开始的。如果要在查看器中查看文档的第20页,则需要使用参数:0.page.19

答案 1 :(得分:3)

对我来说,这个解决方案不适用于当前版本的google viewer。 Link to specific page on Google Document Viewer on iPad帮助了我。使用&amp; a = bi&amp; pagenumber = xx作为附加网址参数。

答案 2 :(得分:2)

我找到了这两个:

1)只是特定页面的屏幕截图(图像)(没有导航):

https://docs.google.com/viewer?url=http://infolab.stanford.edu/pub/papers/google.pdf&embedded=true&a=bi&pagenumber=12

2)指向IFRAME中PDF特定页面的链接(导航):

<script>
var docURL='https://docs.google.com/viewer?url=http://infolab.stanford.edu/pub/papers/google.pdf&embedded=true';
var startPAGE=7;

document.write('<iframe id="iframe1" onload="javascript:go_to_page('+ startPAGE +')" src="https://docs.google.com/viewer?url=http://infolab.stanford.edu/pub/papers/google.pdf&embedded=true"width="600" height="400" ></iframe>');
function go_to_page(varr) { document.getElementById("iframe1").setAttribute("src", docURL + '#:0.page.'+ (varr-1) );}
</script>



附:那么你可以在你的网站上<a href="javascript:go_to_page('3');">go to page 3</a>

答案 3 :(得分:0)

我的PDF是13页,但是当我使用hash:0.page.13时,它只跳转到第10页。我必须setTimeout并再次调用相同的函数:

每页加载只需要执行一次,然后它似乎正确同步。我相信有一个更优雅的解决方案:

var is_caught_up = false;
function pdf_go(page){
     $('pdf_frame').contentWindow.location.hash=':0.page.'+page;
     if (!is_caught_up){
         setTimeout('pdf_catchup('+page+')', 500);
     }
}

function pdf_catchup(page){
    $('pdf_frame').contentWindow.location.hash=':0.page.'+page;
     is_caught_up = true;
}

答案 4 :(得分:0)

让它在嵌入式查看器中工作

通过使用timout函数更改url,这可能不会直接显示pdf

$(window).load(function() { setTimeout(function() { $('.gde-frame').attr('src', 'https://docs.google.com/viewer?url=http://yourdomain.com/yourpdf.pdf&hl=nl&embedded=true#:0.page.15'); }, 1000);

});

只需复制已嵌入的网址并为页面添加哈希值(#:0。页15&gt;将转到第15页)

您可能希望将语言更改为您自己的&amp; hl = nl

并且对于人们如何支持ie8

如果你使用这样的样板:

<!--[if IE 8 ]> <html class="no-js ie8" lang="en"> <![endif]-->

您可以直接将链接的输出更改为pdf,

if( $("html").hasClass("ie8") ) {


           $('#linkID').attr('href', 'http://yourdomai.com/yourpdf.pdf');


        };

pdf将显示在IE的pdf阅读器中