как открыть определенную страницу в Google Docs Viewer - PullRequest
18 голосов
/ 08 февраля 2012

Я использую Google Docs Viewer, чтобы показать документ PDF на HTML-странице, и я хотел бы открыть документ, начиная со страницы 20, например, с 1.

Вряд ли есть какая-либо документация о документах Googleсервис просмотра.На своей веб-странице они говорят https://docs.google.com/viewer, что служба принимает только два параметра (url и встроенный), но я видел другие параметры поиска в Интернете, такие как "a", "pagenumber", "v" и "attid"Никто из них ничего не сделал для меня.Я попытался добавить #: 0.page.19 в конце моего URL (это идентификатор div, содержащего страницу с номером 20 внутри тела, которое создает Google), но он просто игнорирует его или работает случайным образом.

Ребята, знаете ли вы, как сказать Google Docs Viewer, чтобы показать документ, начиная с определенной страницы?

Ответы [ 5 ]

16 голосов
/ 10 февраля 2012

Я нашел решение, которое я опубликую здесь, на случай, если кто-то окажется в такой же ситуации.

Каждая страница в Google Viewer Docs Viewer имеет идентификатор, такой как :0.page.X, то есть X номер страницы,Вызов службы таким образом

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

не будет работать (может быть, потому что идентификаторы страниц еще не созданы, когда страница отображается)

Так что вам просто нужно добавить атрибут onloadна iframe:

<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

3 голосов
/ 13 июня 2013

Для меня это решение не работает с текущей версией Google Viewer. Ссылка на определенную страницу в Google Document Viewer на iPad помогла мне. Используйте & a = bi & pagenumber = xx в качестве дополнительного URL-параметра.

2 голосов
/ 26 декабря 2013

Я нашел эти два:

1) просто скриншот (изображение) конкретной страницы ( без навигации):

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

2) ссылкана определенную страницу PDF в IFRAME ( с навигацией):

<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>

0 голосов
/ 11 июля 2013

Понял, что работает в ibed viewer

Путем изменения URL-адреса с помощью функции тайм-аута, поскольку PDF-файл напрямую не отображается

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

Просто скопируйте вставленный 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 будет показан в программе чтения PDF из IE

0 голосов
/ 15 мая 2012

Мой PDF - 13 страниц, но когда я использовал хеш: 0.page.13, он только перешел на страницу 10. Мне пришлось установить TimeTimeout и снова вызвать ту же функцию:

Требуется сделать это только один раз для каждой загрузки страницы, тогда, похоже, она синхронизируется правильно. Я уверен, что есть более элегантное решение:

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;
}
...