2009-09-03 70 views
0

有誰知道我的桌子互相碰撞的原因嗎?itextsharp:pdfptables互相碰撞

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() 

即使我通過上表的高度遞減last_pos,他們仍然超過搭接在這樣一個奇怪的方式:

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

回答

2

你減法只是微幅下挫了。您正在用當前表格而不是上一個表格減去您的last_pos。你應該這樣做:

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)