Инструмент массового производства электронных документов для сложных сценариев отображения и комбинирования шаблонов.## Проблемы проекта Вдохновлен внутренним проектом крупной компании. Проблемы были выявлены в процессе реализации проекта:
Начиная с концептуального дизайна проекта 2019 года, работа шла периодически. Также были сделаны попытки повторного тестирования и модификации. В ходе проекта возникло много новых требований, особенно в разных провинциях, где личный стиль может иметь различные требования, а также различия в содержании, если тип продуктов многообразен, снова требуется личная настройка, что приведёт к увеличению уровня растущих шаблонов. Необходимость изменения в проекте, если шаблон слишком многочислен, процесс изменения будет болезненным и легко пропущен. Поэтому постоянно проводятся тесты, чтобы охватить все точки запроса, используя метод конфигурации для упрощения удовлетворения различных потребностей.## Цели
Масштабируемость, гибкость, низкий уровень кодирования;
На основе вышеуказанной цели осуществляется иерархическая разработка, поглощение и поэтапное изменение личных требований, тем самым снижается количество шаблонов.
Через трехуровневую структуру данных, элементов и шаблонов через конфигурирование возможно решить бизнес-сценарии, вместо жесткого кодирования.
В заключении: триединство, динамическое конфигурирование множества адресов бизнес-сценариев для различных случаев:
## Реализация управления дизайном на основе набора инструментов
Есть некоторые статьи для тестирования передачи PDF через веб, где проверяются некоторые открытые компоненты преобразования. На самом деле, в большинстве сценариев документальный класс не требует аналогичной веб-страницы со сложными требованиями к стилю. Веб-сайты содержат множество динамических скриптов JS (и некоторые веб-страницы не обязательно следуют спецификациям HTML), даже если это так, можно реализовать через поддержку других тегов. Документальный класс не нуждается в аналогичной логике обработки JS и динамическом эффекте.## Концепция Rayin
Правила данных служат вспомогательным инструментом для конвертации данных, обычно если данные не соответствуют требованиям генерируемой системы или для некоторых специальных бизнес-потребностей, могут быть преобразованы с помощью скрипта правил данных. Реализация сценария может быть настроена, что позволяет уменьшить жёсткое кодирование и повысить гибкость.
Дочерние шаблоны в дизайне элемента представляют собой PDF-шаблон, то есть PDF разделён на несколько блоков для проектирования, а окончательная конфигурация шаблона состоит из нескольких компонентов; функциональность элемента:
Увеличивает повторное использование, снижая необходимость создания одинаковых шаблонов. Когда в рамках конкретного бизнес-сценария определённый контент не всегда присутствует одновременно, нет необходимости создавать отдельный шаблон, достаточно заменить различные модули. Особенно важно для некоторых традиционных отраслей и региональных потребностей, когда недостаточно эффективно использовать шаблоны.
Обеспечивает обработку в соответствии с последующими реальными требованиями, например, увеличение процессингового модуля страницы для дочернего элемента.Отображение дочерних модулей удобно для различных принтеров, коробок бумаги и удовлетворяет требования к печати большими принтерами.
Гибкий контроль над пустыми страницами и требованиями к настройке страниц. ### Определение шаблона Как было сказано выше, шаблон представляет собой комбинацию одного или нескольких компонентов. Конфигурация шаблона — это набор пользовательских JSON Schema, главным образом это список компонентов вместе с соответствующими страницами настроек, пустыми страницами и типами компонентов.Шаблон может быть конфигурационным файлом, а также может представлять собой динамическое объединение JSON данных. Он может динамически создаваться в соответствии с реальной бизнес-логикой JSON данных, чтобы обеспечить гибкое сочетание компонентов.
https://github.com/danfickle/openhtmltopdf
https://www.thymeleaf.org/index.html
Похож на FreeMarker динамический шаблон, основное преимущество заключается в том, что HTML остаётся нормальным, не разрушает структуру HTML, что особенно важно для предварительного просмотра дизайна.
https://github.com/adobe-fonts
https://github.com/googlefonts/noto-cjk
https://www.w3.org/TR/css-page-3/## Структура проекта
<!-- ${rayin.version} -->
<dependency>
<groupId>ink.rayin</groupId>
<artifactId>rayin-htmladapter-openhtmltopdf</artifactId>
<version>${rayin.version}</version>
</dependency>
Шаг два: создание артефактов (то есть одного HTML файла)
Шаг три: создание шаблонов (то есть конфигурационного файла в формате JSON) Подробнее см. Помощь
Шаг четыре: генерация вызовов API:
PDFGeneratorInterface pdfGenerator = new OpenHtmlGenerator();
pdfGenerator.init();
// Генерация одного элемента, параметр данных может быть null;
pdfGenerator.generatePdfFileByHtmlAndData(htmlLocation, jsonData, outputFilePath);
// Генерация через определение шаблона, параметр данных может быть null;
pdfGenerator.generatePdfFileByTplConfigFile(templateLocation, jsonData, outputFilePath);
Можно использовать правила преобразования данных и динамически генерировать конфигурацию шаблонов; Подробнее см.: помощь с правилами данных
Если вы считаете этот проект хорошим, пожалуйста, оцените его звездой, ваша звезда — моя мотивация! Проблемы программы или предложения по улучшению — отправьте запрос на исправление! Процедуры помогут избежать проблем, приветствуем ваши вопросы и ценные советы! Если у вас есть хорошие требования или предложения, также приветствуем!# Тестирование образцов и предоставление отраслевых образцов шаблонов Все тестовые случаи включены в проект https://gitee.com/Rayin/rayin-template-sample
Любой прямой или непрямой ущерб, возникший вследствие использования данного проекта, несет ответственность разработчик, но не ограничивается этим, содержание шрифта, графики, текста и других связанных материалов;
Оплаченная версия поддерживает CSS3 (включая Flex)
Поддерживает JavaScript
Поддерживает ECharts
Для более подробной информации см.: описание оплаченной версии
Корпоративный WeChat обеспечивает удобную коммуникацию, можно использовать WeChat для сканирования QR-кода и добавления в группу
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )