我需要阅读pdf文档并将值填充到数据库表中,其字段的格式如下:
> Service Request ID 00562464 APAG Notes
> 8/18/17 Contingent Approval by 10/2/17
其中“服务请求和APA注释”为键,“ ID 10562/17或8/18/17临时批准”为值。通过iText PdfTextExtractor方法阅读此PDF时,得到的值如下:
Service Request ID 00562464
APAG Notes 8/18/17 Contingent Approval by 10/2/17
因此,我无法分别标识键和值以填充表的列。我正在使用iText Java库。
下面是我用来获取上述输出的代码。
PdfReader reader = new PdfReader(path);
String textFromPage = PdfTextExtractor.getTextFromPage(reader, 1);
System.out.println(textFromPage);
答案 0 :(得分:0)
我能够使用iText随附的LocationTextExtractionStrategy分离键和PDF,下面是代码
SrPdfModel srpdfModel = new SrPdfModel();
PdfReader reader = new PdfReader(path);
Integer pages = reader.getNumberOfPages();
for(int i=1; i <= pages; i++){
Rectangle mediaboxKeys=reader.getPageSize(i);
mediaboxKeys.setRight((float) 100.00);
RenderFilter[] filterKeys = {new RegionTextRenderFilter(mediaboxKeys)};
FilteredTextRenderListener strategyKeys = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), filterKeys);
String[] keysFromPage = PdfTextExtractor.getTextFromPage(reader, i, strategyKeys).split("\\r?\\n");
}
我使用Rectangle objects set right属性设置页面左侧的键区域的边界。通过设置左边界,我可以类似地读取这些键的值。
以下链接很有帮助:https://developers.itextpdf.com/question/how-read-text-specific-position