【问题标题】:Lowagie iText : Align paragraph vertically within Cell objectLowagie iText:在 Cell 对象内垂直对齐段落
【发布时间】:2014-12-16 16:14:34
【问题描述】:

我看过很多关于在 PdfPCell 对象中垂直对齐段落对象的帖子和教程,但是有没有办法在 Cell 对象中设置垂直对齐?

目前我使用的是 Table 类而不是 PdfPTable 类,所以我没有找到太多关于这个问题的信息。

编辑:到目前为止添加尝试的解决方案。我已经尝试在段落本身上设置对齐方式 -

Paragraph p = new Paragraph("test", myFont);
p.setAlignment(Element.ALIGN_MIDDLE);

以及设置 Cell 对象的垂直对齐方式 -

Cell c = new Cell(p);
c.setVerticalAlignment(Element.ALIGN_MIDDLE);

这两个都对垂直对齐没有影响

【问题讨论】:

  • Cell 类已在 5 年前从 iText 中删除。删除它有充分的理由。你不应该使用它。您还应该避免在包名称中使用带有我的名字的 iText 版本,原因很多,这些原因已在 StackOverflow 上的不同问题中多次解释。
  • 不幸的是,我不能,这是我必须使用的库版本,并且没有其他替代方案,因为使用此版本已经进行了大量工作,没有计划升级它
  • 当您说大量工作已经发生时,我假设您指的是多年前完成的工作。如果是这样,那么是时候升级了。如果没有,我已经多次警告人们,使用过时版本的 iText 是一条死胡同,我真的很想知道我的建议没有被遵循的原因。
  • 不幸的是,它并没有你想象的那么久,而且我无法告诉上级他们应该使用什么,不应该使用什么;我负责使用所提供的工具来制定解决方案,无论这些工具可能多么过时。我不是来争论使用过时的库是否还有优点,我是来看看过时的库是否可以执行某些功能
  • 顺便说一句,我可以假设您对我的问题投了反对票吗?

标签: java itext


【解决方案1】:

Paragraph 的对齐方式设置为Element.ALIGN_MIDDLE 应该不起作用。

由于我已删除所有旧版本的 iText that should no longer be used,我无法测试您的其他建议。但是,我在 stderr.org 上找到了我写的关于 iText 的第一个教程的非常旧的副本:Chapter 5: Tables

在本教程中,有一个示例 Chap0506.java,其中包含以下几行:

cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);

生成的 PDF 正确对齐此单元格的内容:Chap0506.pdf

如果此代码对您不起作用(这就是您的意思:您将其显示为您在问题中尝试过的事情之一),您可能没有使用有缺陷的 iText 官方版本.我亲自删除了每台官方服务器的每一个实例。您应该认为您有责任通知您公司的当权者,他们为您提供了与官方版本不同的 iText 流氓版本。谁知道那个版本还有什么问题?您是否对其进行过间谍软件测试?

【讨论】:

  • 经过深思熟虑后,我决定将 Table 的所有实例转换为 PdfPTables;我还发现不能在每个单元格的基础上设置诸如填充之类的属性
  • Table 转换为PdfPTable 应该不会做太多工作,除非您需要行跨度。行跨度仅在较新版本的PdfPTable 中实现。
  • 是的,就复杂性而言,这并不是一个困难的过程,更多的是因为整个应用程序中使用的 Table 和 Cell 对象的数量以及利用 Table 特定功能的方法
  • 即使在我写的关于 iText 的第一本书(2006 年 11 月出版)中,我就已经不鼓励使用 Table 类。非常抱歉,贵公司担任软件架构师的人做得非常糟糕。我感觉到你的痛苦。
猜你喜欢
  • 2011-09-14
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 2011-11-25
  • 2014-11-15
  • 1970-01-01
  • 1970-01-01
  • 2019-03-14
相关资源
最近更新 更多