Динамическое создание HTML и генерация PDF и изображений
Проект основан на ссылке, но исправлены проблемы с использованием в Linux (исходный проект не корректно работает в Linux). Также используется Apache PdfBox для преобразования сгенерированных PDF-файлов в PNG-изображения, что решает проблему слишком больших изображений, созданных с помощью wkhtmltoimage. Вместо того чтобы выполнять дополнительное сжатие изображений, PDF используется как готовый формат, соответствующий бизнес-требованиям.
С помощью строковых конкатенаций предоставляется помощь пользователям в объединении необходимых параметров для wkhtmltopdf, избегая лишних сложностей.
Описание проекта
Интерфейс
POST: /getCert
Request Parameter:
{
"userId": "spencercjh",
"certificate": [
"经链证算法检验数据对象为安全,未经篡改",
"y3dP63zF2BYyRBfYBg6ECLUlGkV6usPC",
"XXX链证平台",
"上链证书",
"MD5+SHA512",
"基于wkhtmltopdf和PDFBOX的Html转PDF图片工具.git",
"cX4MpCXmY5nauwHaZx6WDbXYNDcCU9f9gUjIgkrKaBysviaCgpekvE4Gw7Sf8GV6",
"2018年12月9日",
"gK4KYq1iBMbEbai0NnZXjmbV2aqUxQXvLGoWrsBYne5KLMLzQ16hHLfB5aW0GCa2",
"GVZESwAmsfrR18nbi5vHnX4hqHIfLFXn"
],
"option": {
"margin-bottom": "0",
"margin-left": "0",
"margin-right": "0",
"margin-top": "0",
"page-height": "125",
"page-width": "88"
}
}
Объяснение: certificate соответствует 10 полям, которые необходимо заменить в template.html, option — это параметры, которые должны быть добавлены в команду, единицы измерения — миллиметры.
margin-bottom: устанавливает нижний отступ страницы; margin-left: устанавливает левый отступ страницы (по умолчанию 10 мм); margin-right: устанавливает правый отступ страницы (по умолчанию 10 мм); margin-top: устанавливает верхний отступ страницы; page-height: высота страницы; page-width: ширина страницы.
После прочтения description.html при необходимости дополнительных параметров рекомендуется создать issue.
Response:
{
"pdfPath": "D:/test/html2file/pdf/20181209/7bd88f09857042b8bed411c8604a44f4.pdf",
"imagePath": "D:/test/html2file/image/20181209/3d8671f74e4342519e272244b91be3bf.png"
}
Объяснение: возвращает два URI, к которым можно получить доступ с хоста. Например, при запуске на локальном хосте URL-адрес изображения будет выглядеть следующим образом: localhost:8090/image/dce4774314f44b95a6a19ff9df268076.png
, а PDF — аналогично.
Развёртывание
Если SSL не требуется, удалите или закомментируйте следующие строки в application.properties:
server.ssl.key-store-password=1523355275441 server.ssl.key-store=1523355275441.pfx server.ssl.key-store-type=PKCS12
В противном случае приложение не будет работать должным образом.
Для настройки SSL измените указанные выше поля и поместите файл ключа в соответствующее место.
Windows
Переместите папку html2file в нужное место и измените следующие настройки в application.properties:
windows-template-path=D:/test/html2file/template.html windows-output-html-path=D:/test/html2file/html/ windows-output-image-path=D:/test/html2file/image/ windows-output-pdf-path=D:/test/html2file/pdf/ windows-plugin-path=D:/test/html2file/plugin/window/wkhtmltopdf/bin/wkhtmltopdf
По умолчанию в операционной системе Windows используется кодировка GB2312, тогда как в разработке используется UTF-8. Автор уже предпринял значительные усилия для решения этой проблемы. Если вы запускаете SpringBoot проект непосредственно в IDEA, я могу гарантировать, что весь процесс будет использовать UTF-8 и результаты будут без искажений.
Однако если вы используете java -jar html2Pdf-2.0-SNAPSHOT.jar для развёртывания Jar-файла на Windows, сгенерированные файлы всё равно могут содержать искажения, и автор не может решить эту проблему. Если у вас есть решение, пожалуйста, свяжитесь со мной.
Linux
Переместите папку html2file в нужное место и измените следующие настройки в application.properties:
linux-template-path=/root/html2file/template.html linux-output-html-path=/root/html2file/html/ linux-output-image-path=/root/html2file/image/ linux-output-pdf-path=/root/html2file/pdf/ linux-plugin-path=/root/html2file/plugin/linux/wkhtmltox/bin/wkhtmltopdf
Обычно вы не сможете успешно запустить проект напрямую [ссылка].
Окружение: vi /etc/profile, добавьте в конце: export PATH=ваш путь к папке html2file/plugin/linux/wkhtmltox/bin:$PATH, сохраните и выйдите, затем выполните source /etc/profile.
Установите необходимые графические библиотеки: apt-get/yum install libXrender* apt-get/yum install libfontconfig* apt-get/yum install libXext*
Настройте серверные шрифты [ссылка]:
установите пакет шрифтов: yum -y install fontconfig;
убедитесь, что в /usr/shared/ есть папки fonts и fontconfig. В каталоге /fonts:
mkdir chinese
Необходимо загрузить некоторые китайские шрифты;
Изменить права доступа каталога chinese:
chmod -R 755 /usr/share/fonts/chinese
Установить ttmkfdir для поиска информации обо всех шрифтах в каталоге и создания сводного файла fonts.scale с помощью команды:
yum -y install ttmkfdir
Выполнить:
ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir
Изменить файл конфигурации шрифтов:
vi /etc/fonts/fonts.conf
В разделе Fort directory list
добавить:
<dir>/usr/share/fonts/chines</dir>
, сохранить и выйти.
Обновить кэш шрифтов в памяти:
fc-cache
После выполнения fc-list
можно увидеть китайские символы и китайские шрифты.
Вы можете выбрать развертывание этого проекта Spring Boot в виде jar-файла или tomcat + War пакета на сервере Linux. Здесь описывается способ развертывания в виде jar-пакета — ссылка.
Команда:
nohup java -jar html2Pdf-2.0-SNAPSHOT.jar > log.txt &
Это позволит успешно развернуть проект и создать файл журнала log.txt.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )