【问题标题】:Getting the Line Postion In iText在 iText 中获取行位置
【发布时间】:2014-06-30 17:11:01
【问题描述】:

我正在使用iText 5.1.0 在 java 中创建 PDF。我有 3 块表,它们的大小可能会动态变化

Table 1

.

.

. 

Table 2 

.

.

.

.

End of page 

现在我需要计算 table 2 下方空间的方法。我使用页面大小为A4

最初是这样打印的,

但是当前面表格中的数据增加时,它会打印出来,就像第二个一样。 所以我想在插入表格之前尽可能计算下面的空间

非常感谢任何建议。

谢谢

【问题讨论】:

  • 我是否正确理解您的绘图,表 2 下面的页面是空的?
  • 是的。但问题是,只有当我可以插入带有数据的标题时,我才需要插入 table2。考虑我可以单独打印标题的情况,因为它是最后一行,所以我看起来像一个空表。我该如何处理?
  • @mkl 并在评论中添加您的问题。我需要得到 table2 下面的空行数。有可能吗?
  • 目前如何插入表格?你在用PdfPTable吗?关于但问题是我需要插入table2,只有当我可以插入带有数据的标题 - iText 布局不会自动执行此操作吗?关于 我需要得到 table2 下面的空行数。有可能吗? - 你什么时候尝试这个?在将 table2 添加到文档之后?也许您应该发布您当前的代码,以便其他人能够建设性地回答您。
  • 好的,您可以在添加该表后检索当前的 y 位置(我仍然需要查找确切的位置)并从中计算剩余的可用空间。但是,这对应的行数取决于这些行的内容。使用哪些字体大小?使用哪种线到线距离?等等。

标签: java pdf-generation itext


【解决方案1】:

PdfWriter 中有一个名为getVerticalPosition() 的方法。它需要一个布尔参数,告诉 iText 是否确保换行。如果您不确保换行 (false),您将获得当前的 Y,但这可能不是您需要的位置。如果您确保换行(true),则会添加新行并获得新行开始的位置。

当您从头开始创建 A4 页面时,并且 Y 轴指向上方,您需要从该垂直位置减去底部边距,以找出新表格剩余的空间。

请注意,我们对 iText 中的 getVerticalPosition() 方法并不满意:拥有一个更改文档内容的 getter 并不是很优雅。在像您这样的情况下,我们更喜欢使用 ColumnText 来负责布局过程,而不是让 iText 决定在哪里拆分表格。

【讨论】:

  • 你能从你的收藏中发布一个例子吗?
  • getVerticalPosition() 方法是直截了当的,所以我认为您的评论不是关于这样的示例。使用ColumnText 有点困难。我在 Google 上搜索了一个示例,并在 StackOverflow 上找到了一个示例:stackoverflow.com/questions/15387642/…
  • 我正在参考你的书 iText in Action 。它非常有帮助:)也感谢您的回答
  • 来自您的示例 cb.lineTo(PageSize.A4.width(), pos); 。我不能使用任何名为 width() 的方法吗?有什么建议吗?
  • 我不明白你的问题。你说的是哪个例子? PageSize.A4RectangleRectangle 类有一个 getWidth() 方法。如果您使用的示例使用了 width() 方法,那么您指的是非常古老的文档。
猜你喜欢
  • 2015-11-30
  • 2017-09-30
  • 2019-01-27
  • 2011-04-06
  • 2013-05-11
  • 2013-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多