java-PDF读取一页某一区域内容
首先还是我的风格,先看效果
在某一页pdf中获取某一块区域的内容和图片
这样就能获取想要的东西了
上代码
这里需要注意maven 是两部分
<!-- pdf转换 --><dependency><groupId>e-iceblue</groupId><artifactId>spire.pdf</artifactId><version>3.4.2</version></dependency><!-- pdf转换 --><repositories><repository><id>com.e-iceblue</id><url>http://repo.e-iceblue.cn/repository/maven-public/</url></repository></repositories>
一个完整的工具类
import com.spire.pdf.*;
import com.spire.pdf.exporting.PdfImageInfo;
import com.spire.pdf.graphics.PdfGraphicsUnit;
import com.spire.pdf.graphics.PdfUnitConvertor;import javax.imageio.ImageIO;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.*;/*** @author: 云* @date: 2020/8/24 20:01* @version: 1.0*/
public class cs {public static void main(String[] args) throws IOException {//pdf位置String input = "C:\\Users\\zhangyunhao\\Desktop\\1231.pdf";//Load the PDF filePdfDocument pdf = new PdfDocument();pdf.loadFromFile(input);//Create a new txt file to save the extracted textString result = "D:\\ExtractText.txt"; //存入txtFile file = new File(result);if (!file.exists()) {file.delete();}file.createNewFile();FileWriter fw = new FileWriter(file, true);BufferedWriter bw = new BufferedWriter(fw);//Get the first pagePdfPageBase page = pdf.getPages().get(0);/*** 这里是需要注意的* 这里的 磅 是pdf的 单位* * 我们只能通过像素来转换 在测量的时候页面一样要100% 不然会有误差* 我们只能通过像素来转换 在测量的时候页面一样要100% 不然会有误差* 我们只能通过像素来转换 在测量的时候页面一样要100% 不然会有误差** pdf的坐标是从pdf的左上角开始,而不是页面的左上角* pdf的坐标是从pdf的左上角开始,而不是页面的左上角* pdf的坐标是从pdf的左上角开始,而不是页面的左上角**///磅 转 像素
// PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
// float pixelWidth = unitCvtr.convertUnits((float) 514, PdfGraphicsUnit.Point, PdfGraphicsUnit.Pixel);
// float pixelHeight = unitCvtr.convertUnits((float) 261, PdfGraphicsUnit.Point, PdfGraphicsUnit.Pixel);//像素 转 磅PdfUnitConvertor unitCvtr = new PdfUnitConvertor();// 这里就是测量的像素float pointWidth = unitCvtr.convertUnits((float) 1116, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);float pointHeight = unitCvtr.convertUnits((float) 831, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);float x = unitCvtr.convertUnits((float) 0, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);float y = unitCvtr.convertUnits((float) 1072, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);//Extract text from a specific rectangular area within the page// 需要 x y 宽度 高度 四个参数 来确定矩形位置String text = page.extractText(new Rectangle2D.Float(x, y, pointWidth, pointHeight));System.out.println(pointWidth + "*" + pointHeight);//这个可以获取到某个页面的图片的具体信息 输出的 x,y 都是左上角PdfPageBase firstPage = pdf.getPages().get(0);PdfImageInfo[] imageInfo = firstPage.getImagesInfo();//循环 比较Rectangle2D bounds = null;for (int i = 0; i < imageInfo.length; i++) {bounds = imageInfo[i].getBounds();//判断 图片是否在选中的区域里if (bounds.getX() <= pointWidth && bounds.getY() <= pointHeight + y && bounds.getX() >= x && bounds.getY() >= y && bounds.getWidth() <= pointWidth && bounds.getHeight() <= pointHeight) {// 存入BufferedImage image = imageInfo[i].getImage();ImageIO.write(image, "PNG", new File("D:\\123" + i + ".png"));}}bw.write(text);bw.flush();bw.close();fw.close();}}
然后就可以了
这里带一点福利,java截图
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;import javax.imageio.ImageIO;/*** 截屏*/
public class CameraTest {private String filePreStr; // 默认前缀(选择存储路径例如: D:\\)private String defName = "cameraImg"; // 默认截图名称static int serialNum = 0; //截图名称后面的数字累加private String imageFormat; // 图像文件的格式private String defaultImageFormat = "png"; //截图后缀Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); //获取全屏幕的宽高尺寸等数据public CameraTest() {filePreStr = defName;imageFormat = defaultImageFormat;}public CameraTest(String s, String format) {filePreStr = s;imageFormat = format;}public void snapShot() {try {// *** 核心代码 *** 拷贝屏幕到一个BufferedImage对象screenshot BufferedImage screenshot = (new Robot()).createScreenCapture(new Rectangle(300, 600, 280, 400));serialNum++;// 根据文件前缀变量和文件格式变量,自动生成文件名String name = filePreStr + String.valueOf(serialNum) + "." + imageFormat;File f = new File(name);System.out.print("Save File " + name);// 将screenshot对象写入图像文件ImageIO.write(screenshot, imageFormat, f);System.out.print("..Finished!\n");} catch (Exception ex) {System.out.println(ex);}}
// 运行之后,即可将全屏幕截图保存到指定的目录下面<br>
// 配合前端页面上面的选择尺寸等逻辑,传到后台,即可实现自由选择截图区域和大小的截图<br>public static void main(String[] args) {CameraTest cam = new CameraTest("d:\\Hello", "png");//cam.snapShot();}
}
java-PDF读取一页某一区域内容相关推荐
- java pdf 模板多页数据导出
现在普遍java PDF 导出就是2种形式 1.模板导出 提前在windows下编辑好模板,并且配好表单(因为不是重点这部分自行百度) 2.在java中编写pdf 在使用java代码编写模板和灌数据, ...
- java PDF最后一页添加空白页
PdfReader reader = new PdfReader(src); FileOutputStream out = new FileOutputStream(new File(pdfPath) ...
- 在java中读取某个文件中的数据内容
代码 import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java ...
- java中读取某路径下的文本内容
path也就是文本存储的路径和文本名称,这个只是个人需要,一般的话,只需要在File file = new File(path);中把path替换成自己的路径就可以了,比如File file = ne ...
- java pdf 书签_Java PDF书签——添加、编辑、删除、读取书签
本文介绍通过Java程序来操作PDF书签,根据对书签的不同操作要求,分以下情况来介绍: 1. 添加书签(包括添加一级书签.多级子书签) 3. 删除书签(包括删除所有书签.删除子书签等) 4. 读取书签 ...
- java epub 删除一页_java如何实现批量删除pdf指定的页数
依赖: org.apache.pdfbox pdfbox-app 1.8.10 java 用PDFBox 删除 PDF文件中的某一页,前n页,后n页,效率低,不推荐使用 package com.eve ...
- java准确读取word文件页数
转自:https://blog.csdn.net/tiandixuanwuliang/article/details/71298406 由于本人在做一个网上打印网站,遇到了一个需求是"准确读 ...
- java 图片识别提取_老司机帮您Java 提取/读取PDF中的图片
电脑现已成为我们工作.生活和娱乐必不可少的工具了,在使用电脑的过程中,可能会遇到Java 提取/读取PDF中的图片的问题,如果我们遇到了Java 提取/读取PDF中的图片的情况,该怎么处理怎么才能解决 ...
- java pdfbox读取pdf中的表格
java pdfbox读取pdf中的表格 目前遇到了需要解析pdf中表格的需求,遇到无法解析表格中的空格,求助大神帮助!!! <dependency><groupId>org. ...
最新文章
- python 权限控制 linux_16linux的acl的控制权限的介绍
- [M]MagicTable转换异常解决方法
- C语言linux gettimeofday()函数和time()函数的区别(后者只能得到秒级系统时间,前者能得到毫秒甚至微秒级系统时间)
- SAP UI5 bindItem will cause OData refresh
- 非功能性需求_更好的开卡,来聊聊非功能性需求
- Java中stringbutter_java 中String和StringBuffer与StringBuilder的区别及使用方法
- jdk下载和安装教程
- 从一个帝国的消逝,看商业组织的进化
- 爬虫项目实战1——爬取天善课程
- 微信小程序获取启动参数
- 好佳居软装十大品牌 每个人都有着适合自己的软装
- 仿泡团影视网源码 苹果cmsV8版本 电脑端+影视模块
- 负载均衡10年发展,应用交付成核心架构
- 《Think Python 2e》作业实现(二): 变量、表达式和语句
- Python读取excel中的图片
- 微服务——通用分销系统设计
- 连表查询join使用方法详解
- 了解痘痘起因才能彻底告别痘痘烦恼
- OpenCV——角点检测原理分析(Harris,Shi-Tomasi、亚像素级角点检测)
- 网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析
热门文章
- 华为手机使用谷歌play点击登录时,显示无法连接此网络
- 怎么压缩pdf,如何压缩pdf大小,4种高质量办法
- linux得ked使用方法,如何使用KED
- 机器学习中的概率模型和概率密度估计方法 及 VAE生成式模型详解(之二)
- 函数重载、函数模板在四轴飞行器中的实际应用
- 数据库Table‘*****‘doesn‘t exist问题的解决
- 【推荐】智慧教育,智慧课堂研究分析资料整理合集
- 贴福字、集五福、沾福气!这才是“中国福“的最优雅打开姿势
- 我的世界服务器物品不掉落,我的世界局域网服务器怎样设置死亡不掉落东西
- 关于SQL中的ROWNUM问题