【问题标题】:How to get Paragraph absolut coordinates with iText?如何使用 iText 获取段落绝对坐标?
【发布时间】:2014-04-04 15:22:46
【问题描述】:

我需要获取已添加到文档中的段落的绝对坐标并在其附近加入图像。

通常我的问题如下: 我在每行之前都有一个带有图像(选中/未选中)的清单。我已经这样做了,但是如果检查项目需要例如 2 行,那么第二行从页面的开头开始。我想要的是从第一行开始的位置开始第二行。等于第二行是否有边距。 提前致谢!

【问题讨论】:

  • 我已经添加到文档中的段落 - 你的意思是你刚刚将该段落添加到Document 并且还没有关闭它?或者您是否将该段落添加到某个文档然后关闭它,所以您只有生成的 PDF 文件?
  • 不,它不是关闭的文档。如果你在谈论它,我不需要解析它。
  • 在这种情况下,您在添加段落之前和之后从PdfWriter.getVerticalPosition 获得的信息与Document.getLeftDocument.getRight 相结合就足够了吗?
  • 看起来像我正在寻找的东西,谢谢,那我得试试。

标签: java android pdf pdf-generation itext


【解决方案1】:

我认为你的问题是错误的。请允许我解释一下:你有一个特定的要求:你想用一个充当项目符号的图像(代表一个选中/未选中的复选标记)开始一行。更具体地说:您希望项目符号后面的文本正确对齐。这是一个有效的要求。

但是,在您的问题中,您是在询问具体的实现。您想在 Y 位置(检查段落是否占用一行或多行)和 X 位置(使用特定缩进开始第二行)之间进行调整。

虽然可能有可能使用页面事件(询问段落的开始和结束位置)来实现您想要的,但我认为您实际上是在要求开箱即用的功能:为什么不使用 @ 987654323@ 以图像块作为项目符号?

我编写了一些示例代码ListWithImageAsBullet,其中我使用灯泡作为子弹(在您的情况下,您将使用复选框图像)。我在List 中添加了三个项目,第二个项目占用了不止一行。如您所见,第二行缩进正确(您可以使用List 类中可用的不同方法来增加缩进)。

请查看resulting PDF。这就是你要找的吗?

如果是这样,这就是它的完成方式:

Image image = Image.getInstance(IMG);
image.scaleAbsolute(12, 12);
image.setScaleToFitHeight(false);
List list = new List();
list.setListSymbol(new Chunk(Image.getInstance(image), 0, 0));
list.add("Hello World");
list.add("This is a list item with a lot of text. It will certainly take more than one line. This shows that the list item is indented and that the image is used as bullet.");
list.add("This is a test");
document.add(list);

请注意,我将图像缩放为 12 x 12 pt,因为 12pt 是默认字体大小。另外不要忘记禁用图像的自动缩放(否则,您最终会得到非常小的图像作为项目符号)。

【讨论】:

  • 你完全正确!非常感谢您的回答。
猜你喜欢
  • 2020-08-31
  • 1970-01-01
  • 1970-01-01
  • 2016-11-19
  • 2014-08-30
  • 2013-01-27
  • 1970-01-01
  • 1970-01-01
  • 2015-05-05
相关资源
最近更新 更多