www.rolandk.de
- Aktuelle Themen zu .Net -
Achtung: Hier handelt es sich um meine alte Seite.
Die aktuelle ist unter folgendem Link erreichbar: www.rolandk.de/wp/
Home Blog Pdf Dateien mit C# erstellen (3)




















































Pdf Dateien mit C# erstellen (3)
Sonntag, den 03. Juli 2011 um 05:09 Uhr

Als letztes habe ich mir das erstellen von einfachen Tabellen-Strukturen mit iTextSharp angeschaut. Im Prinzip kann man es sich ähnlich vorstellen, wie in html. Zuerst beginnt man eine Tabelle und definiert die Spalten und danach fügt man Zelle für Zelle ein bis schließlich die Tabelle abgeschlossen wird. Als Beispiel habe ich eine einfache Tabelle mit Konten und deren Ständen erstellt, nachfolgend ein Screenshot.

 

 

 

Interessanterweise sind Tabellen die erste Möglichkeit, die ich gefunden habe, um größere Blöcke mit einem farblichen Hintergrund oder mit Rändern zu versehen. Zwar sind grundsätzlich Hintergrundfarben für normalen Text möglich, diese greift aber nur für den Hintergrund der Schriftzeichen selbst, nicht aber für eine ganze Zeile oder für einen ganzen Absatz. Auf diese Weise ergibt sich bei einem längeren Text ein "Treppeneffekt" am rechten Rand der Seite.

 

Nachfolgende Funktionen hängen Zellen an eine Tabelle an, die automatisch formatiert werden. So sieht natürlich eine "Header"-Zelle anders aus, als eine normale.

 

  1. /// <summary>
  2. /// Append a cell to the given table.
  3. /// </summary>
  4. private static void AppendHeaderCell(
  5. PdfPTable table, int rowSpan, int colSpan,
  6. Font font, string text)
  7. {
  8. PdfPCell newCell = new PdfPCell(new Phrase(text, font));
  9. newCell.BackgroundColor = new BaseColor(230, 240, 255);
  10. newCell.BorderColor = new BaseColor(230, 230, 230);
  11. newCell.Rowspan = rowSpan;
  12. newCell.Colspan = colSpan;
  13. table.AddCell(newCell);
  14. }
  15.  
  16. /// <summary>
  17. /// Append a cell to the given table.
  18. /// </summary>
  19. private static void AppendCell(
  20. PdfPTable table, int rowSpan, int colSpan,
  21. Font font, string text)
  22. {
  23. PdfPCell newCell = new PdfPCell(new Phrase(text, font));
  24. newCell.BorderColor = new BaseColor(230, 230, 230);
  25. newCell.Rowspan = rowSpan;
  26. newCell.Colspan = colSpan;
  27. table.AddCell(newCell);
  28. }

 

Es fehlt natürlich noch der Quelltext für den Aufbau der Tabelle aus obigen Screenshot. Hier der entsprechende Ausschnitt, den man in den Programmcode aus dem Post Pdf Dateien mit C# erstellen einfügen kann:

 

  1. //Write table
  2. string[] accountNames = new string[]
  3. {
  4. "Roland", "Robert", "Steffen", "Mike", "Ray",
  5. "Al", "Bud", "Kelly", "Homer", "Bart"
  6. };
  7. Random randomizer = new Random(Environment.TickCount);
  8.  
  9. PdfPTable newTable = new PdfPTable(2);
  10. newTable.SpacingBefore = 20f;
  11. AppendHeaderCell(newTable, 1, 1, fontParagraph, "Account");
  12. AppendHeaderCell(newTable, 1, 1, fontParagraph, "Value");
  13. int sum = 0;
  14. for (int loop = 1; loop < 10; loop++)
  15. {
  16. int currentValue = randomizer.Next(1000, 10000);
  17. sum += currentValue;
  18.  
  19. AppendCell(newTable, 1, 1, fontParagraph, accountNames[loop]);
  20. AppendCell(newTable, 1, 1, fontParagraph, currentValue.ToString("F2") + " €");
  21. }
  22. AppendCell(newTable, 1, 1, fontParagraph, string.Empty);
  23. AppendHeaderCell(newTable, 1, 1, fontParagraph, sum.ToString("F2") + " €");
  24. document.Add(newTable);

 

Wie man sieht, ist das Erstellen einer Tabelle nicht wirklich kompliziert. Soweit wie ich die Funktionen bis jetzt ausprobiert habe sind keine höchst komplexen Formatierungen möglich, meiner Meinung nach aber auch gar nicht nötig. Für das automatisierte Erstellen von einfachen Pdf-Dateien jedenfalls reichen die in diesem und den letzten beiden Block-Posts locker aus.

 

Kommentar hinzufügen

Ihr Name:
Kommentar: