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

OSCHINA-MIRROR/Rayin-rayin

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

RAYIN

Hex.pm Hex.pm Hex.pm
Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm

Русский | English

Что такое Rayin?

Инструмент массового производства электронных документов для сложных сценариев отображения и комбинирования шаблонов.## Проблемы проекта Вдохновлен внутренним проектом крупной компании. Проблемы были выявлены в процессе реализации проекта:

  1. Недостаточность удобства дизайна формата: использование оригинального PDF-шаблона для создания сложных форматов, зависящих от специализированного инструмента, а также логики генерации через систему является сложной задачей, а связывание данных также усложняется;
  2. Отсутствие расширяемости: система использует конфигурацию шаблонов, но из-за зависимости от множества фиксированных координат, расширяемость системы низкая, что делает корректировку элементов шаблона болезненной задачей, увеличивая затраты времени на создание шаблонов и понимание системы;
  3. Низкая поддержка обслуживания: из-за недостаточной расширяемости, многие вещи реализуются путём жёсткого кодирования, что делает обслуживание очень трудоёмким;
  4. Сложности при работе с персонализированными требованиями: большое количество персонализированных бизнес-сценариев приводит к созданию большого количества шаблонов, изменения которых требуют значительных усилий при изменении бизнес-требований;
  5. Проблемы с использованием символов: часто встречаются проблемы с символами, которые не поддерживаются, что приводит к ошибкам при генерации документов;Эти проблемы делают невозможным достижение цели использования сервисов для конфигурации шаблонов обычными сотрудниками; на основе вышеописанных проблем требуется решение вопроса удобства конфигурации PDF-шаблонов, а также лучшей поддержки изменчивых бизнес-сценариев. ## Процесс проекта

Начиная с концептуального дизайна проекта 2019 года, работа шла периодически. Также были сделаны попытки повторного тестирования и модификации. В ходе проекта возникло много новых требований, особенно в разных провинциях, где личный стиль может иметь различные требования, а также различия в содержании, если тип продуктов многообразен, снова требуется личная настройка, что приведёт к увеличению уровня растущих шаблонов. Необходимость изменения в проекте, если шаблон слишком многочислен, процесс изменения будет болезненным и легко пропущен. Поэтому постоянно проводятся тесты, чтобы охватить все точки запроса, используя метод конфигурации для упрощения удовлетворения различных потребностей.## Цели Масштабируемость, гибкость, низкий уровень кодирования;
На основе вышеуказанной цели осуществляется иерархическая разработка, поглощение и поэтапное изменение личных требований, тем самым снижается количество шаблонов.
Через трехуровневую структуру данных, элементов и шаблонов через конфигурирование возможно решить бизнес-сценарии, вместо жесткого кодирования.

  • правила данных: Обработка бизнес-логики, данные через движок правил, связанных с данными, завершаются, включая расширение первоначальных данных, преобразование данных и указание шаблонов или динамическое соединение шаблонов через правила;
  • элемент: Для решения сочетания данных и стиля, отображения стиля, расширения стиля;
  • шаблон: Решает переиспользование компонентов в процессе проектирования, количество страниц, пустые страницы, проблему выбора коробок для больших печатных бумаг;

В заключении: триединство, динамическое конфигурирование множества адресов бизнес-сценариев для различных случаев:

Пример демонстрации

Шрифт

Формат

## Реализация управления дизайном на основе набора инструментов

Дизайн элементов

### Редактор шаблонов и предварительный просмотр ### Генерация файлов шаблона

MATURITY технологии преобразования HTML в PDF

Есть некоторые статьи для тестирования передачи PDF через веб, где проверяются некоторые открытые компоненты преобразования. На самом деле, в большинстве сценариев документальный класс не требует аналогичной веб-страницы со сложными требованиями к стилю. Веб-сайты содержат множество динамических скриптов JS (и некоторые веб-страницы не обязательно следуют спецификациям HTML), даже если это так, можно реализовать через поддержку других тегов. Документальный класс не нуждается в аналогичной логике обработки JS и динамическом эффекте.## Концепция Rayin

Правила данных

Правила данных служат вспомогательным инструментом для конвертации данных, обычно если данные не соответствуют требованиям генерируемой системы или для некоторых специальных бизнес-потребностей, могут быть преобразованы с помощью скрипта правил данных. Реализация сценария может быть настроена, что позволяет уменьшить жёсткое кодирование и повысить гибкость.

Определение элементов

Дочерние шаблоны в дизайне элемента представляют собой PDF-шаблон, то есть PDF разделён на несколько блоков для проектирования, а окончательная конфигурация шаблона состоит из нескольких компонентов; функциональность элемента:

  1. Увеличивает повторное использование, снижая необходимость создания одинаковых шаблонов. Когда в рамках конкретного бизнес-сценария определённый контент не всегда присутствует одновременно, нет необходимости создавать отдельный шаблон, достаточно заменить различные модули. Особенно важно для некоторых традиционных отраслей и региональных потребностей, когда недостаточно эффективно использовать шаблоны.

  2. Обеспечивает обработку в соответствии с последующими реальными требованиями, например, увеличение процессингового модуля страницы для дочернего элемента.Отображение дочерних модулей удобно для различных принтеров, коробок бумаги и удовлетворяет требования к печати большими принтерами.

  3. Гибкий контроль над пустыми страницами и требованиями к настройке страниц. ### Определение шаблона Как было сказано выше, шаблон представляет собой комбинацию одного или нескольких компонентов. Конфигурация шаблона — это набор пользовательских JSON Schema, главным образом это список компонентов вместе с соответствующими страницами настроек, пустыми страницами и типами компонентов.Шаблон может быть конфигурационным файлом, а также может представлять собой динамическое объединение JSON данных. Он может динамически создаваться в соответствии с реальной бизнес-логикой JSON данных, чтобы обеспечить гибкое сочетание компонентов.

В главной открытой библиотеке

PDFBox

https://pdfbox.apache.org/

OpenHTMLtoPDF

https://github.com/danfickle/openhtmltopdf

Thymeleaf

https://www.thymeleaf.org/index.html
Похож на FreeMarker динамический шаблон, основное преимущество заключается в том, что HTML остаётся нормальным, не разрушает структуру HTML, что особенно важно для предварительного просмотра дизайна.

Adobe Fonts

https://github.com/adobe-fonts

Google Fonts Noto-CJK

https://github.com/googlefonts/noto-cjk

W3C CSS

https://www.w3.org/TR/css-page-3/## Структура проекта

  1. rayin-htmladapter-base базовый пакет
  2. rayin-tools пакет инструментов
  3. rayin-htmladapter-openhtmltopdf пакет ядра openhtmltopdf для создания PDF
  4. rayin-htmladapter-spring-boot-starter пакет запуска Spring Boot
  5. rayin-test пакет тестовых примеров
  6. rayin-springboot-sample пакет образцов Spring Boot
  7. rayin-datarule пакет правил данных

Список некоторых поддерживаемых функций и возможностей

  1. Следующий список поддерживаемых функций для openhtmltopdf с использованием CSS для генерации электронных документов:
    1. Поддержка автоматического расширения, включая формы, длинный текст;
    2. Поддержка пагинации начала и конца страницы, включающая формы начала и конца;
    3. Поддержка CSS2.0 и частей стилей CSS3.0;
    4. Поддержка @page медиа-функций, то есть определение размера бумаги, модели рамки страницы (показ рамки вокруг);
    5. Поддержка локальной загрузки изображений, протокола HTTP/HTTPS, отображение изображений в формате base64;
    6. Поддержка меток каталога;
    7. Поддержка отображения QR-кодов и штрих-кодов.
  2. Динамическое привязывание данных для генерации электронных документов, используемые функции Thymeleaf:
    1. Динамическое привязывание данных;
    2. Вложенные циклы данных;
    3. Циклические блоки согласно таблицам div;
    4. Форматирование данных;
    5. Логические выражения, такие как логика условной отрисовки;
    6. Интернационализация.Через элемент -> шаблон + правила данных -> данные, гибкая конфигурация для генерации PDF;
  3. В шаблоне можно объединять элементы различных размеров, таких как A4, B5, A3;
  4. Настройка создания типов артефактов (в основном используется для последующего идентификатора коробок больших принтеров, может передаваться через конфигурацию шаблона, связано с соответствующими метаданными PDF, путём чтения повторной обработки в файл PS указывает на соответствующую коробку);
  5. Создание пустых страниц артефактов (наполнение пустыми страницами для нечётных элементов);
  6. Реализация гибкого учёта страниц, номеров страниц, согласно количеству компонентов, одиночному отображению страницы;
  7. Автоматическая загрузка шрифтов, поддержка множественной связки шрифтов, отображение редко используемых слов;
  8. Сохранение и доступ к метаданным PDF, через шаблоны сгенерированных PDF, метаданные включают информацию о номерах страниц, скрытых тегах координат страниц, могут использоваться для последующей обработки;
  9. Реализация встраивания PDF;
  10. Реализация скрытых тегов, и использование для получения соответствующих страниц через метаданные и координаты (может использоваться для последующей обработки позиционирования, такого как подписи);
  11. Реализация пула потоков;
  12. Интеграция проста, может быть отдельно импортирована библиотека jar, и интегрирована в сервис.### Проект URL
    Gitee: https://gitee.com/Rayin/rayin
    GitHub: https://github.com/pipti/rayin### Начало работы
  • Шаг один: создание нового проекта, описание зависимостей пакета.
   <!-- ${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);

В версиях 1.0.6 и выше новые правила обработки данных;

Можно использовать правила преобразования данных и динамически генерировать конфигурацию шаблонов; Подробнее см.: помощь с правилами данных

Для получения подробной информации обратитесь к документации;

помощь

⭐⭐⭐⭐⭐

Если вы считаете этот проект хорошим, пожалуйста, оцените его звездой, ваша звезда — моя мотивация! Проблемы программы или предложения по улучшению — отправьте запрос на исправление! Процедуры помогут избежать проблем, приветствуем ваши вопросы и ценные советы! Если у вас есть хорошие требования или предложения, также приветствуем!# Тестирование образцов и предоставление отраслевых образцов шаблонов Все тестовые случаи включены в проект https://gitee.com/Rayin/rayin-template-sample

Обратная связь:

Любой прямой или непрямой ущерб, возникший вследствие использования данного проекта, несет ответственность разработчик, но не ограничивается этим, содержание шрифта, графики, текста и других связанных материалов;

Оплаченная версия

Оплаченная версия поддерживает CSS3 (включая Flex)
Поддерживает JavaScript
Поддерживает ECharts img.png Для более подробной информации см.: описание оплаченной версии

Группа связи

Корпоративный WeChat обеспечивает удобную коммуникацию, можно использовать WeChat для сканирования QR-кода и добавления в группу

Комментарии ( 0 )

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

Введение

Инструмент для массового создания PDF на основе HTML+CSS в качестве базового стиля. Позволяет сократить количество создаваемых шаблонов в сложных бизнес-сценариях и повысить повторное использование базовых стилей благодаря настраиваемым шаблонам. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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