Импортировать изображение в Acrobat с помощью JavaScript (предпочтительно на уровне документа)
Я собираюсь реализовать динамическую легенду, используя JavaScript в Adobe Acrobat.
Документ содержит много слоев. У каждого слоя есть своя легенда. Идея источника заключается в том, чтобы реализовать легенду так, чтобы она содержала изображения в диалоговом окне для видимых слоев.
Я могу только скрыть / показать слои, установив в состояние состояние 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();
Параметры в меню "Настройки" -> "JavaScript" -> "Защита JavaScript" отключены (Включить права выполнения пункта JS, включить глобальную политику безопасности объектов) NotAllowedError: Настройки безопасности запрещают доступ к этому свойству или методу. App.newDoc:109: Папка-Level: Пользователь: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), это не работает.
Может ли кто-нибудь мне помочь, так как я потратил много времени, пробуя разные возможности. На самом деле было бы лучше реализовать основную цель, описанную выше, на уровне документов, возможно ли это?
Спасибо и всего наилучшего, Алекс
1 ответ
У вас есть консоль полностью активирована в Acrobat? Если нет, сделайте это и поищите полученные сообщения об ошибках.
Первый вариант не работает, потому что myDoc не определен (если вы не сделали этого до вызова функции importImg).
Если вы хотите импортировать изображение во вновь созданный файл, вам нужно будет сделать ссылку на объект документа, который вы создаете с помощью newDoc(). На самом деле, это сделало бы ссылку на myDoc, как в
var myDoc = app.newDoc(1,1)
(Вы уверены, что хотите создать документ размером 1x1 pt?)
Следующая проблема с первым вариантом - это ошибка в Acrobat, которая отбрасывает "плавающие" объекты Icon при сохранении документа; вам нужно прикрепить объект Icon к полю, чтобы сохранить его; это поле может быть скрыто или даже на скрытой странице шаблона в документе.