
PDF-документы могут содержать встроенные сценарии JavaScript, которые выполняют автоматизацию форм, проверку данных и другие интерактивные функции. Для просмотра этих скриптов необходимо использовать программы, поддерживающие редактор PDF с доступом к JavaScript, например, Adobe Acrobat Pro или Foxit PhantomPDF.
В Adobe Acrobat Pro открытие скриптов производится через меню Инструменты → JavaScript → Редактор действий. Здесь отображаются все встроенные функции, триггеры на события документа и код отдельных форм. Для анализа достаточно открыть конкретный элемент формы и просмотреть его скрипт в окне редактора.
Если требуется извлечь скрипты без использования коммерческих программ, можно применять утилиты на основе командной строки, такие как pdf-parser или PDFBox. Эти инструменты позволяют экспортировать объекты PDF и фильтровать их по типу /JavaScript, что упрощает последующий разбор кода.
При работе с PDF-скриптами важно учитывать версию спецификации PDF и ограничение безопасности в ридерах. Например, в Adobe Reader скрипты могут выполняться только в безопасном режиме с ограниченным доступом к файловой системе, поэтому полноценный анализ кода требует использования редактора с полными правами.
Проверка наличия JavaScript в PDF документе
Для обнаружения JavaScript в PDF используется анализ структуры файла, так как скрипты внедряются через объекты `/JavaScript` и `/AA`. Основные инструменты – специализированные PDF-ридеры с поддержкой инспекции объектов и утилиты командной строки.
В Adobe Acrobat Pro последовательность действий следующая:
1. Открыть PDF.
2. Перейти в меню Инструменты → JavaScript → Управление JavaScript.
3. Просмотреть список всех скриптов, включая document-level и page-level.
4. Проверить наличие автоматических действий через Форма → Свойства поля → Действия.
Для анализа вне Adobe Acrobat можно использовать бесплатные утилиты:
| Утилита | Метод | Особенности |
|---|---|---|
| pdf-parser.py | Команда pdf-parser.py --search /JavaScript файл.pdf |
|
| pdfid.py | Команда pdfid.py файл.pdf |
Отображает количество объектов /JavaScript, /AA и /OpenAction, быстро выявляет наличие скриптов |
После обнаружения скриптов рекомендуется сохранить PDF в изолированной среде для безопасного анализа, так как некоторые скрипты могут выполнять вредоносные действия при открытии.
Если требуется выявить скрытые скрипты, следует дополнительно проверять объекты `/Launch`, `/URI` и вложенные объекты `/Annot`. Эти элементы часто используют для выполнения внешних команд или загрузки данных по URL.
Использование Adobe Acrobat для просмотра скриптов

Adobe Acrobat позволяет просматривать встроенные JavaScript скрипты в PDF с точностью до каждого действия. Для доступа к скриптам выполняются следующие шаги:
- Откройте PDF в Adobe Acrobat Pro.
- Перейдите в меню Инструменты → JavaScript → Панель JavaScript. Здесь отображаются все глобальные скрипты документа.
- Для просмотра скриптов, привязанных к конкретным событиям, используйте Форма → Свойства поля → Действия. JavaScript может быть назначен на события: Mouse Up, Mouse Down, Фокус и Выход.
- Для анализа всего кода документа откройте Редактор JavaScript. Здесь доступны все функции, переменные и вызовы событий.
- Используйте функцию Поиск в редакторе для выявления скрытых или динамически генерируемых скриптов, например:
app.alert,this.getField,exportDataObject.
Рекомендации по безопасному просмотру:
- Создавайте резервную копию PDF перед внесением изменений в скрипты.
- Не выполняйте скрипты из ненадёжных источников напрямую, используйте только просмотр кода.
- Обращайте внимание на скрипты, работающие с файловой системой или сетью (
app.launchURL,saveAs), так как они могут быть потенциально опасны. - Используйте фильтры в редакторе для группировки скриптов по полям, страницам и глобальным функциям.
Adobe Acrobat Pro обеспечивает детальный доступ к каждому уровню JavaScript в PDF, что позволяет безопасно анализировать и документировать скрипты для аудита или отладки.
Анализ PDF через сторонние PDF-редакторы
Для анализа JavaScript в PDF-файлах удобно использовать редакторы с поддержкой инспекции внутренних объектов. Adobe Acrobat Pro DCJavaScript через меню «Инструменты» → «Редактирование JavaScript» и просмотреть глобальные скрипты и привязанные к формам действия.
Foxit PDF Editor
PDF-XChange Editor
Для автоматизации проверки скриптов стоит использовать PDF Studio
При работе с редакторами важно проверять версию PDF и наличие AcroForm элементов, так как скрипты могут быть привязаны только к формам. Кроме того, следует анализировать вызовы функций через глобальные объекты this и event, чтобы понять последовательность выполнения кода. Наиболее востребованные инструменты: Рекомендации по работе с утилитами: Комбинированное использование утилит повышает точность анализа: PDFid позволяет быстро найти объекты с JavaScript, pdf-parser.py или PDF Stream Dumper извлекает код для детального изучения, а iText RUPS визуализирует структуру документа. PDF-файлы с JavaScript могут содержать скрипты в формате PDF Object Streams. Для их просмотра необходимо открыть файл через текстовый редактор с поддержкой больших файлов, например, Notepad++, Sublime Text или VS Code. Не используйте стандартные блокноты Windows для файлов более 10 МБ. После открытия PDF ищите секции с ключевыми маркерами JavaScript: Для более точного извлечения скрипта применяйте фильтры по объектам При работе с большими PDF-файлами применяйте функции редактора для выделения колонок и блоков кода. Это ускоряет идентификацию длинных строк и массивов данных, используемых скриптами. Не сохраняйте изменения в исходный PDF до завершения анализа, чтобы избежать повреждения структуры документа. Дополнительно для VS Code можно использовать расширения вроде «Hex Editor» или «PDF JS Viewer», которые упрощают поиск и просмотр встроенного кода без декодирования вручную. Это особенно полезно при анализе PDF с несколькими скриптами и встроенными объектами JavaScript. Перед выполнением JavaScript в PDF важно проанализировать код на наличие потенциально опасных функций. Основное внимание уделяется методам работы с файловой системой, сетевыми запросами и внешними библиотеками, например, `app.openDoc`, `app.launchURL` или `util.readFile`. Эти методы могут использоваться для кражи данных или запуска вредоносного ПО. Используйте статический анализ: откройте PDF в редакторе, поддерживающем просмотр JavaScript, и внимательно изучите все скрипты. Проверяйте наличие нестандартных конструкций, длинных закодированных строк и динамического формирования кода через `eval`, `new Function` или `setTimeout` с текстом кода. Любое использование таких функций повышает риск выполнения вредоносного кода. Для автоматической проверки применяйте инструменты типа PDF.js или специализированные сканеры PDF, которые выявляют подозрительные вызовы API. Рекомендуется отключать выполнение скриптов по умолчанию в настройках PDF-читалок и разрешать только проверенные скрипты, подписанные цифровой подписью. Также важно проверять внешние ресурсы: ссылки на удалённые скрипты или данные могут содержать вредоносный код. Ограничивайте доступ PDF к локальной системе, особенно к документам и папкам пользователя, чтобы минимизировать риск. Любые скрипты с сетевыми вызовами или доступом к файловой системе должны проходить ручную проверку перед запуском. Регулярно обновляйте средства просмотра PDF и антивирусное ПО. Многие уязвимости JavaScript в PDF фиксируются обновлениями читалок, и старые версии часто становятся источником заражений. Комбинация ручного анализа, статических инструментов и обновлённого ПО обеспечивает максимальную защиту при работе с PDF, содержащими скрипты. После извлечения JavaScript из PDF-файла необходимо выбрать подходящий формат для хранения. Рекомендуется сохранять скрипты в текстовые файлы с расширением Для автоматизации процесса используйте специализированные утилиты, такие как PDF Parser или PDF.js. В PDF Parser извлечённые скрипты можно экспортировать через команду Важно сохранять скрипты с оригинальной кодировкой документа. Большинство PDF-файлов используют UTF-8, но встречаются PDF с кодировкой Win1251. Для корректного экспорта укажите кодировку при записи файла: При экспорте нескольких скриптов создавайте отдельные файлы для каждого блока, чтобы упростить последующий анализ и поиск вызовов функций. Рекомендуется именовать файлы по шаблону Для архивирования большого количества извлечённых скриптов используйте форматы Регулярное резервное копирование экспортированных скриптов повышает безопасность данных и позволяет восстановить исходный код при необходимости повторного анализа PDF-файла. Да, можно, но это зависит от используемого PDF-ридера. Некоторые программы, например Adobe Acrobat Reader, позволяют просматривать и редактировать встроенные сценарии JavaScript. В других ридерах доступ к скриптам может быть ограничен или полностью отсутствовать, поэтому для полной работы с ними часто требуется специальное программное обеспечение. Сценарии JavaScript в PDF-файлах могут находиться в различных местах. Чаще всего они встроены как «Document-level JavaScript», который выполняется при открытии документа, или как скрипты, привязанные к определенным кнопкам, формам и интерактивным элементам. Для просмотра их содержимого необходимо открыть панель JavaScript в поддерживаемом ридере. Редактирование скриптов в PDF может быть ограничено защитой документа или отсутствием функции в ридере. Некоторые файлы защищены паролем или запрещают изменение JavaScript. Даже если защита снята, нужно учитывать, что встроенные скрипты имеют доступ только к определенным объектам PDF, и многие функции браузерного JavaScript там недоступны. Для проверки работы скрипта можно использовать консоль JavaScript в PDF-ридере, например в Adobe Acrobat. Там отображаются сообщения об ошибках и результаты выполнения функций. Если скрипт не срабатывает, следует проверить права документа, синтаксис кода и настройки безопасности ридера. Также важно учитывать, что некоторые действия могут блокироваться настройками безопасности программы.Извлечение JavaScript с помощью специализированных утилит

/JS и /JavaScript. Команда для извлечения всех скриптов: pdf-parser.py --search JavaScript file.pdf./JS и /AA, что помогает быстро оценить наличие активного кода.
PDF Stream Dumper, iText RUPS).app.launchURL, eval, util.printf).Чтение кода через текстовый редактор
/JavaScript, /JS или /AA. Эти объекты часто содержат код в шестнадцатеричном или ASCII формате. В Notepad++ рекомендуется включить отображение всех символов и использовать поиск с регулярными выражениями, например, /JS\s*<<.*?>>/s.obj и endobj. Код между этими маркерами может содержать закодированные строки через stream и endstream. Их нужно декодировать, используя FlateDecode или ASCIIHexDecode, чтобы получить читаемый JavaScript.Проверка безопасности скриптов перед запуском
Сохранение и экспорт обнаруженных скриптов

.js, чтобы обеспечить совместимость с редакторами кода и инструментами анализа.extractJS, указав путь к целевой директории. PDF.js позволяет сохранять скрипты через консоль браузера: выделенный код можно записать в локальный файл с помощью fs.writeFile в Node.js.fs.writeFile('script.js', content, 'utf8') или используйте библиотеку iconv-lite для преобразования.script_номер.pdf_номер.js, где первый номер – позиция PDF, второй – последовательность скрипта в документе..zip или .tar.gz. Это упрощает передачу данных и предотвращает случайное повреждение файлов. В командной строке Linux архив создаётся через zip -r scripts_archive.zip ./scripts/, а в Windows – через PowerShell: Compress-Archive -Path .\scripts\* -DestinationPath scripts_archive.zip.Вопрос-ответ:
Можно ли просмотреть JavaScript в PDF без установки дополнительного ПО?
Где в PDF-файле обычно находятся скрипты JavaScript?
Какие ограничения есть при редактировании JavaScript в PDF?
Как понять, выполняется ли скрипт в PDF и где искать ошибки?
