【问题标题】:how to open specific page on Google's docs viewer如何在 Google 的文档查看器上打开特定页面
【发布时间】:2012-02-29 21:04:02
【问题描述】:

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

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

你们知道如何告诉 google docs viewer 从特定页面开始显示文档吗?

【问题讨论】:

  • 有什么新的解决方案可以解决这个问题吗?

标签: pdf google-docs


【解决方案1】:

让它在嵌入查看器中工作

通过使用 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);

});

只需复制嵌入的 url 并为页面添加您的哈希(#:0.page.15 > 将转到第 15 页)

您可能希望将语言更改为您自己的 &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 阅读器中

【讨论】:

    【解决方案2】:

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

    google 的文档查看器 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';">
    

    瞧,iframe 会在加载后自动向下滚动。

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

    【讨论】:

    • 如果您拥有的文件具有不同的协议(http 与 https),它对我不起作用。我一直在获取不安全的 JavaScript 尝试访问框架...是否有解决方案
    • 这会将您的文档上传到 Google 的服务器吗?
    【解决方案3】:

    我找到了这两个:

    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>
    



    p.s.然后你可以在你的网站上&lt;a href="javascript:go_to_page('3');"&gt;go to page 3&lt;/a&gt;

    【讨论】:

      【解决方案4】:

      对我来说,此解决方案不适用于当前版本的 google 查看器。 Link to specific page on Google Document Viewer on iPad 帮助了我。使用 &a=bi&pagenumber=xx 作为附加 URL 参数。

      【讨论】:

        【解决方案5】:

        我的 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;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-05-22
          • 1970-01-01
          • 2020-10-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多