【问题标题】:Import image in Acrobat using JavaScript (preferred on document-level)使用 JavaScript 在 Acrobat 中导入图像(文档级首选)
【发布时间】:2014-08-15 08:30:08
【问题描述】:

我将在 Adob​​e Acrobat 中使用 JavaScript 实现动态图例。

文档包含很多层。每一层都有自己的图例。最初的想法是实现图例,使其在可见图层的对话框中包含图像。

我只能通过在文档级别将 state 设置为 false 或 true (this.getOCGs()[i].state = false;) 来隐藏/显示图层。

问题 1:我可以从图层中提取数据以建立图例吗?我认为没有,因为我们在层上只有这些函数:getIntent()、setIntent() 和 setAction()。对?因此我决定这样安排,每个图层所需的所有图标都保存在具有相应名称的文件夹中。 JavaScript 应该导入图标,然后我用可见图层的图标构建一个对话窗口并放置一个文本(此图标的描述)。

我尝试了此处描述的所有图像导入可能性:http://pubhelper.blogspot.com.au/2012/07/astuces-toolbar-icons-et-javascript.html。我只有一种方法(将图标转换为十六进制字符串)。这种方式不好,因为使用其他工具从图像中创建十六进制字符串并将其放入 javascript 代码中的工作量太大。 不幸的是,我无法使用其他方法导入图像:(。由于 Adob​​e 中的安全设置在版本 7 左右之后发生了更改,因此无法使用 app.newDoc、app.openDoc 之类的功能,甚至 app.getPath 在文档级别. 我决定使用这样的受信任函数在文件夹级别实现导入:

变体 1:

var importImg = app.trustedFunction(function() {
app.beginPriv();
var myDoc = app.newDoc({
    nWidth: 20,
    nHeight: 20
});

var img = myDoc.importIcon("icon", "/icon.png", 0);
app.endPriv();
return img;   });  
var oIcon = importImg();

Preferences->JavaScript-> JavaScript Security中的设置被禁用(启用菜单项JS执行权限,启用全局对象安全策略) NotAllowedError:安全设置阻止访问此属性或方法。 App.newDoc:109:Folder-Level:User:acrobat.js

变体 2:

var importImg = app.trustedFunction(function() {
var appPath = var phPath = app.getPath({
    cCategory: "user",
    cFolder: "javascript"
});

try {

    app.beginPriv();
    var doc = app.openDoc({
        cPath: phPath + "/icon.png",
        bHidden: true
    });
     app.endPriv();
} catch (e) {
    console.println("Could not open icon file: " + e);
    return;
}

    var oIcon = util.iconStreamFromIcon(doc.getIcon("icon"));
return oIcon;});
var oIcon = importImg();

无法打开图标文件:NotAllowedError:安全设置阻止访问此属性或方法。

至少它允许执行所有这些函数,如 app.newDoc,但在第二个变体中,它说,内容范围错误左右。也许这里是来自创建的图像的 pdf 错误?我只是把图像打印成pdf。

我用 .jpg、.png、.pdf 尝试了所有这些可能性。不同尺寸(大图像和 20x20),它不起作用。

有人可以帮助我吗,因为我花了很多时间尝试不同的可能性。在文档级别实现上述主要目标实际上会更好,这可能吗?

谢谢你和亲切的问候, 亚历克斯

【问题讨论】:

    标签: javascript adobe acrobat adobe-javascript


    【解决方案1】:

    您是否在 Acrobat 中完全激活了控制台?如果没有,请执行此操作并查找您收到的错误消息。

    第一个变体不起作用,因为 myDoc 没有定义(除非您在调用 importImg 函数之前已经这样做了)。

    如果要将图像导入新创建的文件,则必须引用使用 newDoc() 创建的文档对象。实际上,这将链接到 myDoc,如

    var myDoc = app.newDoc(1,1)
    

    (您确定要创建尺寸为 1x1 pt 的文档吗?)

    第一个变体的下一个问题是 Acrobat 中的一个错误,它在保存文档时会丢弃“浮动”图标对象;您必须将图标对象附加到字段以保留它;此字段可以隐藏,甚至可以隐藏在文档中的隐藏模板页面上。

    【讨论】:

    • 感谢您的提示,我更改了它,但没有帮助。错误是:NotAllowedError:安全设置阻止访问此属性或方法。检查上面的代码,我改变它,因为它必须是。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 2023-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多