使用JavaScript在Acrobat中导入图像(首选文档级)

Import image in Acrobat using JavaScript (preferred on document-level)

本文关键字:文档 图像 JavaScript Acrobat 导入 使用      更新时间:2023-09-26

我将在adobeacrobat中使用JavaScript实现一个动态图例。

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

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

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

我尝试了这里描述的所有图像导入的可能性:http://pubhelper.blogspot.com.au/2012/07/astuces-toolbar-icons-et-javascript.html。我只有一种方法(将图标转换为十六进制字符串)。这种方法并不好,因为使用其他工具从图像中创建十六进制字符串并将其放入javascript代码中需要做太多的工作。不幸的是,我不能使用其他方法导入图像:(。由于Adobe的安全设置在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:目录层级:用户: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),它不起作用。

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

谢谢你,并致以亲切的问候。亚历克斯

您是否在Acrobat中完全激活了控制台?如果没有,那么这样做并查找您得到的错误消息。

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

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

var myDoc = app.newDoc(1,1)

(您确定要创建一个1x1 pt的文档吗?)

第一个变体的下一个问题是Acrobat中的一个bug,它在保存文档时丢弃"浮动"图标对象;你必须将图标对象附加到一个字段来保存它;

该字段可以隐藏,甚至可以在文档的隐藏模板页面中隐藏。