Простой способ создать PDF на C#

12.05.2015 at 21:03


На одном проекте возникла необходимость реализовать создание несложного отчета в PDF. Делал я это с помощью библиотеки itextsharp. Библиотека позволяет создавать PDF различными способами, самым простым мне показалось ручное рисование. Вот как это делается:

Создание документа

var document = new iTextSharp.text.Document();
using (var writer = PdfWriter.GetInstance(document, new FileStream("result.pdf", FileMode.Create)))
{
	document.Open();

	// do some work here

	document.Close();
	writer.Close();
}

Рисование линий

writer.DirectContent.MoveTo(35, 780);
writer.DirectContent.LineTo(430, 780);

Добавление картинки

var logo = iTextSharp.text.Image.GetInstance(new FileStream(@"Resources\logo.jpg", FileMode.Open));
logo.SetAbsolutePosition(440, 758);
writer.DirectContent.AddImage(logo);

Добавление текста

helvetica = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA, 12);
helveticaBase = helvetica.GetCalculatedBaseFont(false);
writer.DirectContent.BeginText();
writer.DirectContent.SetFontAndSize(helveticaBase, 12f);
writer.DirectContent.ShowTextAligned(iTextSharp.text.Element.ALIGN_LEFT, "Hello world!", 35, 766, 0);
writer.DirectContent.EndText();

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

itextsharp — порт java библиотеки itext, API у них совпадает. Так что читать нужно документацию по itext (например здесь) и конвертировать примеры кода в C#. Информации именно по itextsharp практически нет.