Java定位PDF中关键字的坐标

摘要:
使用itextpdf来操作PDF文件,定位PDF文件中的关键字坐标演示测试结果:测试的PDF文件如下:junit测试输出坐标:maven配置中引入itextpdf:˂!

使用itextpdf来操作PDF文件,定位PDF文件中的关键字坐标演示

测试结果:

测试的PDF文件如下:

Java定位PDF中关键字的坐标第1张

junit测试输出坐标:

Java定位PDF中关键字的坐标第2张

maven配置中引入itextpdf:

<!--引入pdf -->
    <dependency>
      <groupId>com.itextpdf</groupId>
      <artifactId>itextpdf</artifactId>
      <version>5.5.13</version>
    </dependency>

定位工具类PdfHelper.java

packagecom.alphajuns.util;

importcom.itextpdf.text.pdf.PdfReader;
importcom.itextpdf.text.pdf.parser.PdfReaderContentParser;

importjava.io.IOException;

/*** @ClassName PdfHelper
 * @Description Pdf帮助类
 * @Author AlphaJunS
 * @Date 2020/3/7 17:40
 * @Version 1.0
 */
public classPdfHelper {

    /*** @Author AlphaJunS
     * @Date 18:24 2020/3/7
     * @Description 用于供外部类调用获取关键字所在PDF文件坐标
     * @paramfilepath
     * @paramkeyWords
     * @returnfloat[]
     */
    public static float[] getKeyWordsByPath(String filepath, String keyWords) {
        float[] coordinate = null;
        try{
            PdfReader pdfReader = newPdfReader(filepath);
            coordinate =getKeyWords(pdfReader, keyWords);
        } catch(IOException e) {
            e.printStackTrace();
        }
        returncoordinate;
    }

    /*** @Author AlphaJunS
     * @Date 18:26 2020/3/7
     * @Description 获取关键字所在PDF坐标
     * @parampdfReader
     * @paramkeyWords
     * @returnfloat[]
     */
    private static float[] getKeyWords(PdfReader pdfReader, String keyWords) {
        float[] coordinate = null;
        int page = 0;
        try{
            int pageNum =pdfReader.getNumberOfPages();
            PdfReaderContentParser pdfReaderContentParser = newPdfReaderContentParser(pdfReader);
            CustomRenderListener renderListener = newCustomRenderListener();
            renderListener.setKeyWord(keyWords);
            for (page = 1; page <= pageNum; page++) {
                renderListener.setPage(page);
                pdfReaderContentParser.processContent(page, renderListener);
                coordinate =renderListener.getPcoordinate();
                if (coordinate != null) break;
            }
        } catch(IOException e) {
            e.printStackTrace();
        }
        returncoordinate;
    }

}

pdf帮助类CustomRenderListener.java:

packagecom.alphajuns.util;

importcom.itextpdf.awt.geom.Rectangle2D.Float;
importcom.itextpdf.text.pdf.parser.ImageRenderInfo;
importcom.itextpdf.text.pdf.parser.RenderListener;
importcom.itextpdf.text.pdf.parser.TextRenderInfo;

/*** @Author AlphaJunS
 * @Date 12:53 2020/3/7
 * @Description pdf签名帮助类
 */
public class CustomRenderListener implementsRenderListener{

    private float[] pcoordinate = null;

    privateString keyWord;

    private intpage;

    public intgetPage() {
        returnpage;
    }

    public void setPage(intpage) {
        this.page =page;
    }

    public float[] getPcoordinate(){
        returnpcoordinate;
    }

    publicString getKeyWord() {
        returnkeyWord;
    }

    public voidsetKeyWord(String keyWord) {
        this.keyWord =keyWord;
    }

    @Override
    public voidbeginTextBlock() {}

    @Override
    public voidendTextBlock() {}

    @Override
    public voidrenderImage(ImageRenderInfo arg0) {}

    @Override
    public voidrenderText(TextRenderInfo textRenderInfo) {
        String text =textRenderInfo.getText();
        if (null != text &&text.contains(keyWord)) {
            Float boundingRectange =textRenderInfo.getBaseline().getBoundingRectange();
            pcoordinate = new float[3];
            pcoordinate[0] =boundingRectange.x;
            pcoordinate[1] =boundingRectange.y;
            pcoordinate[2] =page;
        }
    }

}

免责声明:文章转载自《Java定位PDF中关键字的坐标》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux下多版本python共存时,默认执行路径修改方法Android的PopupWindow的使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

攻防世界-crypto-banana-princess(ROT13加解密、pdftohtml)

附件是一个pdf文件,打开时报错,格式错误:不是一个PDF文件或该文件已损坏。 1.对比文件,发现是ROT13 用notepad++打开该文件,文件头为%CQS-1.5,打开一个正常pdf文件,文件头为%PDF-1.7。 这两个形式完全一样,数字可以理解为版本号。那就思路来了,估计是进行了位移?尝试后发现: 是对整个PDF文件进行了ROT13。 ROT1...

Aspose.Words转换为PDF的时候字体丢失的问题解决

系统中明明有字体的,Word中显示也正常,就是转换为PDF以后不正常,字体丢失,被替换成了等线字体 好一番研究,终于找到原因 ,原因是WindowsFonts下的文件,有些只是虚拟的路径,真正的字体文件是在C:Users用户名AppDataLocalMicrosoftWindowsFonts 这个目录下,从而导致的这个问题 只要将用户的字体目录添加进去就可...

texstudio设置外部浏览器及右侧预览不能使用问题

刚装的texstudio,今天不知什么原因右侧显示的pdf文件一直是以前的,百度了下没找到,自己摸索了下,只需要把构建里面pdf查看器更改下即可  如果想更改外部pdf查看器,只需要设置下命令里面外部pdf查看器即可 点此按钮,找到要设置软件exe文件即可...

在线浏览PDF文件并直接定位到某页面

在文档“在线浏览PDF文件的实用jquery插件推荐” 中我们知道如何将PDF直接在网页中打开,那么如何定位到PDF里的某个页面呢? 看红色字体显示部分: <head runat="server">    <title></title>     <script src="http://t.zoukankan.com...

双层PDF的制作——使用PDF4NET 3.3.6 实现

双层PDF的制作——使用PDF4NET 3.3.6 实现 所谓双层PDF就是每一页都包含两层,上层是图像,下层是该图像对应的文字。既可以像图像一样浏览,又可以像文字一样复制、查找。这样兼顾了阅读的效果和使用方便性。 在Google里面搜索,大多数双层PDF制作方法都是使用OCR技术实现的。这些方法的制作前提是,原始的数据只是图片,不存在对应的文字版。这...

妙招教你Office Word 2007文档另存为PDF文件[转]

我们大家都知道Microsoft Office Word 2007的文档可以另存为只读的PDF格式文件,但必须预先安装加载插件项。        今天电脑软件技术博客就在这里详细讲解下Microsoft Office Word 2007 文档另存为PDF格式文件的详细步骤: 第一:首先,您肯定得安装上Microsoft Office Office 200...