Получение уведомления, когда пользователь щелкает ссылку во встроенном PDF - PullRequest
7 голосов
/ 09 мая 2011

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

Есть ли способ выполнитьэто?

Ответы [ 4 ]

7 голосов
/ 10 мая 2011

Если вы посмотрите Acrobat JS Reference для минимальной версии, которую хотите поддерживать, вы увидите документацию по объекту HostContainer.

В PDF:

this.hostContainer.messageHandler =
{
  onMessage: function(messageArray)
  {
    for(var i = 0; i < messageArray.length; i++)
      console.println("Message " + i + ": " + messageArray[i]);
  },
  onError: function(error, messageArray){ },
  onDisclose: function() {return true;}
};

В вашем HTML, если ваш PDF находится внутри тега <object id="thePdf">:

function messageFunc(messageArray) {
    for(var i = 0; i < messageArray.length; i++)
      alert("Message " + i + ": " + messageArray[i]);
}

document.getElementById("thePdf").messageHandler = { onMessage: messageFunc };

В вашем PDF вам также нужно изменить ссылки, чтобы они имели действие JS, которое отправляло бы сообщение на содержащую веб-страницу. Это можно сделать программно (в зависимости от используемого языка или библиотеки) или вручную в Acrobat Pro.

this.hostContainer.postMessage(["urlClicked", "http://blah.blah.blah..."]);

Не очень сложно, но никто никогда не слышал об этом. Я был бы ошеломлен , если бы это работало где-нибудь за пределами Adobe Viewer (Reader / Acrobat) в течение следующих нескольких лет.

Если по какой-то причине вы хотите отправить сообщение из своего HTML-файла в PDF, оно выглядит примерно так:

var thePDF = document.getElementById("thePdf");
thePDF.postMessage(["This", "is", "an", "array", "too."]);

Вы можете даже вытащить все существующие ссылки и получить PDF-запрос, чтобы ссылки открывались оберточной HTML-страницей ... таким образом, вы можете дать новым именам окон, закрыть их из JS и т. Д. правый шикарный.

Но вы должны иметь возможность изменять PDF-файлы.

1 голос
/ 09 мая 2011

Ваша ссылка, вероятно, представлена ​​в виде "аннотации ссылки" внутри вашего PDF-файла.Аннотации в PDF могут содержать «Дополнительные действия», вы можете использовать программное обеспечение для обработки PDF, например iText (бесплатно для некоммерческого использования) или Amyuni PDF Creator (коммерческое, обычное заявление об отказе от ответственности) длядобавьте действие Javascript в коллекцию «Дополнительные действия» ваших ссылок.Вы можете вызвать страницу или метод на вашем сервере, используя этот код Javascript.

0 голосов
/ 09 мая 2011

Сторона клиента:

<a href="yourpdf.pdf" id="pdf-link">PDF</a>

$("#pdf-link").click(function(){
   $.post('yoursite.com/phpfunctionpage/notifyPdf',
          {event:'pdf'},
          function(response){
              alert(response['message']);
          }, 'json'
   );
});

Сторона вашего сервера:

function notifyPdf(){
   $event = $_POST['event'];
   if ($event == 'pdf'){
     // handle notification here
     echo json_encode(array('result'=>1, 'message'=>'notifiation successful'));
   }
}
0 голосов
/ 09 мая 2011
<a href="file.pdf" onclick:'javascriptFunction();'>Open the pdf file</a>

<script>

function javascriptFunction(){

}

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