1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/spencercjh-myHtmlToPdfImage

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Динамическое создание HTML и генерация PDF и изображений

Проект основан на ссылке, но исправлены проблемы с использованием в Linux (исходный проект не корректно работает в Linux). Также используется Apache PdfBox для преобразования сгенерированных PDF-файлов в PNG-изображения, что решает проблему слишком больших изображений, созданных с помощью wkhtmltoimage. Вместо того чтобы выполнять дополнительное сжатие изображений, PDF используется как готовый формат, соответствующий бизнес-требованиям.

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

Описание проекта

  • /html2file — каталог вывода файлов проекта;
  • /plugin — расположение wkhtmltox, который используется для генерации PDF;
  • /html, /image, /pdf — каталоги для хранения сгенерированных файлов трёх типов;
  • description.html — документ, созданный с использованием wkhtmltopdf--helpdoc;
  • src/main/java/top/spencercjh/controller#getCert(String data) — моя бизнес-логика, которая заменяет данные, переданные из интерфейса, в template.html;
  • MyService MyServiceImpl — моя бизнес-логика: замена данных в шаблоне template.html данными, переданными из интерфейса;
  • top.spencercjh.config.WebConfig — конфигурация фильтра, позволяющая пользователям получать доступ к сгенерированным ресурсам.

Интерфейс

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 )

Вы можете оставить комментарий после Вход в систему

Введение

Бизнес-логика: входящие параметры —> генерация HTML —> создание PDF —> формирование изображения. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/spencercjh-myHtmlToPdfImage.git
git@api.gitlife.ru:oschina-mirror/spencercjh-myHtmlToPdfImage.git
oschina-mirror
spencercjh-myHtmlToPdfImage
spencercjh-myHtmlToPdfImage
master