Я работаю для друга, которому нужно манипулировать интерактивным PDF-файлом со следующими потребностями: есть 2 основных «слоя» и 2 кнопки. Когда я нажимаю кнопку1, отображается только слой1, когда я нажимаю кнопку2, слой2 является единственным видимым.Получение и обработка интерактивного документа PDF с помощью JS
Он может загружать 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, без везения. Я пробовал документ, $ doc, doc, Document, но ничего. Я боюсь, что это даже не возможно, может быть, я должен попытаться загрузить некоторый код на уровне документа, но я не знаю, могу ли я добавить некоторые функции onchange
.
Это руководство я следовал до сих пор: https://acrobatusers.com/tutorials/create_use_layers
Заранее спасибо
Непрофессиональный JavaScript в формате PDF, но когда я сталкиваюсь с подобными проблемами, я обычно пытаюсь получить информацию от обработчика событий. Могу ли я угадать, что у вас есть onclick где-нибудь, вызывающее поле show/hide? – Fylax
Проблема в том, что весь документ генерируется программным обеспечением, которое «обертывает» все, поэтому я могу просто поместить мой js-код, нажимая на кнопку, но у меня нет видимости кода! – lateralus
Я вижу. Думаю, у вас нет контроля над 'document.addEventListener (« click », myfunction (this))'? – Fylax