当前位置: 首页 > 知识库问答 >
问题:

Android i文本添加模板戳 PDF 表单字段覆盖现有的 PDF 文档

柯昱
2023-03-14

我正在尝试从Android中的一个遗留应用程序打开一个标准的PDF表单,使用iText覆盖表单字段,并传递到Android上的Adobe Reader来填写表单。

我已经能够手动创建文本字段,但我更希望有一个pdf文件作为模板,以加快过程和更好地控制质量。

这是我到目前为止的代码,遵循itext的例子。

    AssetFileDescriptor descriptor = getAssets().openFd("standardWO_Template_v1_fo.pdf");
            File templateFile = new File(descriptor.getFileDescriptor().toString());
            PdfReader reader = new PdfReader(intent.getData().getPath());
            reader.selectPages("1");
            PdfReader templateReader = new PdfReader(templateFile.getAbsolutePath());
            PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(file));
            // Stamp the template onto the document
            PdfImportedPage page = stamper.getImportedPage(templateReader, 1);
            PdfContentByte cb = stamper.getOverContent(1);
            cb.addTemplate(page, 0, 0);

我遇到的问题在最后一行。cb.addTemplate(第0,0页);

Eclipse报告以下错误。无法解析java.awt.geom.AffineTransform类型。它是从所需的. class文件间接引用的

从我已经能够告诉java.awt.geom.AffineTransform不会在Android只有Java工作。

有没有不同的方法来完成我的任务或者让AffineTransform在Android中工作?

共有1个答案

韦锦程
2023-03-14

经过更多的搜索,我找到了这种方法。首先,我必须从在我的Android项目中使用iText5.3.1库更改为机器人文本库。

一旦我安装了机器人文本库就能够使用以下代码。(以及日食中的 ctrl-o)

    File templateFile = new File(dir.getAbsolutePath() + "/templates/standardWO.pdf");
            // Read the incoming file
            PdfReader reader = new PdfReader(intent.getData().getPath());
            // Read the template form information
            PdfReader templateReader = new PdfReader(templateFile.getAbsolutePath());
            // Create the stamper from the incoming file.
            PdfStamper stamper = new PdfStamper(templateReader, new FileOutputStream(file));
            // Import the template information
            PdfImportedPage iPage = stamper.getImportedPage(reader, 1);
            // get the direct content
            PdfContentByte cb = stamper.getUnderContent(1);
            // Add the imported page to the content
            cb.addTemplate(iPage, 0, 0);
            stamper.close();
            Log.v(TAG, "Opening file in adobe reader: " + file.getAbsolutePath());
            loadDocInReader(file);
 类似资料:
  • 我有一个pdf模板,我试图在新文档中重写它。我需要从模板PDF中获取一些字段,并在新的PDF中重写它们的值。我这样做: 但我发现了一个例外: iText。内核PDFEException:“没有用于生成间接项的关联PdfWriter。” 我做错了什么以及如何修复它?这是第七次。

  • 问题内容: 我想在叠加文字中添加一个链接。我已经读过,使用Anchor 仅适用于从头开始制作的文档,不适用于现有的pdf。我的 代码是向每个页面添加一个覆盖文本。我的目标是使 该文本的一部分可点击。我不知道如何制作 短语中的链接注释。 这是我的代码: 所以我的叠加看起来像这样: 从[匿名]下载我的网站在1:20 2015年2月17日 上午CST 如何将我的网站转换为链接注释?在SO中搜索时,我 找

  • 我们有一个包含现有字段的PDF表单,我们正在尝试使用默认值向表单添加新字段,但没有成功。基本上,我们正在做以下工作: 字段idClient使用新值更新,但新字段idDocTrackType没有内容。我做错了什么?

  • 我需要添加一些文本内容的底部现有的。带有iText的pdf文档。我有一个工作方法,但新内容显示在左上角,与现有内容重叠: 如何“移动”最后一页底部的,而不是第一页的开头?我对iText不熟悉,令人惊讶的是,在网上找不到解决方案。

  • 我正在使用PDFBox 1.8.10将文本添加到PDF文档中。它可以很好地工作,除了在某些文档中添加文本(使用pdf structure inspector检查),但不以pdf格式显示。样本文件如下:https://kali-docs.ks2.fr/share/s/Ut_LdO8LR4WEeEd1y2k58Q 因为我想将一些自定义AlphaConstant设置为文本(和矩形),所以我使用图形状态参

  • 我有一个PDF中定义的表单。表单中的一个字段是多行文本字段。 文本字段中的值由使用Apache PDFBox的java程序填充。 问题是当值大约为5到6行时,文本框会自动显示文本。但如果超过6行,则文本框不显示该值。我必须特别点击文本字段来显示文本。如果我再次单击文本框外,文本将消失。