PDFConverter

0
README.md

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

Команда создаёт каталог 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.