2009-09-03 4 views
0

Est-ce que quelqu'un sait pourquoi mes tables se chevauchent?itextsharp: les pdfptables se rencontrent

Dim datatable As PdfPTable = New PdfPTable(4) 
Dim page As Rectangle = document.PageSize 
datatable.TotalWidth = page.Width - document.LeftMargin - document.RightMargin 
datatable.DefaultCell.Border = 0 

Dim datatable1 As PdfPTable = New PdfPTable(4) 
datatable1.TotalWidth = page.Width - document.LeftMargin - document.RightMargin 
datatable1.DefaultCell.Border = 0 

Dim datatable2 As PdfPTable = New PdfPTable(4) 
datatable2.TotalWidth = page.Width - document.LeftMargin - document.RightMargin 
datatable2.DefaultCell.Border = 0 

Dim last_pos As Integer = 580 
Const xpos As Integer = 70 

For i = 0 To extreme_foods.Count - 1 
    datatable.AddCell(extreme_foods(i)) 
Next 

datatable.WriteSelectedRows(0, -1, xpos, last_pos, writer.DirectContent) 

For i = 0 To moderate_foods.Count - 1 
    datatable1.AddCell(moderate_foods(i)) 
Next 

last_pos = last_pos - datatable1.TotalHeight 
datatable1.WriteSelectedRows(0, -1, xpos, last_pos, writer.DirectContent) 

For i = 0 To light_foods.Count - 1 
    datatable2.AddCell(light_foods(i)) 
Next 

last_pos = last_pos - datatable2.TotalHeight 
datatable2.WriteSelectedRows(0, -1, xpos, last_pos, writer.DirectContent) 

'document.Add(datatable) 

Catch de As DocumentException 
    Console.Error.WriteLine(de.Message) 
    MessageBox.Show(de.Message) 
Catch ioe As IOException 
    Console.Error.WriteLine(ioe.Message) 
    MessageBox.Show(ioe.Message) 
Catch e As Exception 
    Console.Error.WriteLine(e.Message) 
    MessageBox.Show(e.Message) 

End Try 
document.Close() 

Même si je suis décrémentation last_pos par la hauteur de la table précédente, ils encore au tour, au cours d'une manière bizarre comme ceci:

screenshot http://img3.imageshack.us/img3/8168/38741459.jpg

Répondre

2

votre soustraction est juste un smidge au large. vous soustrayez votre last_pos par la table en cours au lieu du tableau précédent. vous devriez faire ceci:

Dim last_pos As Integer = 580 
Const xpos As Integer = 70 
For i = 0 To extreme_foods.Count - 1 
    datatable.AddCell(extreme_foods(i)) 
Next 

datatable.WriteSelectedRows(0, -1, xpos, last_pos, writer.DirectContent) 
For i = 0 To moderate_foods.Count - 1 
    datatable1.AddCell(moderate_foods(i)) 
Next 

last_pos = last_pos - datatable.TotalHeight '<--- NOT datatable1' 
datatable1.WriteSelectedRows(0, -1, xpos, last_pos, writer.DirectContent) 
Questions connexes