Генерация PDF отчета из базы данных в C #, в частности ASP - PullRequest
1 голос
/ 05 июля 2011

Мне нужно создать высококачественный отчет на основе информации в базе данных SQL Server, и я хочу очень четко контролировать макет и внешний вид изнутри C #.

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

1) Встроенные в SQL Server службы отчетов

2) Adobe Forms

3) Crystal Reports

Эта информация, необходимая мне в виде PDF, напрямую сопоставляет то, что уже отображается в веб-браузере пользователя в виде HTML, поэтому вариант создания таблицы стилей для печати и преобразования тела браузера в PDF также возможен.

Таким образом, создается вариант 4:

4) JavaScript конвертирует HTML в PDF (мои предпочтения на данный момент)

Есть ли у кого-нибудь рекомендации относительно того, какой подход я должен использоватьили даже лучше альтернатива?Все выборы кажутся довольно ужасными.

Ответы [ 7 ]

2 голосов
/ 05 июля 2011

Я использовал iTextSharp с очень хорошими результатами. Это порт с открытым исходным кодом .NET библиотеки Java. Это действительно хорошо работает для создания PDF-файлов с нуля . Помните, что редактирование PDF-файлов всегда будет хакерским с любой библиотекой, потому что PDF - это формат output , not формат чтения-записи.

Если ваш HTML-код достаточно чистый (удалите постбэки javascript, якоря и т. Д.), IText HtmlWorker может конвертировать HTML в PDF, если вы предпочитаете этот маршрут.

HTML в PDF при использовании iTextSharp :

Document doc = new Document(PageSize.A4);
HTMLWorker parser = new HTMLWorker(doc);
PdfWriter.GetInstance(doc, Response.OutputStream);

Также здесь .

1 голос
/ 05 июля 2011

Я бы предложил использовать элемент управления .Net ReportViewer в локальном режиме (сервер отчетов не требуется). Он работает как в веб-формах, так и в Winforms. Вы создаете файл отчета на стороне клиента (.rdlc) (который содержит все визуальные элементы, а также размещение полей данных), связываете его с ReportViewer и предоставляете данные (DataTable или коллекцию объектов, если поля являются полями). матч, это не имеет значения). В режиме клиента он поддерживает экспорт в PDF и Excel (и Word тоже? Не помню). По умолчанию это выполняется с помощью раскрывающегося списка в самом элементе управления, однако вы также можете программно экспортировать в любой из поддерживаемых форматов. В результате вы получите байтовый массив, который вы можете вставить в поток файлов.

В основном вы получаете большинство хороших частей SSRS без всей этой сложности бэкэнда. В папке% programFiles% \ Microsoft Visual Studio 10.0 \ ReportViewer должна быть папка ReportViewer, но также существуют версии для 2005 и 2008 годов. Проверить http://gotreportviewer.com/

1 голос
/ 05 июля 2011

Взгляните также на DevExpress Reporting (несвободный сторонний инструмент):

Обзор

Демоверсии

Документация

1 голос
/ 05 июля 2011

Я с большим успехом использовал две другие библиотеки отчетов PDF; Активные отчеты и Telerik Reporting .Лично я предпочитаю последнее, когда дело доходит до программного управления макетом и тому подобное.

1 голос
/ 05 июля 2011

Используйте SSRS, он имеет встроенный режим рендеринга PDF.

0 голосов
/ 05 июля 2011

Я думаю, 4-й вариант - лучший.В этом случае вам не нужно менять ни макет HTML-страницы, ни макет PDF, если один из них был изменен.Также удобнее создавать красивый дизайн с помощью HTML, чем программно с помощью C # :)

Взгляните на WebToPDF.NET , который является компонентом .NET, написанным на C #, который преобразует HTML в PDF,Конвертер поддерживает HTML 4.01, XHTML 1.0, XHTML 1.1 и CSS 2.1, включая разрывы страниц, формы и ссылки.Он проходит все тесты W3C (кроме BIDI).

0 голосов
/ 05 июля 2011

Да, вы должны использовать лучшие инструменты, чтобы получить лучшее решение.Лучшим инструментом в этом случае, вероятно, является SSRS.

Но это всего лишь взгляд на возможности инструмента.Не забудьте взглянуть на свои возможности!

Моя история: я знаю SQL, я знаю C #.(Оба промежуточных, я не гуру.) Затем я возлагаю руки на SSRS.И сжигали их один раз, два и т. Д. В итоге получился хороший результат.Так что обжигать пальцы - это не то, что нужно делать.Но сначала попробуйте проверить ваш html через конвертер html в pdf (демонстрационная версия) и посмотрите, удовлетворяет ли результат вашим потребностям.

В настоящее время я использую оба:

  • SSRSдля создания счетов-фактур, поскольку суммы необходимо переносить с одной страницы на следующую
    • Winnovative для создания документов, для которых нужны только номера страниц
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...