Размер
Обзор C# библиотек для работы с PDF
Play

Обзор C# библиотек для работы с PDF

На написание данной статьи меня подтолкнул топик HTML в PDF, правда по причине того, что он посвящен языку php, лично мне он был мало полезен, т.к. весь опыт работы с php у меня сводился в переводе нескольких скриптов на C#, поэтому я решил сделать небольшой обзор того, что доступно для работы с pdf по средствам языка C#.

Ко мне в список попало 7 библиотек, о которых я скажу несколько слов, а для самой популярной (судя по ответам на stackoverflow), я напишу, как с помощью неё сделать простейший документ. Сразу скажу, что это iTextSharp и работа с ней будет описана в конце статьи.

Обзор библиотек

1. iTextSharp Библиотека iText позволяет создавать и манипулировать PDF документами. Она позволяет разработчикам совершенствовать веб и прикладные приложения с помощью динамической генерации и/или манипуляции над PDF документами.

Разработчики могут использовать iText для: — Передачи PDF в браузер — Генерировать динамические документы из XML файлов или базы данных — Использовать много интерактивных возможностей PDF — Добавлять закладки, число страниц, водяные знаки и т.д. — Разделять, объединять и манипулировать PDF страницами — Автоматизация заполнения PDF форм — Добавлять цифровую подпись в PDF файл iText доступен для двух языков: Java и C#.

2. Report.NET Report.NET – это мощная библиотека, которая поможет Вам сгенерировать PDF документы в простым и гибким способом. Документ может быть создан с помощью данных, которые были получены из любого ADO.NET data set.

Возможности библиотеки: — Полностью написана на C# для Microsoft .NET framework — Очень компактный код (Hello World: 6 строк) — Поддерживает графические объекты: текст, линии, прямоугольники, изображения jpeg — Легкость выравнивания и трансформации графических объектов — ASP.NET может генерировать динамические PDF страницы — XML Documentation (Comment Web Pages)

3. PDFsharp PDFsharp — это библиотека на C#, которая очень просто создаёт PDF документы на лету. Похоже на GDI+ рисование процедур, аналогично можно создавать PDF документы, рисовать на экране или отправлять на печать любого принтера. PDFsharp может изменять, объединять и разделять существующие PDF файлы или перемещать страницы из существующих PDF файлов в новые PDF документы. PDFsharp – это библиотека с открытым исходным кодом, которая легко создает PDF документы из любого .NET языка.

4. SharpPDF SharpPDF — это C# библиотека, которая может создавать различные объекты в PDF документах за несколько шагов. Она создана для .NET framework 1.1 и может создавать 100% совместимые PDF файлы (протестировано с Acrobat Reader, Ghostscript, JAWS PDF Editor и другими PDF читалками). Самая важная цель библиотеки – это простое использование.

Возможности библиотеки: — Можно использовать с Windows Forms для генерации новых pdf файлов или сохранить их в базу данных. — Можно использовать с Web Applications (ASP.NET) для генерации pdf файлов или сразу отправить результат в браузер.

5. PDFjet Open Source Edition PDFjet — библиотека с открытым исходным кодом для динамического создания PDF документов из Java и .NET.

Возможности библиотеки: Рисования: точки, линии, коробки, круги, кривые Безье, многоугольники, звезды, комплекс путей и форм. Текст: поддержка юникода, кернинг текста при использовании Helvetica и Times-Roman семейств основных шрифтов, вставка гиперссылок, просто использовать табличный класс с гибкостью отчетных возможностей. Поддерживает вставку следующих типов изображений: PNG, JPEG, BMP

6. ASP.NET FO PDF FO PDF похожа на ASP.NET Server Controls, написана на C#. Она получает DataTable и несколько других параметров для генерации XSL FO и рендерит DataGrid как PDF отчёт используя NFOP (Apache FOP Port in J#) PDF Formatter.

7. PDF Clown PDF Clown – это C# 2.0 библиотека для чтения, обработки и записи файлов PDF с несколькими слоями абстракции, чтобы удовлетворить различные стили программирования: от нижнего уровня (PDF Object Model), до высшего (PDF структуры документа и потокового содержания). Его основная целевая платформа является GNU / Linux, но благодаря проекту Mono она практически платформа-независимая.

Быстрый старт с помощью iTextSharp

Как я уже писал ранее, данная библиотека была выбрана не из-за того, что я протестировал все описанные и выбрал её, а по причине того, что на неё чаще всего ссылаются и советуют. Итак, переходим на сайт проекта, видим, что можно купить книжку, а также скачать файлы: Желания что-то собирать самому, у меня нет, поэтому качаю не исходные коды, а сразу библиотеку itextsharp-5.0.5-dll.zip. С одной библиотекой быстрого старта не выйдет, поэтому качаем примеры iTextSharp.tutorial.01.zip. Открыв архив примеров, я понял, что старт будет гораздо быстрее, чем я думал, т.к. там есть целых 13 глав примеров. Сразу подумал, что на этом можно закончить, но всё же решил сделать небольшое приложение.

Распишу по шагам, что нужно для использования библиотеки: — Я создаю WinForms приложение. — Добавляю ссылку на itextsharp.dll. — Устанавливаю кнопку на форму и добавляю следующий код в обработчик нажатия:

var doc = new Document(); PdfWriter.GetInstance(doc, new FileStream (Application.StartupPath + @"\Document.pdf" , FileMode .Create)); doc.Open(); iTextSharp.text.Image jpg = iTextSharp.text.Image.GetInstance(Application.StartupPath + @"/images.jpg" ); jpg.Alignment = Element.ALIGN_CENTER; doc.Add(jpg); PdfPTable table = new PdfPTable(3); PdfPCell cell = new PdfPCell( new Phrase( "Simple table" , new iTextSharp.text. Font (iTextSharp.text. Font .FontFamily.TIMES_ROMAN, 16, iTextSharp.text. Font .NORMAL, new BaseColor(Color.Orange)))); cell.BackgroundColor = new BaseColor(Color.Wheat); cell.Padding = 5; cell.Colspan = 3; cell.HorizontalAlignment = Element.ALIGN_CENTER; table.AddCell(cell); table.AddCell( "Col 1 Row 1" ); table.AddCell( "Col 2 Row 1" ); table.AddCell( "Col 3 Row 1" ); table.AddCell( "Col 1 Row 2" ); table.AddCell( "Col 2 Row 2" ); table.AddCell( "Col 3 Row 2" ); jpg = iTextSharp.text.Image.GetInstance(Application.StartupPath + @"/left.jpg" ); cell = new PdfPCell(jpg); cell.Padding = 5; cell.HorizontalAlignment = PdfPCell.ALIGN_LEFT; table.AddCell(cell); cell = new PdfPCell( new Phrase( "Col 2 Row 3" )); cell.VerticalAlignment = PdfPCell.ALIGN_MIDDLE; cell.HorizontalAlignment = PdfPCell.ALIGN_CENTER; table.AddCell(cell); jpg = iTextSharp.text.Image.GetInstance(Application.StartupPath + @"/right.jpg" ); cell = new PdfPCell(jpg); cell.Padding = 5; cell.HorizontalAlignment = PdfPCell.ALIGN_RIGHT; table.AddCell(cell); doc.Add(table); doc.Close();

* This source code was highlighted with Source Code Highlighter .

Результат работы данного кода:

Выводы

По каждой из приведенных библиотек в интернете можно найти уйму информации (начинать рекомендую с сайтов разработчиков), готовя данную подборку библиотек, я встречал разные мнения, хоть все библиотеки, казалось бы, предназначены для работы с pdf, но возможности у них разные, всё зависит от Ваших потребностей. Честно скажу, что все из них я не использовал, я лишь попробовал несколько из них и остановился на iTextSharp.

Пожелание: Если Вы указываете, что остановились на той или иной библиотеке, то не поленитесь указать, что явилось для Вас решающим при выборе.

📎📎📎📎📎📎📎📎📎📎