Создать файл PDF

309
14 апреля 2017, 19:20

Есть программа на WinForms которая в числе прочего формирует небольшой отчет в txt формате. С этим все просто, но возникла необходимость сохранять еще и картинку. Вопрос : можно ли силами c# создать pdf с текстом и изображением, если да то как?

Answer 1

itextsharp

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 Report.NET PDFsharp SharpPDF PDFjet ASP.NET FO PDF PDF Clown) описано здесь

https://habrahabr.ru/post/112707/

Answer 2

Что бы писать через itextsharp в созданном PDF на русском можно сделать так :

            var document = new Document(PageSize.A4, 20,20,30,20);
            string ttf = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIALNBI.TTF");
            var baseFont = BaseFont.CreateFont(ttf, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            var font = new iTextSharp.text.Font(baseFont, iTextSharp.text.Font.DEFAULTSIZE, iTextSharp.text.Font.NORMAL);

            using (var writer = PdfWriter.GetInstance(document, new FileStream(path, FileMode.Create)))
            {
              document.Open();
              document.NewPage();
              document.Add(new Paragraph("Русский текст",font));
              document.Close();
              writer.Close();
            }
READ ALSO
Как заставить объект вращаться по оси?

Как заставить объект вращаться по оси?

Всем приветЭтот код вращает мой объект по "y" оси

234
Как заставить IIS обрабатывать SOAPAction?

Как заставить IIS обрабатывать SOAPAction?

Работал работал себе SOAP под IIS 6 на NET 20, и спустя последнюю неделю начал выдавать такую ошибку (для запроса Soap 1

209
с# запрос на выборку из mysql

с# запрос на выборку из mysql

Есть запрос к БД:

192
Удаление дочернего елемента WPF Viewport3D

Удаление дочернего елемента WPF Viewport3D

ЗдравствуйтеВ Viewport3D добавляю линию, линия рисуется без проблем, методом из библиотеки 3DTools

217