【问题标题】:itextsharp: pdfptables are running into each otheritextsharp: pdfptables 正在相互运行
【发布时间】:2009-09-03 20:12:34
【问题描述】:

有人知道为什么我的桌子会互相重叠吗?

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

【问题讨论】:

    标签: vb.net pdf itextsharp


    【解决方案1】:

    你的减法只是一点点。你用当前表而不是前一个表减去你的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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-25
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多