środa, 18 marca 2020

C# - Zapis danych do pliku PDF

W tym poście chciałbym krótko opisać sposób w jaki można utworzyć prosty dokument w formacie PDF.

[Źródło: https://docs.microsoft.com/en-us/dotnet/]

W projekcie najwygodniej posłużyć się gotową biblioteką np. PDFsharp. Pozwala ona w łatwy sposób tworzyć i przygotowywać dokumenty. Instalacji należy dokonać poprzez manager pakietów Nugat.


Aby przygotować dokument należy wypełnić kilka pól danych:

  1. PdfDocument _document;
  2. XGraphics _gfx;
  3. PdfPage _page;
  4. XFont _font;
  5. string _fileName;

Pierwsza wartość tworzy nowy dokument PDF. Następnie W celu wypisania tekstu wykorzystywany jest obiekt XGraphics. Następnie strona w dokumencie pdf, rodzaj czcionki. Ostatnim elementem jest nazwa pliku.

  1. public PdfCreate(string documentTitle)
  2. {
  3.     _document = new PdfDocument();
  4.     _document.Info.Title = documentTitle;
  5.     _page = _document.AddPage();
  6.     _gfx = XGraphics.FromPdfPage(_page);
  7.     _gfx2 = XGraphics.FromPdfPage(_page2);
  8.     _font = new XFont("Verdana"10, XFontStyle.Regular);
  9. }

Aby wprowadzić tekst do dokumentu należy użyć funkcji z obiektu XGraphics:

  1. public void DrawTextInDocument(String txt, double x, double y, XStringFormat format)
  2. {
  3.     _gfx.DrawString(txt, _font, XBrushes.Blacknew XPoint(x, y), format);
  4. }

Klasa XStringFormats zawiera sposoby pozycjonowania tekstu na ekranie np:

  1. //np. XStringFormats.BaseLineLeft
  2. public static XStringFormat Default { get; }
  3. public static XStringFormat BaseLineLeft { get; }
  4. public static XStringFormat TopLeft { get; }
  5. public static XStringFormat CenterLeft { get; }
  6. public static XStringFormat BottomLeft { get; }
  7. public static XStringFormat BaseLineCenter { get; }
  8. public static XStringFormat TopCenter { get; }
  9. public static XStringFormat Center { get; }
  10. public static XStringFormat BottomCenter { get; }
  11. public static XStringFormat BaseLineRight { get; }
  12. public static XStringFormat TopRight { get; }
  13. public static XStringFormat CenterRight { get; }
  14. public static XStringFormat BottomRight { get; }

W celu zapisu dokumentu należy wywołać funkcję Save na obiekcie PdfDocument:

  1. public void SaveDocument()
  2. {
  3.     _document.Save(_fileName);
  4. }