用JS检索和操作交互式PDF文档

Retrieving and manipulating interactive PDF document with JS

本文关键字:交互式 PDF 文档 操作 JS 检索      更新时间:2023-09-26

我在为一个朋友工作,他需要操作一个具有以下需求的交互式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

Thanks in advance

尝试调用'event.target.doc.getOCGs()',而不是'this.getOCGs()'。

在某个文件夹级javascript文件中定义的函数中,'this'是未定义的。调用函数应该将Doc传递给该级别的任何需要它的函数。

Doc对象通常可以通过事件对象访问,事件对象是为执行JavaScript的每个事件创建的:●对于鼠标,聚焦,模糊,计算,验证和格式化事件,事件。target返回启动事件的Field对象。然后可以通过Field对象的Doc方法访问Doc对象。