neue Seite iTextSharp

  • WPF

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Frostbeule.

    neue Seite iTextSharp

    Hallo Zusammen,

    kurz zu meinem Anliegen. Ich erstelle mit Hilfe von iTextSharp eine PDF in der Werte aus einer Maske ausgelesen und aus einem DATAGRIDVIEW eingefügt werden.

    Nun möchte ich nach einer bestimmten Zeile aus dem DATAGRIDVIEW eine neue Seite erstellen( PdfFile.NewPage).

    VB.NET-Quellcode

    1. For i As Integer = 0 To DataGridView1.Rows.Count - 2
    2. For j As Integer = 0 To DataGridView1.Columns.Count - 1
    3. pdfcell = New PdfPCell(New Phrase(DataGridView1(j, i).Value.ToString(), pTable))
    4. PdfTable.HorizontalAlignment = PdfPCell.ALIGN_LEFT
    5. PdfTable.AddCell(pdfcell)
    6. Next
    7. Next
    8. PdfFile.Add(PdfTable)


    Grund für diese Erweiterung ist, dass die Fußzeile mit der Zeile aus dem DATAGRIDVIEW kollidiert.

    Also soll nach 20 DATAGRIDVIEW -Zeilen ein PdfFile.NewPage() folgen und anschließend soll auf Seite 2 der Datensatz 21 folgen.
    Ab Datensatz 50 soll wieder eine neue Seite erstellt werden...

    VB.NET-Quellcode

    1. Inherits PdfPageEventHelper
    2. Public Overrides Sub OnendPage(ByVal writer As iTextSharp.text.pdf.PdfWriter, ByVal document As iTextSharp.text.Document)
    3. Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED)
    4. Dim cb As PdfContentByte = writer.DirectContent
    5. cb.BeginText()
    6. cb.SetFontAndSize(bf, 12)
    7. cb.SetTextMatrix(50, 30)
    8. cb.ShowText("TEXTTEXT " & writer.PageNumber)
    9. cb.EndText()

    Ich hoffe ich konnte mein Anliegen darstellen :)

    Besten Dank und schöne Grüße

    Frostbeule
    musst halt zunächst mal die Trigger-Zeilen in ein Array packen, und dann einen Zähler mitlaufen lassen und immer gucken, ob die nächste Trigger-Zeile erreicht wurde. Oder mit einem Select Case gehts auch

    VB.NET-Quellcode

    1. For i As Integer = 0 To DataGridView1.Rows.Count - 2
    2. For j As Integer = 0 To DataGridView1.Columns.Count - 1
    3. pdfcell = New PdfPCell(New Phrase(DataGridView1(j, i).Value.ToString(), pTable))
    4. PdfTable.HorizontalAlignment = PdfPCell.ALIGN_LEFT
    5. PdfTable.AddCell(pdfcell)
    6. Next
    7. Select Case i
    8. Case 20, 30, 60, 99
    9. PdfFile.NewPage()
    10. End Select
    11. Next
    12. PdfFile.Add(PdfTable)


    PS: Übrigens hast du im falschen Unterforum gepostet - deine Frage gehört unter "Allgemeine Probs" - nicht Wpf.
    Du musst vermutlich die Table beenden und auf der nächsten Seite eine neue Table erzeugen.

    Ggf hilft auch, die Tabelle automatisch umbrechen zu lassen (PdfTable.SplitRows)?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()