2009-09-03 1 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

당신의 뺄셈 그냥 smidge 꺼져 있습니다. 이전 표 대신 현재 표로 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)