PDFConverter
Описание
Языки
- Java85,5%
- HTML14,5%
PDFConverter - сервис конвертации HTML в PDF/A-1 для 1С:Медицина
Сервис выполняет конвертацию из XHTML и HTML5 в PDF/A-1, пригодный для регистрации в РЭМД ЕГИСЗ. Для конвертации используется проект openhtmltopdf. См. описание на странице https://github.com/openhtmltopdf/openhtmltopdf.
Сервис реализован как сервлет для веб сервера Jetty версии 9.4.
Описание веб-ссылок
/send_file.html - форма отправки XHTML или HTML5 для выполнения конвертации
Не поддерживаются JS скрипты в HTML. Рекомендуется использовать XHTML как более производительный парсер. В HTML должен быть указан шрифт, так как в openhtmltopdf нет шрифта "по умолчанию". Пример:
В качестве файла для конвертации можно передавать HTML-документ, либо zip-архив. В архиве должен содержаться файл с описанием архива description.json, который задает последовательность файлов в результирующем pdf-документе и их заголовками, а также соответствующий набор HTML-документов. Заголовки документов будут использоваться для формирования закладок в результирующем pdf-документе. Пример description.json:
В стилях необходимо использовать только те шрифты, которые предварительно загружены в папку DATA_PATH. Можно использовать шрифты mscorefonts2. В логах работы openhtmltopdf (см. ниже) можно увидеть загруженные шрифты.
На форме можно указать параметр Колонтитул, строка заданная в этом параметре будет добавляться в качестве нижнего колонтитула для страниц результирующего PDF-документа.
На форме можно указать ключ, по которому сервлет сохранит логи работы openhtmltopdf. При открытии лога с этим ключом производится удаление лога.
ВАЖНО! В случае если ключ был указан, то вызов просмотра лога по ключу является обязательным! Отсутствие вызова просмотра лога приведет к утечке памяти в сервисе.
/log_XXXXX - просмотр лога
XXXXX - ключ, который был передан при запуске конвертации. После открытия лога ключом производится удаление этого лога.
/convertStrictHtml - Конвертация в PDF/A-1 одного XHTML или набора XHTML (заархивированных в zip)
Запуск конвертации файла, переданного в форме. Если в форме передан ключ лога, то включается запись логов. В случае фатальной ошибки формирования pdf возвращается файл нулевого размера. В этом случае причина ошибки будет в логе как "WARNING Unhandled exception ...".
/convertStrictHtmlBase64 - конвертация в PDF/A-1 группы XHTML (заархивированных в zip, закодированных в Base64)
Запуск конвертации набора файлов, переданного в форме zip-архива, закодированного в Base64. Если в форме передан ключ лога, то включается запись логов. В случае фатальной ошибки формирования pdf возвращается файл нулевого размера. В этом случае причина ошибки будет в логе как "WARNING Unhandled exception ...".
/convertHtml5 - Конвертация в PDF/A-1 одного HTML5 или набора HTML5 (заархивированных в zip)
Запуск конвертации файла, переданного в форме. Если в форме передан ключ лога, то включается запись логов. В случае фатальной ошибки формирования pdf возвращается файл нулевого размера. В этом случае причина ошибки будет в логе как "WARNING Unhandled exception ...".
/convertHTML5Base64 - конвертация в PDF/A-1 группы HTML5 (заархивированных в zip, закодированных в Base64)
Запуск конвертации набора файлов, переданного в форме zip-архива, закодированного в Base64. Если в форме передан ключ лога, то включается запись логов. В случае фатальной ошибки формирования pdf возвращается файл нулевого размера. В этом случае причина ошибки будет в логе как "WARNING Unhandled exception ...".
Папка src/main
Содержит исходный код. Для сборки проекта необходимо выполнить команду
в папке, где расположен файл pom.xml. Подробнее о Maven можно найти на странице https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html.
Параметры сервлета
В файле PdfConverter.war:\WEB-INF\web.xml задаются следующие параметры:
- DATA_PATH - полный путь к папке, где хранятся TrueType шрифты, используемые для формирования PDF/A-1. Значение по умолчанию - /var/www/upload/PDFConverter. Openhtmltopdf поддеживает только TrueType шрифты. Можно использовать шрифты Microsoft's TrueType Core Fonts или Google Fonts.
- BASE_FONT - имя файла с ttf-шрифтом, который будет использоваться для формирования колонтитулов в результирующем PDF-документе. Значение по умолчанию Arial.TTF.
- BASE_FONT_SIZE - размер шрифта, который будет использоваться для формирования колонтитулов в результирующем PDF-документе. Значение по умолчанию 10.
Установка
Для работы сервлета PdfConverter.war нужен веб-сервер и контейнер сервлетов Jetty версии 9.4. Сервлет доступен к загрузке на странице https://gitverse.ru/1CMedicine/PDFConverter.
Установка на Ubuntu 24.04
- Файл PdfConverter-1.2.war необходимо поместить в папку /var/lib/jetty9/webapps.
- В этой же папке необходимо разместить файл PdfConverter.xml со следующим содержимым:
- убедиться, что оба файла доступны для чтения пользователю jetty.
- Скачать Microsoft's TrueType Core Fonts или Google Fonts и скопировать их в папку /var/www/upload/PDFConverter (необходимо убедиться, что к файлам имеет доступ пользователь jetty). Инструкцию по получению Microsoft's TrueType Core Fonts можно найти на странице https://its.1c.ru/db/metod8dev/content/5953/hdoc на шаге номер 5 раздела "Установка платформы в RPMS на примере CentOS 7".
- Отвечать сервлет будет по ссылке http:/localhost:8080/PDFConverter/send_file.html.
- Для записи логов jetty необходимо подключить модуль console-capture. Это этого в файле /etc/jetty9/start.ini надо добавить команду его загрузки
Установка в Windows
- Установить Java Runtime Environment (JRE). Например, Liberica JRE или OpenJDK.
- Скачать дистрибутив Jetty 9 в формате ZIP со страницы. Прямая ссылка на дистрибутив - https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.58.v20250814/jetty-distribution-9.4.58.v20250814.zip
- Создать папки c:/jetty-home, c:/jetty-base.
- Распаковать файл jetty-distribution-9.4.58.v20250814.zip в c:/jetty-home. Так чтобы получились пути c:/jetty-home/bin, c:/jetty-home/etc и т.д.
- В командной строке выполнить команду
Команда создаёт каталог c:\jetty-base\webapps, в который нужно поместить файл PdfConverter-1.2.war и файл PdfConverter.xml со следующим содержимым:
- Скачать Microsoft's TrueType Core Fonts или Google Fonts и скопировать их в папку c:/ttf. Инструкцию по получению Microsoft's TrueType Core Fonts можно найти на странице https://its.1c.ru/db/metod8dev/content/5953/hdoc на шаге номер 5 раздела "Установка платформы в RPMS на примере CentOS 7".
- В файле PdfConverter-1.2.war:\WEB-INF\web.xml необходимо в параметре DATA_PATH указать папку, где хранятся шрифты. Получится следующее содержимое PdfConverter-1.2.war:\WEB-INF\web.xml:
- Запустить сервер Jetty с помощью команды:
-
Отвечать сервлет будет по ссылке http:/localhost:8080/PDFConverter/send_file.html.
-
В консоли, где запущен сервер, будет выведена примерно следующая информация:
В лог файле C:\jetty-base\logs\2025_11_18.jetty.log будет следующая информация (пример):
-
Остановить сервер можно с помощью Ctrl+C в командной строке.
-
Порт веб сервера можно изменить в файле C:\jetty-base\start.ini, параметр jetty.http.port.