Подтвердить что ты не робот

Как создавать документы (docx или pdf) из SQL Server?

Я знаю, что это немного субъективно, но я изучаю следующую ситуацию:

Мне нужно создать несколько документов автоматически из данных в базе данных SQL Server. В базе данных будет приложение MVC3, чтобы разрешить ввод данных и т.д. И (возможно) кнопку "Перейти" для создания документов.

Должна быть какая-то бизнес-логика о том, как эти документы создаются, называются и хранятся (например, "родительские" документы получают одно имя и входят в одну папку, документы "Child" получают вычисленное имя и входят в подпапку.

Документы могут быть PDF или Doc (x) (или даже оба), если вывод может быть в EN-US и AR-QA (RTL-текст)

Я знаю, что существует множество вариантов из SSRS, Crystal Reports, VSTO, "ручной" PDF-код в коде, слияние слов и т.д.... и у нас уже есть инструмент HTML для PDF, если это используется?

Есть ли у кого-нибудь реальный совет о том, как это сделать и каков будет "лучший" (самый прагматичный) подход? Чем меньше "дополнений" мне нужно установить и настроить на сервере, тем лучше - чем быстрее будет развиваться (как всегда!!)


Выводы:

Слияние слов (или VSTO) Просто не предлагает простоту, контроль и гибкость, которые мне нужны - позор. Было бы неплохо определить dotx и иметь возможность передавать в нем данные на индивидуальной основе для создания docx. Единственный способ, которым я мог добиться этого (и, возможно, я ошибаюсь здесь), - это перебрать элементы управления/закладки по имени и заменить значения... messy.

OpenXML Создание документов на основе шаблонов dotx, даже с использованием OpenXML, не так просто, как (IMHO). Вы должны заменить каждый элемент управления содержимым по имени, поэтому обслуживание не является самой простой задачей.

SSRS На первый взгляд это хорошее решение (хотя для этого требуется SQL Enterprise), однако он становится более сложным, если вы хотите динамически создавать папки и документы. Подход, основанный на данных, очень близок к тому, что я хочу.

Winnovative HTML to PDF Convertor * Это инструмент, который у нас уже есть (хотя версия .Net 2.0). Это позволяет мне создавать HTML-страницы и конвертировать их в PDF. Хороший вариант для меня, так как я могу запустить это на веб-сайте MVC3 и передать параметры в контроллеры для создания PDF файлов. Это дает мне намного более тонкий контроль над структурами папок и имен - проблема с этим методом заключается в простое создание страниц правильно. Бонус в том, что он автоматически дает мне "предварительный просмотр"... basicly просто HTML-страницу!

4b9b3361

Ответ 1

Office OpenXML - это простой и простой способ создания офисных файлов. XSLT может быть мощным инструментом для форматирования вашего контента. Эта технология не позволит создавать PDF файлы.

Быстрая разработка без использования каких-либо сторонних компонентов будет сложной. Но если вы рассматриваете использование сервера отчетов, обязательно проверьте BIRT или Jasper.

Для создания pdf я использую устаревший Report.net. Он имеет множество портов для разных языков и по-прежнему достаточен для создания простых PDF файлов. Report.net on sourceforge

Ответ 2

Я не думаю, что сам SQL Server может создавать pdf файлы. Что вы можете сделать, как вы упомянули, установить экземпляр SSRS и создать отчет, который создает необходимую вам информацию. Затем вы можете создать подписку для доставки своего отчета туда, где хотите, когда захотите.

Вот пример простой подписки: enter image description here

Ответ 3

Перейдите для SSRS только в том случае, если вы в порядке с настройкой на сервере, и существует определенная потребность в расписании отчетов и сложных отчетах.

Если у вас есть код для ручной генерации PDF/docx, я бы предложил продолжить его. Надеемся, что сложность его кода не для вас.

Я использовал оба в отдельных сценариях. Мы использовали классы и объекты excel из .NET для минимальной отчетности из веб-приложения.

Но пошел для продуманной схемы отчетности для системы, которая требовала, чтобы 1000 отчетов были сформированы в запланированном порядке и доставлены выбранному набору людей.