如何使用Java读取PDF表单字段?

4

我有一个要求,用户将在pdf表单上填写许多字段(文本字段、复选框、单选按钮),然后将其发送给我们。我需要读取pdf表单上的每个字段并插入到Oracle表中。

Edit1:我正在尝试以下代码,它生成了pdf文件,但当我双击它时显示“无效格式”。出了什么问题?

import java.io.FileOutputStream;
import java.io.IOException;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfWriter;

public class pdfGentest{
    public static void main(String[] args) {

        Document document = new Document();

        try {

            PdfWriter.getInstance(document, new FileOutputStream("c:\\HelloWorld.pdf"));
            document.open();
            document.add(new Paragraph("Hello World"));
            }
        catch (DocumentException de) {
            System.err.println(de.getMessage());
            } catch (IOException ioe) {
                System.err.println(ioe.getMessage());
            }       
    }
}

修复:由于我没有关闭文档,添加document.close();解决了问题。

2个回答

3

谢谢,MSI。我没有看到Java的任何文档。他们只列出了JAR文件。您知道他们是否提供文档吗? - Ris
嘿,MSI,我有一个问题。假设客户在PDF上创建文本框、复选框和其他字段并将其发送给我们。我们如何知道字段名称?我想,在编码时我们需要知道字段名称才能获取这些字段的句柄,对吗? - Ris
你需要使用Acrobat Professional或其他软件首先在PDF表单上创建表单字段。除非有指定名称的字段可用于您要操作的字段,否则我认为不可能读取/写入PDF字段。到目前为止,如果存在命名字段,则可以使用这些名称来引用相应的字段项目并获取它们的值/写入它们。 - MSI
感谢MSI。我们能在pdf表单上看到字段名称吗?我有一个样品表格,其中有一个字段"帐号",如下所示:帐号:<文本框>我该如何知道文本框的ID /名称,以便在我的代码中引用,或者iText是否提供一些方法来查找表单上的字段名称。感谢您的见解。 - Ris
明白了。这在《Manning iText in Action》一书中有很好的阐述。 - Ris
啊,很酷,本来想给你指一下下面链接中的例子(附在回答中),但如果你已经有那本书了,那就好:) - MSI

3
您可以使用PDF Box API,它将支持更清晰地提取字段信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接