我们有一种方法可以检查是否检查了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文件,我们需要花费数年时间才能解析一个供应商的格式。