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


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

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

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

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

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

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


Выводы на данный момент:

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

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

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

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

3 12

3 ответа:

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

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

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

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

Вот пример простой подписки: Введите описание изображения здесь

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

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

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

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