我使用itextsharp创建了一个示例项目。在那里我提到了页脚和一个表,我按循环为给定的数字生成行,如果表拆分到另一页然后,我有一个没有给定数据的空白页。它似乎未定义。
以下是代码:
PdfWriter.GetInstance(document, New FileStream(ConfigurationManager.AppSettings("PDFPath") & fileName, FileMode.Create))
Dim FooterFont As Font = FontFactory.GetFont(FontFactory.TIMES_ROMAN, 12, Font.BOLD)
Dim FooterTxt As Phrase = New Phrase(Format(Now, "MM/dd/yyyy") )
Dim footer As New HeaderFooter(FooterTxt, True)
footer.Border = iTextSharp.text.Rectangle.TOP_BORDER
document.Footer = footer
document.Open()
Dim tblbody As New iTextSharp.text.Table(2)
tblbody.SpaceInsideCell = 1
tblbody.WidthPercentage = 100
tblbody.Border = 0
for i as integer=0 to 150
Dim cell = New Cell(New Phrase(i, New Font(Font.TIMES_ROMAN, 12, "" & CellStyle & "", iTextSharp.text.Color.BLACK)))
cell.Colspan = Span
cell.Border = CellBorder
cell.HorizontalAlignment = CellAlign
cell.VerticalAlignment = iTextSharp.text.Rectangle.ALIGN_MIDDLE
tblbody.AddCell(cell)
next
document.NewPage()
for i as integer=0 to 150
Dim cell = New Cell(New Phrase(i, New Font(Font.TIMES_ROMAN, 12, "" & CellStyle & "", iTextSharp.text.Color.BLACK)))
cell.Colspan = Span
cell.Border = CellBorder
cell.HorizontalAlignment = CellAlign
cell.VerticalAlignment = iTextSharp.text.Rectangle.ALIGN_MIDDLE
tblbody.AddCell(cell)
next
document.close()
答案 0 :(得分:5)
将此设置设置为您的表格:
tblbody.SplitLate = false; tblbody.SplitRows = true;
答案 1 :(得分:4)
不幸的是,SplitLate和SPlitRows仅在PdfPTable上可用。
您可以设置tblbody.TableFitsPage和他CellsFitPage = false;
为其他人发帖,因为我花了很多时间试图解决这个问题。
答案 2 :(得分:0)
这些天我也遇到过同样的问题。它有一个空白页面的原因可能是有一个单元格跨越太多行,它既不能将单元格放在一个页面中,也不能将它分成两页(当CellsFitPage = true
时)。因此,通过设置CellsFitPage = false
可以解决该问题。但是,如果我们想要CellsFitPage = true
怎么办?然后我们可能需要创建许多小单元格并将其边框设置为0,这将使它们看起来像一个单个长单元格,并且页面可以拆分它们(将许多单元格拆分为不同的页面而不是拆分单个长单元格)。 / p>