none
neue Seite iTextSharp RRS feed

  • Frage

  • 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).

        For i As Integer = 0 To DataGridView1.Rows.Count - 2
            For j As Integer = 0 To DataGridView1.Columns.Count - 1
                pdfcell = New PdfPCell(New Phrase(DataGridView1(j, i).Value.ToString(), pTable))
                PdfTable.HorizontalAlignment = PdfPCell.ALIGN_LEFT
                PdfTable.AddCell(pdfcell)
            Next
        Next
        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...

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

    Ich habe es hiermit auch versucht hat aber es hat auch nicht geklappt:

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


    Ich hoffe ich konnte mein Anliegen darstellen

    Besten Dank und schöne Grüße
    GerryGras



    • Bearbeitet GerrGras Dienstag, 10. Januar 2017 13:50
    Dienstag, 10. Januar 2017 13:48

Antworten

  • Soweit ich das mit dem geposteten Code umreissen kann, sieht der untere Ansatz doch schon ganz gut aus. Allerdings musst du auch pro Seite si Tablle vor dem Drucken hinzufügen und dann eine neue Table aufmachen. Also in etwa so:

              For i As Integer = 0 To DataGridView1.Rows.Count - 2
                 For j As Integer = 0 To DataGridView1.Columns.Count - 1
                    pdfcell = New PdfPCell(New Phrase(DataGridView1(j, i).Value.ToString(), pTable))
                    PdfTable.HorizontalAlignment = PdfPCell.ALIGN_LEFT
                    PdfTable.AddCell(pdfcell)
                 Next
                 Select Case i
                    Case 20, 30, 60, 99
                       PdfFile.Add(PdfTable)
                       PdfFile.NewPage()
                       PdfTable = New PdfPTable(...)
                 End Select
              Next
              ' zum Ende dann nochmals die Table hinzufügen
              PdfFile.Add(PdfTable)

    Dienstag, 10. Januar 2017 14:19