0

我正在尝试从 Android 中的旧应用程序打开标准 PDF 表单,使用 iText 覆盖表单字段并传递给 Android 上的 Adob​​e Reader 以填写表单。

我已经能够手动创建 TextFields,但我希望将 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(page, 0,0);

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

据我所知,java.awt.geom.AffineTransform 仅在 Java 中不起作用。

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

4

1 回答 1

3

经过一番搜索,我找到了这种方法。首先,我必须从在我的 android 项目中使用 iText5.3.1 库更改为 droidText 库。

一旦我安装了 droidText 库,就可以使用以下代码。(和eclipse中的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);
于 2012-09-13T04:13:54.290 回答