首先还是我的风格,先看效果

在某一页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读取一页某一区域内容相关推荐

  1. java pdf 模板多页数据导出

    现在普遍java PDF 导出就是2种形式 1.模板导出 提前在windows下编辑好模板,并且配好表单(因为不是重点这部分自行百度) 2.在java中编写pdf 在使用java代码编写模板和灌数据, ...

  2. java PDF最后一页添加空白页

    PdfReader reader = new PdfReader(src); FileOutputStream out = new FileOutputStream(new File(pdfPath) ...

  3. 在java中读取某个文件中的数据内容

    代码 import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java ...

  4. java中读取某路径下的文本内容

    path也就是文本存储的路径和文本名称,这个只是个人需要,一般的话,只需要在File file = new File(path);中把path替换成自己的路径就可以了,比如File file = ne ...

  5. java pdf 书签_Java PDF书签——添加、编辑、删除、读取书签

    本文介绍通过Java程序来操作PDF书签,根据对书签的不同操作要求,分以下情况来介绍: 1. 添加书签(包括添加一级书签.多级子书签) 3. 删除书签(包括删除所有书签.删除子书签等) 4. 读取书签 ...

  6. java epub 删除一页_java如何实现批量删除pdf指定的页数

    依赖: org.apache.pdfbox pdfbox-app 1.8.10 java 用PDFBox 删除 PDF文件中的某一页,前n页,后n页,效率低,不推荐使用 package com.eve ...

  7. java准确读取word文件页数

    转自:https://blog.csdn.net/tiandixuanwuliang/article/details/71298406 由于本人在做一个网上打印网站,遇到了一个需求是"准确读 ...

  8. java 图片识别提取_老司机帮您Java 提取/读取PDF中的图片

    电脑现已成为我们工作.生活和娱乐必不可少的工具了,在使用电脑的过程中,可能会遇到Java 提取/读取PDF中的图片的问题,如果我们遇到了Java 提取/读取PDF中的图片的情况,该怎么处理怎么才能解决 ...

  9. java pdfbox读取pdf中的表格

    java pdfbox读取pdf中的表格 目前遇到了需要解析pdf中表格的需求,遇到无法解析表格中的空格,求助大神帮助!!! <dependency><groupId>org. ...

最新文章

  1. python 权限控制 linux_16linux的acl的控制权限的介绍
  2. [M]MagicTable转换异常解决方法
  3. C语言linux gettimeofday()函数和time()函数的区别(后者只能得到秒级系统时间,前者能得到毫秒甚至微秒级系统时间)
  4. SAP UI5 bindItem will cause OData refresh
  5. 非功能性需求_更好的开卡,来聊聊非功能性需求
  6. Java中stringbutter_java 中String和StringBuffer与StringBuilder的区别及使用方法
  7. jdk下载和安装教程
  8. 从一个帝国的消逝,看商业组织的进化
  9. 爬虫项目实战1——爬取天善课程
  10. 微信小程序获取启动参数
  11. 好佳居软装十大品牌 每个人都有着适合自己的软装
  12. 仿泡团影视网源码 苹果cmsV8版本 电脑端+影视模块
  13. 负载均衡10年发展,应用交付成核心架构
  14. 《Think Python 2e》作业实现(二): 变量、表达式和语句
  15. Python读取excel中的图片
  16. 微服务——通用分销系统设计
  17. 连表查询join使用方法详解
  18. 了解痘痘起因才能彻底告别痘痘烦恼
  19. OpenCV——角点检测原理分析(Harris,Shi-Tomasi、亚像素级角点检测)
  20. 网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析

热门文章

  1. 华为手机使用谷歌play点击登录时,显示无法连接此网络
  2. 怎么压缩pdf,如何压缩pdf大小,4种高质量办法
  3. linux得ked使用方法,如何使用KED
  4. 机器学习中的概率模型和概率密度估计方法 及 VAE生成式模型详解(之二)
  5. 函数重载、函数模板在四轴飞行器中的实际应用
  6. 数据库Table‘*****‘doesn‘t exist问题的解决
  7. 【推荐】智慧教育,智慧课堂研究分析资料整理合集
  8. 贴福字、集五福、沾福气!这才是“中国福“的最优雅打开姿势
  9. 我的世界服务器物品不掉落,我的世界局域网服务器怎样设置死亡不掉落东西
  10. 关于SQL中的ROWNUM问题