Как стать автором
Обновить

Комментарии 24

В закладки однозначно, спасибо
НЛО прилетело и опубликовало эту надпись здесь
Спасибо, очень полезная статья! Отличная подборка библиотек, в общем-то сразу видно возможности.
Спасибо за работу, отличная подборка ссылок.
Не указано какая из библиотек умеет работать с HTML.
Опыт показывает, что в этом вопросе — ни все библиотеки одинаково полезны.

На практике проще/удобнее/быстрее формировать HTML-разметку (в том числе и сложную), а не через объекты библиотеки table.AddCell(«Col 1 Row 1»);
К сожалению, я физически не могу описать полностью работу всех библиотек, поэтому надеюсь на помощь в комментариях, где люди будут делится своим опытом использования той или иной библиотеки, т.к. в принципе каждая библиотека в отдельности может претендовать на отдельный топик.
Было бы еще интересно узнать поддерживают .NET компоненты конвертацию из разных форматов (HTML, DOC и т.д.) в PDF
А мне нравится iTextSharp тем, что там можно стркутуру PDF файла формировать при помощи xml. Итого DataSet в xml, делаем xslt и получаем xml, который и генерирует наш PDF. Легче сопровождать, чем когда это прописано в коде.
Интересует, можно ли с использованием какой-то библиотеки далать pdf из объекта
System.Drawing.Printing.PrintDocument (вместо печати генерировать pdf не используя сторонних программ)
А выводы вы не написали потому что их нет, или забыли? Обычно в обзорных статьях это для меня самое интересное. Или вы попробовали только одну? Мы у себя на PdfSharp остановились, очень много перепробовав.
Это обзор, а не тестирование. Если бы я выдвинул какие-то требования, то тогда можно было бы сделать выводы в конце статьи, что эта библиотека занимает почётное первое место, потому-что… Очень многое зависит от потребностей, читал, что человек категорически не хочет использовать тот же iTextSharp, не потому-что он не умеет делать какой-то функционал, а что библиотека слишком «тяжелая» в плане занимаемого места (что в некоторых проектах может быть весомо, если нужен небольшой инсталлятор). Вот Вы пишите, что «Мы у себя на PdfSharp остановились, очень много перепробовав.», почему бы не указать, что для Вас стало решающим в выборе? Думаю, тем, кто будет читать комментарии Ваш опыт может стать полезен.
Можно сделать, чтобы в таблице, в одной ячейке было два текста, один флоатился налево, а другой направо? А если они не вмещаются в одну строку, то правый текст переносится на следующую строку. И как бонус — между этими текстами редкий пунктир.

PDFLib забыли упомянуть.
Вот тут есть неплохие уроки по таблицам mikesdotnetting.com думаю разберётесь или обращайтесь к документации.
Заметили, что очень много .NET библиотек последнее время публикуется?

Есть еще Google.API для .NET
code.google.com/intl/ru-RU/apis/gdata/docs/directory.html

Веб-камера
sites.google.com/site/webcamlibrarydotnet/home

Недавно были OCR
code.google.com/p/tesseract-ocr/downloads/list

Теперь вот и PDF.

Я потратил вчера один час времени и написал программу, которая распознает и переводит текст из веб-камеры, просто подключив 3 библиотеки.
Круто было бы лицензии указать.
iTextSharp, например, под AGPL.
Report.NET — LGPL
PDFsharp — LGPL
SharpPDF — LGPL
PDFjet Open Source Edition — BSD
ASP.NET FO PDF — LGPL
PDF Clown — LGPL
А какая-нибудь из них может загрузить в себя уже готовый PDF (из памяти, а не из файла) и проделать с ним какие-нибудь манипуляции? Ну, там, посчитать количество страниц и узнать их размеры, например. Найти/заменить текст, картинку?
Бесплатная прога для манипуляции
www.pdflib.com/
но по тексту не ищет
Пример для PDFSharp: Combine Documents на официальном сайте.
только в параметрах указать нужно поток
У меня вопрос не совсем по этой теме, но не далеко. Понадобилась мне достаточно нестандартная вещь — создать свой виртуальный принтер PDF. Нужен он для того, чтобы отправлять в существующую систему PDF документы из любого приложения. Чтобы было меньше заморочек, удобнее всего это сделать по средством PDF принтера. Начав искать, я нашел только два опенсорсных проекта данной направленности и оба они написаны на старом VB6. Вопрос, может быть кто-нибудь сталкивался с опенсорсными реализациями PDF принтеров или может быть не слишком дорогой, но функциональной платной реализацией.
Я использую гибкий и удобный Apitron.PDF.Kit for .NET для редактирования, извлечения текста и создания PDF ( с возможностью добавления своего стиля каждому элементу ). Бесплатная книжка.

Для создания подобной таблицы:
// создали менеджер ресурсов и добавили картинки
ResourceManager resourceManager = new ResourceManager();
resourceManager.RegisterResource(new Apitron.PDF.Kit.FixedLayout.Resources.XObjects.Image("Left", "left.png"));
resourceManager.RegisterResource(new Apitron.PDF.Kit.FixedLayout.Resources.XObjects.Image("Right", "right.png"));

// создали ПДФ документ  со своим стилем
FlowDocument document = new FlowDocument { Margin = new Thickness(18) };

// общий стиль для данных в ячейках таблицы
document.StyleManager.RegisterStyle("grid#iApitron", new Style { InnerBorderColor = RgbColors.LightGray, Align = Align.Center, Font = new Font(StandardFonts.Helvetica, 12) });            
            
// добавляем стиль для заголовка таблицы
document.StyleManager.RegisterStyle("textblock.h1", new Style { Font = new Font(StandardFonts.HelveticaBold, 20) });

// сам грид
Grid grid = new Grid(Length.FromPercentage(33), Length.FromPercentage(33), Length.FromPercentage(33)) { Id = "iApitron" };

// добавляем строки таблицы с данными
grid.Add(new GridRow(Section.Empty, new TextBlock("Ну, заяц!"){Class="h1"}, Section.Empty));
grid.Add(new GridRow(new TextBlock("Col 1 Row 1"),new TextBlock("Col 2 Row 1"),new TextBlock("Col 3 Row 1")));
grid.Add(new GridRow(new TextBlock("Col 1 Row 2"),new TextBlock("Col 2 Row 2"),new TextBlock("Col 3 Row 2")));
grid.Add(new GridRow(new Image("Left"),new TextBlock("Col 2 Row 3"),new Image("Right")));
document.Add(grid);

 // сохраним документ
using (Stream stream = File.Create("Apitron_table.pdf"))
{
     document.Write(stream, resourceManager, new PageBoundary(Boundaries.Ledger));
}
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории