我正在使用谷歌的文档查看器在html页面中显示pdf文档,我想从第20页开始打开文档,而不是例如1。
几乎没有关于Google的文档查看器服务的任何文档。他们在其网页https://docs.google.com/viewer中说该服务只接受两个参数(网址和嵌入式),但我看到其他参数搜索网页,如“a”,“pagenumber”,“v”和“attid”,他们都没有对我做任何事。我试图在我的网址末尾添加#:0.page.19(这是包含谷歌内部页面编号20的div的ID)但它只是忽略它或以随机方式工作。
你们知道如何告诉谷歌文档查看器在特定页面上显示文档吗?
答案 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阅读器中