gpt4 book ai didi

java - 可以使用 iText 或其他 API 将 PDF 中的可填写字段定位到坐标吗?

转载 作者:行者123 更新时间:2023-12-01 10:19:43 27 4
gpt4 key购买 nike

我需要将图像嵌入到 PDF 中。 PDF 大小和图像大小是相同的(到目前为止我已经完成了所有工作)。困难的部分是最终用户需要在图像的某些区域上方输入一些文本,这些区域将是预定义的,但进入这些位置的文本不是。我知道可以使用 iText 等工具创建可填充字段。我已经搜索了几天如何使用 iText 来完成设置可填充字段并将任何类型的文本定位到绝对位置,但令人沮丧的是取得了零进展。所以我真的可以利用某人在这个主题上的专业知识。谢谢

最佳答案

你的问题并不完全清楚,如果你做出不同的假设,答案也会不同。

假设 1:假设您有一个 PDF,其中包含填充整个页面的图像。您现在想要在预先知道的位置添加文本字段。

在这种情况下,您将使用 PdfStamperaddAnnotation() 方法,如 StackOverflow 问题 How can I add a new AcroForm field to a PDF? 的答案中所做的那样。

PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
// create a field for which you define the coordinates using a Rectangle
stamper.addAnnotation(field, 1);
stamper.close();

这里我们使用 addAnnotation() 方法将 field 添加到第 1 页。

现在的问题是:如何创建该 field 对象。这很容易。例如,参见 ReadOnlyField示例:

Rectangle rect = new Rectangle(36, 720, 144, 806);
TextField tf = new TextField(stamper.getWriter(), rect, "text");
tf.setOptions(TextField.MULTILINE);
PdfFormField field = tf.getTextField();

请注意,我使用左下角 (36, 720) 和右上角 (144, 806) 的坐标来创建一个 矩形 对象。我使用 stamperPdWriter 实例创建一个 TextField,该 rect 并为该字段指定名称 文本。假设您希望输入的文本被换行,我将文本字段设为 MULTILINE 字段。然后,我从 TextField 对象获取一个 PdfFormField 实例。

假设 2:您从头开始创建 PDF 文档,在其中创建一个页面,并在其中添加与页面大小相同的图像。现在您只想添加表单字段来添加文本。 iText 官方网站上有很多关于如何定义和添加文本字段的示例:MultiLineField , TextFields , GenericFields , CreateFormInTable等等。

您还可以在问题 How to add a hidden text field? 中找到一个很好的例子。问题中的示例显示了如何添加可见的文本字段;答案显示了如何隐藏它。

在此示例中,xy 是左下角的坐标,而 wh code> 是字段的宽度和高度:

TextField field = new TextField(writer, new Rectangle(x, y - h, x + w, y), name);
field.BackgroundColor = new BaseColor(bgcolor[0], bgcolor[1], bgcolor[2]);
field.BorderColor = new BaseColor(
bordercolor[0], bordercolor[1], bordercolor[2]);
field.BorderWidth = border;
field.BorderStyle = PdfBorderDictionary.STYLE_SOLID;
field.Text = text;
writer.AddAnnotation(field.GetTextField());

这是一个 iTextSharp 示例(用 C# 编写),但将其移植到 Java 非常容易。

最后:也许你已经知道这一切了。也许您只是想知道所有这些坐标是关于什么的。这个问题的答案也可以在iText官方网站上找到:

我的答案中的几乎所有链接都引用了在 StackOverflow 上回答之前问题时编写的示例和答案。请不要说这样的话我已经搜索了几天如何使用 iText 来完成设置可填充字段并将任何类型的文本定位到绝对位置,因为对于知道这一点的人来说很难相信所有的答案都可以在official iText web site上找到。您的老板可能想知道您这些天都在搜索哪些网站。

关于java - 可以使用 iText 或其他 API 将 PDF 中的可填写字段定位到坐标吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35678562/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com