PDF字符串提取正在检查的复选框

时间:2017-03-01 04:35:13

标签: pdfbox

我们有一种方法可以检查是否检查了PDF(无表格)中的复选框,并且它在一家公司的PDF上运行良好。但另一方面,没有办法判断是否选中了复选框。

以下是适用于一家公司PDF的代码

 protected static final String[] HOLLOW_CHECKBOX = {"\uF06F", "\u0086"};
 protected static final String[] FILLED_CHECKBOX = {"\uF06E", "\u0084"};

 protected boolean isBoxChecked(String boxLabel, String content) {
    content = content.trim();
    for (String checkCharacter : FILLED_CHECKBOX) {
        String option = String.format("%s %s", checkCharacter, boxLabel);
        String option2 = String.format("%s%s", checkCharacter, boxLabel);
        if (content.contains(option) || content.contains("\u0084  ") || content.contains(option2)) {
            return true;
        }
    }
    return false;
}

然而,当我对另一家公司的PDF做同样的事情时,复选框附近的提取文本中没有任何内容告诉我们是否已经检查过。

最大的问题是我们没有XML Schema,没有元数据,也没有这些PDF上的表单,它只是原始字符串,所以你可以看到String中很难有一个复选框,但这就是我们所拥有的。下面是将PDF中的字符串从页面拉到其他页面的代码示例,所有文本都在

之间
protected String getTextFromPages(int startPage, int endPage, PDDocument document) throws IOException {
    PDFTextStripper stripper = new PDFTextStripper();
    stripper.setStartPage(startPage);
    stripper.setEndPage(endPage);
    return stripper.getText(document);
}

我希望pdf有一种更简单的方法来提取文本/数据,但这些制作PDF的供应商认为最好不要使用它们。

不,我们不能让供应商/其他公司改变任何东西,我们从法院系统收到这些由我们不知道的律师提交的PDF,并且律师购买了生成这些文件的PDF软件。

我们也无法用更长的方式来试图找出PDFBox用

之类的东西创建文档的对象模型
o.apache.pdfbox.util.PDFStreamEngine - processing substream token: PDFOperator{Tf}

因为这些是80-100页的PDF文件,我们需要花费数年时间才能解析一个供应商的格式。

0 个答案:

没有答案