• 【定位:PDF文件定位关键字所在坐标和页码】


    iText简介:

    iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iText的安装非常方便,下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了。

    iText使用版本:5.5.4

    方法简介:根据关键字keyword定位出keyword所在页和具体坐标,在keyword所在位置处可以插入图片文字==

     1 import java.io.IOException;
     2 import com.itextpdf.awt.geom.Rectangle2D.Float;
     3 import com.itextpdf.text.pdf.PdfReader;
     4 import com.itextpdf.text.pdf.parser.ImageRenderInfo;
     5 import com.itextpdf.text.pdf.parser.PdfReaderContentParser;
     6 import com.itextpdf.text.pdf.parser.RenderListener;
     7 import com.itextpdf.text.pdf.parser.TextRenderInfo;
     8 
     9 public class Demo
    10 {
    11     // 定义关键字
    12     private static String KEY_WORD = "KEYWORD";
    13     // 定义返回值
    14     private static float[] resu = null;
    15     // 定义返回页码
    16     private static int i = 0;
    17 
    18     /*
    19      * 返回关键字所在的坐标和页数 float[0] >> X float[1] >> Y float[2] >> page
    20      */
    21     private float[] getKeyWords(String filePath)
    22     {
    23         try
    24         {
    25             PdfReader pdfReader = new PdfReader(filePath);
    26             int pageNum = pdfReader.getNumberOfPages();
    27             PdfReaderContentParser pdfReaderContentParser = new PdfReaderContentParser(
    28                     pdfReader);
    29 
    30             // 下标从1开始
    31             for (i = 1; i < pageNum; i++)
    32             {
    33                 pdfReaderContentParser.processContent(i, new RenderListener()
    34                 {
    35 
    36                     @Override
    37                     public void renderText(TextRenderInfo textRenderInfo)
    38                     {
    39                         String text = textRenderInfo.getText();
    40                         if (null != text && text.contains(KEY_WORD))
    41                         {
    42                             Float boundingRectange = textRenderInfo
    43                                     .getBaseline().getBoundingRectange();
    44                             resu = new float[3];
    45                             resu[0] = boundingRectange.x;
    46                             resu[1] = boundingRectange.y;
    47                             resu[2] = i;
    48                         }
    49                     }
    50 
    51                     @Override
    52                     public void renderImage(ImageRenderInfo arg0)
    53                     {
    54                         // TODO Auto-generated method stub
    55 
    56                     }
    57 
    58                     @Override
    59                     public void endTextBlock()
    60                     {
    61                         // TODO Auto-generated method stub
    62 
    63                     }
    64 
    65                     @Override
    66                     public void beginTextBlock()
    67                     {
    68                         // TODO Auto-generated method stub
    69 
    70                     }
    71                 });
    72             }
    73         } catch (IOException e)
    74         {
    75             // TODO Auto-generated catch block
    76             e.printStackTrace();
    77         }
    78         return resu;
    79     }
    80 
    81 }
  • 相关阅读:
    java设计模式之代理模式 ,以及和java 回调机制的区别
    oracle 安装,启动 ,plsql 连接
    jsp 访问文件夹中的图片,tomcat配置虚拟目录
    最实用解决tomcat startup.bat 一闪而过
    oracle 创建表
    java debug源码完整版
    node.js事件轮询(1)
    markdown命令语法
    mac常用的命令
    node + nginx + mongo搭建负载均衡
  • 原文地址:https://www.cnblogs.com/tankqiu/p/4339079.html
Copyright © 2020-2023  润新知