2016-11-11 3 views
0

ich geschrieben habe den folgenden Code brechen pdf zu generieren:Wie pdf Seite in iTextSharp pdf

path = Server.MapPath("PDF-Files") 
filename = path + "/mydata.pdf" 

document = New iTextSharp.text.Document(iTextSharp.text.PageSize.A4, 5.0F, 5.0F, 5.0F, 5.0F) 

Dim bfTimes As BaseFont 
Dim times As iTextSharp.text.Font 

bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, False) 
times = New iTextSharp.text.Font(bfTimes, 8, iTextSharp.text.Font.NORMAL) 

Dim writer As PdfWriter 
writer = PdfWriter.GetInstance(document, New FileStream(filename, FileMode.Create)) 
Dim ev As New itsEvents 
writer.PageEvent = ev 

If document.IsOpen Then 

    document.Close() 

End If 

document.Open() 

Dim spacing As Integer 

spacing = 0 

Dim curY, lineHeight As Double 

curY = document.Top 
lineHeight = 0 

Const maxPerLine As Integer = 3 

For k As Integer = 0 To ds.Tables(0).Rows.Count - 1 

    Dim table As PdfPTable 
    table = New PdfPTable(3) 

    table.DefaultCell.Border = iTextSharp.text.Rectangle.NO_BORDER 
    table.TotalWidth = 200.0F 
    table.LockedWidth = True 

    Dim cell As PdfPCell 
    cell = New PdfPCell() 
    cell.AddElement(New iTextSharp.text.Paragraph(ds.Tables(0).Rows(k)("id").ToString(), times)) 
    cell.AddElement(New iTextSharp.text.Paragraph(ds.Tables(0).Rows(k)("name").ToString() + " " + dsLabelTemp.Tables(0).Rows(k)("city").ToString() + "(" + dsLabelTemp.Tables(0).Rows(k)("post").ToString() + ")", times)) 
cell.AddElement(New iTextSharp.text.Paragraph(ds.Tables(0).Rows(k)("userpersonal").ToString(), times)) 
    cell.Colspan = 3 
    cell.HorizontalAlignment = 0 
    cell.Border = iTextSharp.text.Rectangle.NO_BORDER 
    cell.Padding = 20.0F 
    table.AddCell(cell) 


    table.WriteSelectedRows(0, -1, document.Left + spacing, curY, writer.DirectContent) 

    spacing = spacing + 200 

    lineHeight = Math.Max(lineHeight, table.TotalHeight) 

    If 0 = (k + 1) Mod maxPerLine Then 

     curY = curY - lineHeight 
     spacing = 0 
     lineHeight = 0 

    End If 

    Next 

    document.Close() 
    ShowPdf(filename) 

Wenn obigen Code in perfekter Art und Weise auszuführen, und gibt den Ausgang, aber es zeigt nicht die, wenn Seite 1 abgeschlossen.

enter image description here

In der oberen Bild, können Sie prüfen, ob es nicht angezeigt vollständige Datensätze ist.

Ich möchte die Seite zu brechen, wenn die Seite voll ist oder die Seitenhöhe erhöhen.

Wie kann ich Daten auf die zweite Seite übertragen, wenn meine 1. Seite voll ist?

+0

Wenn Sie iTextSharp wollen die Tabelle über verschiedene Seiten verteilen, dann warum Sie 'WriteSelectedRows verwenden()'? Warum fügst du dem 'Dokument' nicht einfach die 'Tabelle' hinzu? Wo hast du gelernt, iTextSharp Code zu schreiben? Kannst du deinen Lehrer entlassen oder das Buch wegwerfen, das du gelesen hast? –

+0

Da ich 3 Tabelle in 1 Zeile schreiben muss und dann auf neue Zeile und nach nahe an der 1. Seite brechen muss dann auf 2. Seite umleiten. – deepak

+0

Dieser Kommentar ist keine Antwort auf meine Frage. Was Sie sagen, macht keinen Sinn, und Sie beweisen das mit Ihrer Antwort: 'document.Add (table)' war genau das, was Sie brauchten. –

Antwort

0

Ich habe die Lösung.

Unten ist mein neuer Code:

Dim table As PdfPTable 
     table = New PdfPTable(4) 

     table.DefaultCell.Border = iTextSharp.text.Rectangle.NO_BORDER 
     table.TotalWidth = 400.0F 
     table.LockedWidth = True 

    For k As Integer = 0 To ds.Tables(0).Rows.Count - 1 

     Dim cell As PdfPCell 
     cell = New PdfPCell() 
     cell.AddElement(New iTextSharp.text.Paragraph(ds.Tables(0).Rows(k)("id").ToString(), times)) 
     cell.AddElement(New iTextSharp.text.Paragraph(ds.Tables(0).Rows(k)("name").ToString() + " " + dsLabelTemp.Tables(0).Rows(k)("city").ToString() + "(" + dsLabelTemp.Tables(0).Rows(k)("post").ToString() + ")", times)) 
     cell.AddElement(New iTextSharp.text.Paragraph(ds.Tables(0).Rows(k)("userpersonal").ToString(), times)) 
     cell.Colspan = 1 
     cell.HorizontalAlignment = 0 
     cell.Border = iTextSharp.text.Rectangle.NO_BORDER 
     cell.Padding = 20.0F 
     table.AddCell(cell) 
    Next 

document.Add(table) 
document.Close() 
ShowPdf(filename) 
+0

Und genau das meinte ich in meinem Kommentar. –

Verwandte Themen