使用iText

时间:2018-09-25 11:16:26

标签: java pdf itext

我需要阅读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);

1 个答案:

答案 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