【定位:PDF文件定位关键字所在坐标和页码】
2024-10-11 11:18:56
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所在位置处可以插入图片文字==
import java.io.IOException;
import com.itextpdf.awt.geom.Rectangle2D.Float;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.parser.ImageRenderInfo;
import com.itextpdf.text.pdf.parser.PdfReaderContentParser;
import com.itextpdf.text.pdf.parser.RenderListener;
import com.itextpdf.text.pdf.parser.TextRenderInfo; public class Demo
{
// 定义关键字
private static String KEY_WORD = "KEYWORD";
// 定义返回值
private static float[] resu = null;
// 定义返回页码
private static int i = 0; /*
* 返回关键字所在的坐标和页数 float[0] >> X float[1] >> Y float[2] >> page
*/
private float[] getKeyWords(String filePath)
{
try
{
PdfReader pdfReader = new PdfReader(filePath);
int pageNum = pdfReader.getNumberOfPages();
PdfReaderContentParser pdfReaderContentParser = new PdfReaderContentParser(
pdfReader); // 下标从1开始
for (i = 1; i < pageNum; i++)
{
pdfReaderContentParser.processContent(i, new RenderListener()
{ @Override
public void renderText(TextRenderInfo textRenderInfo)
{
String text = textRenderInfo.getText();
if (null != text && text.contains(KEY_WORD))
{
Float boundingRectange = textRenderInfo
.getBaseline().getBoundingRectange();
resu = new float[3];
resu[0] = boundingRectange.x;
resu[1] = boundingRectange.y;
resu[2] = i;
}
} @Override
public void renderImage(ImageRenderInfo arg0)
{
// TODO Auto-generated method stub } @Override
public void endTextBlock()
{
// TODO Auto-generated method stub } @Override
public void beginTextBlock()
{
// TODO Auto-generated method stub }
});
}
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return resu;
} }
最新文章
- [APUE]UNIX进程的环境(上)
- unity3d 第三人称视角的人物移动以及相机控制
- Android 开发技巧 - Android 6.0 以上权限大坑和权限检查基类封装
- halcon的算子列表
- Intent官方教程(3)各属性介绍
- sublime text 3 扩展插件SideBarEnhancements用法教程
- Codeforces 577B Modulo Sum
- ACM-ICPC北京赛区(2017)网络赛_Minimum
- PHP基础入门(三)【PHP中的数组】
- angularjs MVC、模块化、依赖注入详解
- Docker Compose 之进阶篇
- 前端入门10-JavaScript语法之对象
- 科学计算和可视化(numpy及matplotlib学习笔记)
- topcoder srm 697 div1 -3
- Web墨卡托坐标与WGS84坐标互转
- Socket模型(二):完成端口(IOCP)
- 重拾IP路由选择:CCNA学习指南中的IP路由选择
- 内核线程和用户线程(SMP)
- Java 异常Exception e中e的getMessage()和toString()方法的区别
- VMware上安装CenterOS
热门文章
- 求a和b的最大公约数
- 有关linux标准输出、标准输入、标准错误的重定向问题
- 【LeetCode】22. Generate Parentheses (I thought I know Python...)
- hdu 2824 The Euler function(欧拉函数)
- HDU 2045 不容易系列之(3)—— LELE的RPG难题(递归/动态规划)
- 啥数据类型set补充、深浅拷贝与函数
- memcache学习和分析
- mysql 保存emoji时报,数据库报错:Caused by: java.sql.SQLException: Incorrect string value: &#39;\xF0\x9F\x98\x82\xF0\x9F...&#39; for column &#39;review&#39; at row 1
- CodeForces 708B Recover the String
- vimtutor基础教程