【发布时间】:2016-10-17 13:27:36
【问题描述】:
我正在为需要操作具有以下需求的交互式 PDF 的朋友工作: 有 2 个主要的“层”和 2 个按钮。当我按下button1时,只有layer1可见,当我按下button2时,layer2是唯一可见的。
他可以为每个按钮上传一个javascript,其中包含必须在点击时开始的操作,这是我为他编写的代码。
var layerToHideLabel = "testlayer1";
var layerToShowLabel = "testlayer2";
showField(layerToShowLabel);
hideField(layerToHideLabel);
function showField(fieldName){
var field = null;
field = FindOCG(fieldName);
if(field != null){
setVisibility(field,true);
}
}
function hideField(fieldName){
var field = null;
field = FindOCG(fieldName);
if(field != null){
setVisibility(field,false);
}
}
function setVisibility(field, status){
field.state=status;
}
function FindOCG(cName) {
var aOCGs = this.getOCGs();
for(var i=0; aOCGs && i<aOCGs.length;i++) {
if(aOCGs[i].name == cName) return aOCGs[i];
}
return null;
}
getOCGs 函数是文档的内置功能,当然,当我启动该方法时,会出现以下错误:
this.getOCGs is not a function
我认为这个问题与上下文有关,因为脚本是在单击按钮时启动的,所以this 可能指的是按钮而不是文档。
我尝试了很多组合来从 OCG 中检索文档,但没有成功。我尝试了 document、$doc、doc、Document,但没有。恐怕这不可能,也许我应该尝试在文档级别上传一些代码,但我不知道我是否可以添加一些onchange功能。
这是我迄今为止一直遵循的指南: https://acrobatusers.com/tutorials/create_use_layers
提前致谢
【问题讨论】:
-
不精通 PDF JavaScript,但当我遇到类似问题时,我通常会尝试从事件处理程序中获取信息。我可以猜你在某处有一个调用显示/隐藏字段的 onclick 吗?
-
问题是整个文档是由一个“包装”一切的软件生成的,所以我可以把我的js代码点击按钮,但是我看不到后面的代码!跨度>
-
我明白了。我猜你无法控制
document.addEventListener("click", myfunction(this))?
标签: javascript pdf adobe acrobat