PDF JavaScript не работает в Adobe Reader DC, но во всех других программах чтения

Я не могу заставить мой pdf работать в Интернете с Adobe Reader DC.

http://www.okeechobeecountytaxcollector.com/Documents/FeeCalculatorRev0909.pdf

Ни одна из кнопок или функциональность не работает. (Например, когда вы нажимаете "Автомобили", "Мобильные дома" или любую из этих кнопок в верхней части, должен появиться выпадающий список). Но если я открою в любом другом считывателе, он будет работать нормально. Кто-нибудь знает, как я могу редактировать документ для правильной работы в Adobe Reader DC? Есть ли в документе какие-либо настройки или что-то, что вы должны изменить для работы в DC?

Я попытался изменить настройки в разделе безопасности на Acrobat X и более поздние версии, но это тоже не помогло.

1 ответ

Решение

После проверки вашего PDF-документа в отладчике Adobe DC JavaScript, я боюсь, что выдается только целая куча синтаксических ошибок. Когда вы исправляете один набор синтаксических ошибок, появляется новый набор синтаксических ошибок. Из того, что я могу сказать (кто-то может надеяться подтвердить это), является то, что интерпретаторы JavaScript в более старых версиях Adobe менее строги в том, как они интерпретируют язык, поэтому ваши формы работают в более старых версиях, но их останавливает последние переводчики в Acrobat DC.

Когда я проверяю JavaScript, который выдает ошибки, я не только замечаю, что Adrobat DC действительно хочет, чтобы вы заканчивали свои операторы JavaScript точками с запятой (что ваш код делает некоторое время), но я также нахожу очень странные конструкции, некоторые заставили бы меня поверить, что даже если ваши формы технически не выдают никаких ошибок в более старых версиях Acrobat, вы можете обнаружить, что формы на самом деле не работают должным образом в более старых версиях.

Итак, чтобы исправить эти ошибки и заставить ваши формы работать в Adobe Acrobat DC, вам нужно будет очистить все возникающие ошибки, что означает перенос (обновление) вашего стиля кодирования в соответствии с новым уровнем строгости в Acrobat. Время выполнения DC.

Например, когда я впервые открываю вашу форму с помощью отладчика JavaScript в Acrobat DC, я получаю следующие перечисленные ошибки:

    Ошибка синтаксиса: отсутствует; до заявления
121: Уровень документа:CreditCalcException в строке 5 функции top_level, скрипт Page-Actions:Page1: Открытие страницы:Action4
ReferenceError: Loaded не определено
5: Действия страницы: Страница 1: Открытие страницы: Исключение Action4 в строке 2 функции top_level, скрипт AcroForm:LoadCountyLock:Annot1:OnBlur:Action1
ReferenceError: FormNumber не определен
2:AcroForm:LoadCountyLock:Annot1:OnBlur:Action1Exception в строке 10 функции top_level, сценарий AcroForm:ButtonMonth1.3.0:Annot1:MouseUp:Action2
ReferenceError: MonthsNumber не определен
10:AcroForm:ButtonMonth1.3.0:Annot1:MouseUp:Action2Exception в строке 10 функции top_level, сценарий AcroForm:ButtonMonth1.0.0:Annot1:MouseUp:Action2
Исключение в строке 10 функции top_level, скрипт AcroForm:ButtonMonth1.1.0:Annot1:MouseUp:Action2
ReferenceError: MonthsNumber не определен
10:AcroForm:ButtonMonth1.0.0:Annot1:MouseUp: Мотор2
Ошибка синтаксиса: отсутствует; до заявления
121: Документ-Level:CreditCalc
Ошибка синтаксиса: отсутствует; до заявления
121:
Ошибка синтаксиса: отсутствует; до заявления
121:
Ошибка синтаксиса: отсутствует; до заявления
121:
Ошибка синтаксиса: отсутствует; до заявления
121:
Ошибка синтаксиса: отсутствует; до заявления
121:
Ошибка синтаксиса: отсутствует; до заявления
121:
Ошибка синтаксиса: отсутствует; до заявления
121:
Ошибка синтаксиса: отсутствует; до заявления
121:
Ошибка синтаксиса: отсутствует; до заявления
121:
Ошибка синтаксиса: отсутствует; до заявления
121:
Ошибка синтаксиса: отсутствует; до заявления
121:
Ошибка синтаксиса: отсутствует; до заявления
121:
Ошибка синтаксиса: отсутствует; до заявления
121:
Ошибка синтаксиса: отсутствует; до заявления
121:
Ошибка синтаксиса: отсутствует; до заявления
121:
Ошибка синтаксиса: отсутствует; до заявления
121:
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
77:AcroForm:DynolistHS:Annot1:MouseUp: Мотор2
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56:
SyntaxError: класс является зарезервированным идентификатором
56:
SyntaxError: класс является зарезервированным идентификатором
56:
SyntaxError: класс является зарезервированным идентификатором
56:
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа: SVCFees
Ошибка синтаксиса: отсутствует; до заявления
121:
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
56: на уровне документа:SVCFees
SyntaxError: класс является зарезервированным идентификатором
138:AcroForm:DynolistVehicle:Annot1:MouseUp:Action1

введите описание изображения здесь

Обратите внимание, что у вас есть все эти ошибки, такие как:

    SyntaxError: класс является зарезервированным идентификатором
    Ошибка синтаксиса: отсутствует; до заявления

Это хорошие показатели того, что новый интерпретатор JavaScript в DC поддерживает JS на более высоком уровне и использует новые языковые функции, такие как classключевое слово, и навязывая соглашение, что точки с запятой должны использоваться для завершения операторов.

Когда вы продолжаете щелкать по PDF-файлу, отладчик JavaScript начинает жаловаться на еще большее количество ошибок тем же способом (пропущенные точки с запятой, функции, которые не определены и т. Д.), Поэтому исправление одной проблемы только открывает дыру другого кролика в дополнительных, но идентичных проблемах.

Поэтому я бы сказал, что самый быстрый путь к обновлению и подготовке этой формы для последней версии DC - это пройтись по вашим сценариям и применить некоторые соглашения или ограничения, чтобы начать очистку синтаксиса (завершение всех операторов точкой с запятой и т. Д.). После того, как вы очистите синтаксис, интерпретатор JavaScript, вероятно, начнет находить объявления функций, которые он не мог найти раньше (из-за того, что рассматривал неверный синтаксис), что (надеюсь) прояснит "функцию не определена". "ошибки.

Кроме того, я бы просто сделал несколько общих тестов, чтобы ваши формы работали так, как вы хотите, потому что я вижу странный JavaScript, такой как этот пример, взятый из CreditCalc функция:

введите описание изображения здесь

Обратите внимание, что разрыв между строками 123 а также 125? Это странный на мой взгляд JavaScript, и из того, что я вижу, код, который находится в этом "плавающем" объекте в строке 125, никогда не попадет в цель, он просто существует, но никогда не будет служить цели, это должно быть страшно для вас.

Странные конструкции, подобные этой, плавают по всем вашим сценариям, наряду с другими ошибками, которые потенциально могут привести к непредвиденным поведениям, таким как использование != 0 вместо !== 0,

Поэтому я боюсь, что здесь нет простого ответа, вам, вероятно, придется провести большую очистку, прежде чем Acrobat DC позволит вам запустить эту форму.

Другие вопросы по тегам