首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用itext 7将交互式复选框添加到PDF

使用itext 7将交互式复选框添加到PDF
EN

Stack Overflow用户
提问于 2019-01-15 00:37:35
回答 1查看 776关注 0票数 0

我正在尝试向由iText7 pdfHTML生成的AcroField添加复选框。这在默认情况下是不起作用的,我看到有人建议使用自定义标记工作程序,但尽管我尝试了很多,但我还是不能让它工作。有谁知道如何实现这个功能吗?或者举个例子?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-15 16:49:02

我已经创建了一个非常简单的示例来向您展示如何创建自定义标记worker,并在html处理pdf时将acrofield添加到文档中。

看看下面的代码片段:

代码语言:javascript
复制
class CustomTagWorkerFactory extends DefaultTagWorkerFactory {
@Override
public ITagWorker getCustomTagWorker(IElementNode tag, ProcessorContext context) {
    if (tag.name().equals("input")) {
        if (AttributeConstants.CHECKBOX.equals(tag.getAttribute(AttributeConstants.TYPE))) {
            return new AcroInputTagWorker(tag, context);
        }
    }
    return null;
}

在这里,我介绍了一个定制的标记工作者工厂,它将为除我指定的标记(<input type="checkbox">)之外的所有标记创建默认的标记工作者。

现在,让我们在文档中添加一个关于<input type="checkbox">处理的acrofield:

代码语言:javascript
复制
class AcroInputTagWorker extends InputTagWorker {

public AcroInputTagWorker(IElementNode element, ProcessorContext context) {
    super(element, context);
    PdfAcroForm.getAcroForm(context.getPdfDocument(), true)
            .addField(PdfFormField.createCheckBox(context.getPdfDocument(), new Rectangle(100, 700, 30, 30), "checkbox", "Off"));
}

基本上就是这样。一个非常简单的html文件(基本上,只有一行:<input type="checkbox">)的结果如下所示:

现在,让我们简要讨论一下可以改进的地方:

1)您可能想要检查是否设置了选中的属性,并在设置acrofield的值时考虑它(在上面的示例中,我刚刚将其设置为"Off")

2)你需要创建不同的acrofield的name值(我刚刚使用了"checkbox")

3)你可能想要在html到pdf处理之前预先定义的某个位置渲染acrofield。您可能希望让iText根据放置input标签的位置动态定义其位置。

在这种情况下,解决方案将更加困难。您将需要创建自己的CheckBox元素(可能是从Paragraph扩展而来)和它的呈现器(可能是从ParagraphRender扩展而来)。然后,您将需要覆盖它的layout方法(可能只需调用super.layout()来获取段落的坐标,然后才将acrofield添加到文档中)。这并不容易,但绝对值得一试!如果你不成功,你可以随时问另外一个问题:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54185621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档