Вопрос или проблема
Мне нужен совет… Я много гуглил и сейчас немного потерян. Попытаюсь дать вам всю информацию, сохраняя ее краткой и простой (я надеюсь – и извините, что я не носитель английского):
Что у нас есть на данный момент:
Веб-приложение, начатое примерно 10-15 лет назад на ASP Classic + VB + DOT.NET (да, aspx). Думаю, все, кто создавал этот монстр, сейчас здесь не работают. Поэтому мы медленно мигрируем его и используем новые технологии… мы уничтожили часть на VB и мигрировали в DOT.NET, обновили фреймворк до 4.7.2, ввели RESTFUL веб-сервисы и обновили фронтенд с помощью Angular. О, и мы используем SQL Server и Windows Servers. Им очень нравился Microsoft ^_^
Последнее, но не менее важное: нам нужно печатать много PDF… и мы в настоящее время используем очень СТАРУЮ версию Java + Tomcat + Jasper Report (у нас сейчас около ~150 jrxml).
Есть простые: всего 1 страница с заголовком, некоторыми данными и таблицей + подвал. Другие немного сложнее, и нам нужно печатать много параметров/повторяющихся полей. У нас есть обычные проблемы, такие как номер страницы, удержание некоторых данных вместе на странице, разрывы страниц и т. д. И, честно говоря, Jasper справлялся с задачей.
Но поскольку мы не используем Java в нашем приложении, а версия такая устаревшая… мы хотели бы мигрировать эту “систему печати” на другую – желательно новую – технологию.
Что мы хотим:
Инструмент, который сможет читать нашу БД (в принципе, можно сделать мини-приложение на C#, которое будет читать БД и просто передавать JSON этому инструменту), чтобы создавать и объединять PDF из шаблона, разработанного нами. Может быть, платный, потому что мы просим много:
-
Инструмент должен быть легко интегрируемым с нашим приложением: Так что если нам нужно кодировать: предпочтительный язык C# или HTML + Javascript в Node.JS. Открыты для советов по этому поводу.
-
Абсолютно НЕТ облачного принтера. Я много читал о таких услугах и думаю, что они круты для личного использования, но у нас много конфиденциальных данных, и мы не хотим даже говорить о проблемах с конфиденциальностью.
-
Создание новых шаблонов должно быть быстрым и простым, и самое главное редактирование существующих!! Нам постоянно нужно редактировать существующие… и иногда сложно менять одно и то же в 100 разных шаблонах.
-
Таким образом, из вышесказанного, хорошей функцией могут быть повторно используемые/общие части в нескольких шаблонах.
-
Лучше, если этот инструмент будет иметь “визуальный редактор” (как jasper report) и сможет использоваться программистом с нулевыми навыками. (эта часть не обязательно, кстати).
-
Финальный макет очень строгий и очень важный… Обычно наш клиент предоставляет нам документ в Word, говоря “должно быть так”. Мы пытаемся воспроизвести это, они печатают наш результат на бумаге A4 и говорят: “хорошо, эта строка на 1 см вниз, здесь я хочу это слово жирным, это другое подчеркнуто”. и так далее. Я надеюсь, вы понимаете.
-
Просто чтобы лучше объяснить весь процесс: Пользователь нажимает кнопку на нашем клиенте “Печать PDF” -> Эта кнопка вызывает API сервера (на самом деле на Java + Tomcat, но мы хотели бы сделать это на C# или Node.js), который обращается к БД, получает все параметрические данные, помещает их в шаблон (уже разработанный, не генерируемый в реальном времени!), сохраняет файл в нашей файловой системе и возвращает его клиенту за пару секунд.
Краткая заметка: Я играл с сервером Node.js, вызываемым из нашего REST на C# и шаблонами в HTML с генератором HTML в PDF. Это выглядит неплохо, но единственная проблема здесь – также поговорив с моими коллегами – в том, что, исходя из визуального редактора, есть слишком много “ручной работы”, чтобы написать и поддерживать HTML шаблоны!
Что вы думаете? Что использует мир для отчетности в PDF? Спасибо!
Syncfusion Essential DocIO и Syncfusion Essential PDF могут использоваться для генерации PDF отчетов на основе документов Word в веб-приложениях с бэкендом .NET/Core.
Живой пример генерации документа Word на основе шаблона.
Живой пример конвертации документа Word в PDF.
Весь продукт доступен бесплатно через программу лицензии для сообщества, если вы соответствуете требованиям (до 1 миллиона долларов США в доходах). Лицензия для сообщества – это полный продукт без ограничений.
Примечание: Я работаю в Syncfusion.
Ответ или решение
Основываясь на вашей ситуации и требованиях, я рекомендую рассмотреть возможность использования библиотеки Syncfusion для генерации PDF отчетов. Вот основные моменты, которые помогут вам понять, почему эта библиотека может стать для вас подходящим решением.
1. Интеграция с .NET
Syncfusion предлагает библиотеку Essential PDF
, которая позволяет легко интегрировать функционал генерации PDF отчетов в ваше приложение на основе .NET. Вы уже на правильном пути, перейдя на .NET Core и разрабатывая REST API, так что использование этого инструмента будет логичным шагом в вашем проекте.
2. Поддержка шаблонов Word
С помощью Syncfusion Essential DocIO
вы сможете создавать PDF отчеты на основе заранее подготовленных шаблонов Word, что соответствует вашим требованиям. Можно разрабатывать и редактировать шаблоны в Word, а затем использовать их для генерации PDF с помощью кода на C#. Это значительно упростит процесс работы с документами.
3. Работа с данными
Библиотека позволяет легко подставлять данные из вашей базы данных в шаблоны. Вы сможете создать небольшой сервис на C#, который будет извлекать данные из SQL Server, затем подставлять их в шаблон и генерировать PDF. Этот процесс можно запустить по нажатию кнопки в вашем приложении.
4. Шаблоны и редактирование
Одной из сильных сторон Syncfusion является возможность работы с шаблонами. Вы можете создавать и использовать переиспользуемые части в разных шаблонах. Это идеально подходит для ваших нужд, где вам необходимо часто вносить изменения в шаблоны.
5. Визуальный редактор
Хотя у Syncfusion нет полностью визуального редактора, вы можете использовать Word для создания и редактирования шаблонов. Это должно упростить работу для программистов с нулевыми навыками, поскольку работа в Word может быть более интуитивно понятной, чем работа с HTML и CSS.
6. Клиентская и серверная стороны
Вы можете использовать C# на серверной стороне для обработки запросов и генерации PDF документов, а затем вернуть файл клиенту. Подход, при котором вы сначала собираете информацию о параметрах и затем объединяете ее с шаблоном для создания PDF, полностью соответствует вашим планам.
7. Лицензирование
Syncfusion предлагает бесплатную лицензию для малых компаний (с годовым оборотом менее 1 миллиона долларов), что делает его доступным для стартапов и небольших компаний. Это позволяет вам использовать полную версию продукта без ограничений.
Заключение
С учетом всех этих факторов, Syncfusion может стать отличным решением для ваших задач по генерации PDF документов. Он предлагает функциональность, необходимую для создания сложных отчетов, удобен в интеграции и предоставляет возможность работы с уже существующими ресурсами. Я рекомендую вам провести небольшое исследование и протестировать библиотеку, чтобы убедиться, что она ответит всем вашим требованиям.