2

我使用 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()
4

3 回答 3

5

将此设置设置为您的表:

tblbody.SplitLate = false; tblbody.SplitRows = true;

于 2009-11-19T14:55:37.310 回答
4

不幸的是,SplitLate 和 SPlitRows 仅在 PdfPTable 上可用。

您可以设置 tblbody.TableFitsPage 和他 CellsFitPage = false;

为其他人发布,因为我花了很多时间试图弄清楚这一点。

于 2011-04-11T17:32:53.940 回答
0

这些天我也遇到了同样的问题。它有一个空白页的原因可能是有一个单元格跨越了太多行,它既不能将单元格放在一个页面中,也不能将它分成两页(当CellsFitPage = true)。所以通过设置CellsFitPage = false可以解决这个问题。但是如果我们想要CellsFitPage = true呢?然后我们可能需要创建许多小单元格并将它们的边框设置为 0,这会使它们看起来像一个长单元格,并且页面可以将它们拆分(将许多单元格拆分为不同的页面,而不是拆分一个长单元格)。

于 2014-08-05T09:15:11.900 回答