Неоднократно открывать PDF на определенной странице.(даже после прокрутки) - PullRequest
1 голос
/ 25 марта 2012

Я задавал похожий вопрос на этот вопрос неделю назад, но, возможно, я не прояснил вопрос достаточно ясно.

С тех пор я изо всех сил пытался найти что-то, что работает, но безуспешно.

Используя последнюю версию всех распространенных браузеров, я хочу отобразить PDF, открытый на определенной странице.


Использование Chrome - делает то, что я хочу: -)

Нажатие кнопки открывает PDF на стр. 3. Если пользователь прокручивает файл PDF на другую страницу, а затем снова нажимает кнопку, PDF снова открывается на странице 3;

Использование FF, IE или Safari

Нажатие кнопки открывает PDF на стр. 3. Если пользователь прокручивает pdf на другую страницу, а затем снова нажимает кнопку, ничего не происходит.


Кто-нибудь знает, как мне заставить страницу всегда открываться на странице 3 во всех последних браузерах? Я более чем рад полностью изменить свой подход, включая использование бесплатного плагина в случае необходимости.

Если кто-то знает, что то, что я пытаюсь сделать, можно сделать ТОЛЬКО в Chrome, то я был бы признателен, если бы они сообщили мне об этом.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Test for SO</title>
  <script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
</head>

<body>
  <input id="test" value="Test" type="button" />
    <br />
  <iframe id="iFrame" width="500" height="600"></iframe>
</body>

</html>

<script type="text/javascript">
  $(function () {
    $("#test").click(function () {
      var fileName = "/PDFFiles/pages.pdf#page=3";
      $('#iFrame').attr("src", fileName);
    });
  });
</script>

Ответы [ 4 ]

2 голосов
/ 18 декабря 2012

Это работает для Chrome

<A HREF="http://www.example.com/myfile.pdf#page=4">

Чтобы это работало во всех браузерах, PDF has to be coded to open to a specific page. Это можно сделать с помощью Adobe Acrobat.

1 голос
/ 25 марта 2012

Попробуйте использовать средство просмотра документов Google следующим образом:

<iframe src="http://docs.google.com/gview?url=http://infolab.stanford.edu/pub/papers/google.pdf&embedded=true" style="width:100%; height:500px;" onload="javascript:this.contentWindow.location.hash='#:0.page.4';" frameborder="0"></iframe>

Важной частью является функция onload, которая добавляет индекс с нулевым индексом номер страницы для отображения:

onload="javascript:this.contentWindow.location.hash='#:0.page.4';"

Если вам нужна кнопка для перезагрузки iframe, просто обновите iframe src (я думаю, что это самый простой способ, но я могу ошибаться):

$('button').click(function(){
  $('iframe').attr("src", function() { 
    return this.src;
  });
});
0 голосов
/ 29 мая 2012

Вам необходимо уничтожить и воссоздать сам узел iframe. Например:

<input id="test" value="Test" type="button" />

<br />

<div id="wrapper"> 
 <!-- iframe will be continually destroyed and re-created here --> 
</div>


<script type="text/javascript">
    // Create the initial iframe on page load
    $('<iframe id="iFrame" width="500" height="600" src="/PDFFiles/pages.pdf">').appendTo('#wrapper');

    // Destroy and recreate iframe on button click, starting on your desired page.

    $("#test").click(function () {

     if($('#iFrame').length) { 
       $('#iFrame').remove(); 
     }

     var page = 3;
     $('<iframe id="iFrame" width="500" height="600" src="/PDFFiles/pages.pdf#page='+page+'">').appendTo('#wrapper');

    });

</script>​​​​​​​

Примечание: будет момент, когда PDF-файл снова загрузится на первой странице, но вы сможете скрыть его под шариком загрузчика ajax на 1-2 секунды, а затем, когда вы сделаете его видимым переместится на нужную вам страницу.

0 голосов
/ 25 марта 2012

Я предлагаю установить в iframe src что-то еще, а затем вернуться к правильному документу.только на короткое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...