我将在 Adobe 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 代码中的工作量太大。不幸的是,我无法使用其他方法导入图像:(。由于 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: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),它不起作用。
有人可以帮助我,因为我花了很多时间尝试不同的可能性。在文档级别实现上述主要目标实际上会更好,这可能吗?
谢谢你和亲切的问候,亚历克斯