【发布时间】:2016-10-07 10:57:45
【问题描述】:
我正在使用 iTextSharp 将数百个表格一个接一个地添加到 PDF 文档中。但是这样做的问题是我们不知道何时创建新页面。有时表格的一半转到下一页,一半留在当前页面。有什么办法可以让我有最后写的位置,以便我可以决定是否创建新页面。
我在 StackOverFlow 上找到了一些代码,但没有一个对我有用。 在向文档添加新数据之前,我尝试使用以下代码获取位置。
float y = PdfPageHeight;
for(int i=0;i<100;i++)
{
if(y<=document.document.BottomMargin)
{
document.NewPage();
}
mainTableHeader = new PdfPTable(1);
mainTableHeader.SetWidthPercentage(new float[] { PageSize.A4.Width }, PageSize.A4);
AddContent(ref mainTableHeader); //Adding some cells to the table
document.Add(mainTableHeader);
y=writer.GetVerticalPosition(false);
}
如果有人知道怎么做,请帮助我。
【问题讨论】:
-
我不知道它是否会有所帮助,但
PdfPTable有一个名为TableEvent的属性,您可以通过创建一个实现接口IPdfPTableEvent的类来订阅它,实际上还有更多名为IPdfPTableEventSplit的信息接口,专用于表拆分。您可以查看其usage here 的示例。您也许可以使用它来跟踪全局对象。 -
y<=document.document.RightMargin- 为什么要将 y 值与 right 边距进行比较。这没有意义,不是吗? -
@mkl - 嘿,它的“y
-
你什么时候做那个测试?
writer.GetVerticalPosition仅在将某些内容添加到文档时更改,而不是在您仍然构建要添加的表格时更改。 -
您是使用
document.Add()将表格添加到文档中,还是使用ColumnText或WriteSelectedRows()之类的东西?
标签: c#-4.0 pdf-generation itextsharp