Работа с PDF-файлами из 1С
Простое решение для сжатия и обработки PDF
Введение
При разработке решений на платформе 1С часто возникает необходимость работы с PDF-документами. Типичные задачи включают:
- Объединение нескольких файлов
- Извлечение и анализ текстового содержимого
- Сжатие PDF-файлов
При этом важно, чтобы решение было максимально простым в использовании и легко переносилось между различными рабочими машинами, особенно в проектах, где нет возможности администрировать серверы.
Выбор инструмента: Poppler
В качестве основного инструмента была выбрана библиотека Poppler — бесплатное решение с открытым исходным кодом для рендеринга PDF-документов. Poppler предоставляет набор утилит командной строки, которые позволяют:
- Извлекать текст из PDF
- Объединять несколько файлов
- Выполнять другие операции с документами
Интеграция с 1С
В интернете можно найти различные примеры интеграции Poppler с 1С. За основу была взята одна из готовых оберток, которая упрощает работу с утилитами командной строки.
Проблема с кириллицей
Однако в существующих решениях была обнаружена критическая проблема: утилиты командной строки Poppler не корректно обрабатывают русский язык в путях и именах файлов.
Решение проблемы
Для обеспечения стабильной работы в русскоязычной среде (например, с профилем пользователя "Администратор") было добавлено решение через установку текущей рабочей директории:
Если ЗначениеЗаполнено(CurrentDirectory) Тогда
Shell.CurrentDirectory = CurrentDirectory;
КонецЕсли;
Этот подход полностью решает проблемы с кириллицей в путях.
Сжатие PDF-файлов
Актуальность задачи
Сжатие PDF особенно важно при работе со сканированными документами:
- Экономия дискового пространства
- Ускорение отправки файлов по электронной почте
- Оптимизация хранения документов
Поиск решения
Стандартные рекомендации обычно предлагают установку GhostScript, однако этот вариант не подходил из-за сложности развертывания.
После анализа различных решений на разных языках программирования (многие из которых работали нестабильно), был найден проект 4dotsFreePDFCompress на GitHub, который реализует качественное сжатие PDF.
* В коде используется устаревшая библиотека ItextSharp вместо itext. Это не упущение, перевод его на iText снизил качество работы резайзера.
Важно понять - это сжатие за счет сжатия изображений. Идет потеря качества. Но для большинства задач это - самый разумный вариант.
Адаптация решения
Проект был адаптирован следующим образом:
- Код был переписан в виде консольного приложения
- Приложение опубликовано на GitHub: https://github.com/spbdvm
- На основе примеров создана внешняя обработка для 1С
Рекомендации по внедрению
Представленная обработка предназначена для демонстрации процесса. В реальных проектах рекомендуется размещать код из модуля обработки в Общем Модуле для лучшей интеграции с конфигурацией.
Заключение
Данное решение обеспечивает:
- Простую интеграцию с 1С
- Корректную работу с русскими путями и именами файлов
- Эффективное сжатие PDF-документов
- Легкое развертывание без администрирования серверов
- Открытый исходный код и бесплатное использование
Установка
скачиваем и устанавливаем Poppler на сервере, прописываем путь к C:\poppler\bin в PATH
https://github.com/oschwartz10612/poppler-windows/releases/
скачиваем ConsolePDFResizer и копируем эти 5 файлов к C:\poppler\bin
(Можно сделать для них отдельный проект и прописать в PATH но я вижу это скорее как дополнение poppler)
Тестируем обработку. Переносим код в свою продакшн версию.
Проверено на следующих конфигурациях и релизах:
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.184.16
Вступайте в нашу телеграмм-группу Инфостарт