我的页面中嵌入了PDF,我想设置类似javascript-callback的东西,只要用户点击PDF中的链接就可以调用。
有没有办法实现这个目标?
答案 0 :(得分:7)
如果您查看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查看器(Reader / Acrobat)之外的任何地方工作,我将震惊。
如果您出于某种原因要将HTML中的消息发送到PDF,则可能是这样的:
var thePDF = document.getElementById("thePdf");
thePDF.postMessage(["This", "is", "an", "array", "too."]);
你甚至可以抽出所有现有的链接并让PDF请求通过包装HTML页面打开链接......这样你就可以给出新的Windows名称,从JS关闭它们等等。你可以下来对时髦的。
但您必须能够更改PDF。
答案 1 :(得分:1)
您的链接可能在PDF文件中表示为“链接注释”。 PDF中的注释可以包含“附加操作”,您可以使用pdf处理软件,如iText(免费用于非商业用途)或Amyuni PDF Creator(商业,通常的免责声明应用程序)将Javascript操作添加到链接的“附加操作”集合。您可以使用此Javascript代码在服务器中调用页面或方法。
答案 2 :(得分:-2)
客户方:
<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'));
}
}
答案 3 :(得分:-3)
<a href="file.pdf" onclick:'javascriptFunction();'>Open the pdf file</a>
<script>
function javascriptFunction(){
}
</script>