Как реализовать поиск текста в многостраничном PDF и сохранение найденных страниц средствами 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Работа с PDF-документами внутри платформы 1С:Предприятие часто ставит перед разработчиками сложные задачи. Поскольку PDF является сложным бинарным форматом, 1С не имеет встроенных нативных методов для глубокого анализа структуры документа, разбивки его на страницы или извлечения текста из «нетекстовых» слоев. Рассмотрим, как эффективно решить задачу поиска фрагмента текста на каждой странице и сохранения нужных страниц в отдельные файлы.

Понимание проблемы: почему не стоит использовать ЧтениеТекста?

Многие начинающие разработчики пытаются использовать объект ЧтениеТекста для обработки PDF. Важно уяснить: это приведет к ошибке или получению нечитаемого набора символов. PDF — это не просто текст, а сложная структура объектов, сжатых данных и кодировок. Для качественной работы нам потребуется архитектурное решение с привлечением специализированного консольного ПО.

Выбор инструментов для обработки PDF

Для решения нашей задачи мы будем использовать связку из двух мощных инструментов, которые позволяют «подружить» 1С с файлами PDF:

  1. QPDF — идеальный инструмент для манипуляции структурой документа. Он быстро и надежно разрезает многостраничный файл на отдельные файлы страниц, сохраняя целостность данных даже в защищенных документах.
  2. Ghostscript — движок, который может потребоваться в тех случаях, если текст в документе представлен в виде растровых изображений или требуется сложная конвертация содержимого для последующего анализа.

Алгоритм реализации решения по шагам

Разберем процесс автоматизации по этапам, следуя логике взаимодействия 1С с внешними утилитами.

Шаг 1: Подготовка инструментов

Чтобы не требовать от пользователей сложной установки ПО на каждый компьютер, мы можем включить утилиты в конфигурацию. Создайте в 1С Макет типа «Двоичные данные» и загрузите туда архив с нужной утилитой (например, qpdf). Это позволит нам разворачивать инструмент во временную папку «на лету».

Шаг 2: Реализация нарезки страниц

После распаковки архива во временный каталог (используйте КаталогВременныхФайлов()), мы будем запускать QPDF через системную команду. Рассмотрим пример вызова:


Команда = \"qpdf --split-pages infile.pdf %d-out.pdf\";
ЗапуститьПриложение(Команда, , Истина, КодВозврата);

После выполнения этой команды исходный файл будет разбит на набор файлов: 1-out.pdf, 2-out.pdf и так далее. Это значительно упрощает последующий поиск.

Шаг 3: Поиск фрагмента текста

Когда страницы разделены, нам нужно найти требуемый фрагмент в каждой из них. Если PDF содержит текстовый слой, мы можем использовать Ghostscript для извлечения текста в обычный текстовый файл, который уже легко анализируется средствами 1С.

Пример команды для Ghostscript:

gs -sDEVICE=txtwrite -o output.txt input.pdf

После этого мы используем стандартный объект ЧтениеТекста для поиска нужной фразы в полученном output.txt.

Рекомендации по безопасности и эксплуатации

Таким образом, комбинируя возможности 1С по управлению процессами и мощь специализированных консольных утилит, мы можем успешно решать задачи автоматизированной обработки документов любой сложности.

← На главную