2012-10-19 68 views
2

我目前正在使用Itextsharp,并且在PDfPtables中遇到了一些麻烦。 有时它们对于一个页面来说太大了,并且在添加到一个文档时会在多个页面上分解。 可悲的是,理性的生活对于我的一些上司来说是不可接受的 - 他们坚持认为桌子应该“缩小”到一页上。有没有办法做到这一点?有一些诱人的提示,我可能是可能的 - 但提示是我所有的。是否可以“缩小”PdfPtable?

什么是替代方案?也许我可以从文档中删除胖表并用较小的字体和单元再次构建表,但这会非常笨拙 - 我宁愿“缩小”,因为缺乏更好的单词。

我当前的代码:

Dim test As PdfContentByte = mywriter.DirectContent 
Dim templ = test.CreateTemplate(mywriter.PageSize.Width, mywriter.PageSize.Height) 
Table.WriteSelectedRows(0, Table.Rows.Count - 1, 0.0F, mywriter.PageSize.Height, templ) 
Dim myimage = Image.GetInstance(templ) 
' myimage.ScaleAbsolute(mywriter.PageSize.Width, mywriter.PageSize.Height) 

将scaleabsolute是必要的? myimage.SetAbsolutePosition(0,0) test.AddImage(MYIMAGE)

这段代码放在一个东西的网页,但它的页面的高度和宽度约为页面的四分之一 - 无线将尝试找到bug ...

回答

3

创建表并定义'总宽度'。只要iText知道表格的宽度,就可以计算所有行的高度。一旦你知道身高,你可以检查:

  1. 表格是否适合页面?只需按原样添加即可。如果您不想考虑任何页边距,也许使用WriteSelectedRows
  2. 页面上没有足够的空间吗?将该表添加到PdfTemplate(有多种方法可以做到这一点),将PdfTemplate包装在Image内。缩放图像,并将其添加到文档中。
+0

谢谢,这是我迄今听到的第一个综合答案! –

+0

我有一个问题:你是什么意思与“和形象”?我的代码到目前为止是... thx! –

+0

这是一个错字。我在代码中看到一个错误:创建模板时,使用PageSize.Height作为高度。这并不能解决你的问题。您应该计算表格的高度(如http://1t3xt.be/?04f所示)并使用该高度。您需要与WriteSelectedRows中的Y偏移相同的值。此外,可以使用-1而不是Table.Rows.Count - 1.使用-1将绘制所有行。 –

相关问题