当前位置: 首页 > wzjs >正文

北京建设信息咨询中心网站怎么样给公司做网站

北京建设信息咨询中心网站,怎么样给公司做网站,张家界市网站建设设计,莆田专业建站公司在现代开发中,PDF 文件的操作是不可避免的一部分。无论是生成报告、解析文档,还是从文件中提取信息,我们常常需要处理 PDF 文件。iText 是一个非常强大的库,广泛应用于 PDF 文件的创建、修改和解析。自 iText 7 发布以来&#xff…

在现代开发中,PDF 文件的操作是不可避免的一部分。无论是生成报告、解析文档,还是从文件中提取信息,我们常常需要处理 PDF 文件。iText 是一个非常强大的库,广泛应用于 PDF 文件的创建、修改和解析。自 iText 7 发布以来,它的架构、性能和功能有了巨大的提升。本文将深入介绍 iText 7 的使用,特别是如何利用它从 PDF 文档中提取文本和图像,帮助开发者高效地进行 PDF 文件的处理。

iText 7 简介

iText 7 是 iText 库的最新版本,相比于其前身 iText 5,它不仅提供了更多强大的功能,还改进了 API 设计,并引入了模块化结构,使开发者可以根据需要选择所需的功能模块。iText 7 支持更多的 PDF 操作,例如生成 PDF/A、PDF/UA(无障碍 PDF)、数字签名、表单处理等,并且在性能、图形渲染等方面得到了显著优化。

作为一个开源项目,iText 7 采用 AGPL 许可证,如果用于商业项目,则需要购买商业许可证。今天,我们将重点介绍 iText 7 中如何提取 PDF 文件中的文本内容和嵌入的图像。

为什么选择 iText 7?

  • 模块化设计:iText 7 将功能模块化,开发者可以根据项目需要选择不同的模块,避免不必要的依赖。
  • 强大的文本和图像处理:iText 7 提供了丰富的 API,能够轻松提取文本、图像和其他 PDF 内容。
  • 性能优化:iText 7 在内存管理和多线程支持上做了优化,可以高效处理大型 PDF 文档。
  • 现代化的 API:iText 7 使用更为现代化的设计,提供了更强的扩展性和灵活性。

使用 iText 7 提取 PDF 中的文本和图像

在 iText 7 中,提取 PDF 文档的内容(包括文本和图像)是一个常见的操作。通过结合 PdfTextExtractor 类和 PdfCanvasProcessor 类,开发者可以很方便地提取 PDF 页面的文本和图像。

核心 API 介绍

  1. PdfReader:用于读取 PDF 文件。
  2. PdfDocument:表示一个 PDF 文档,提供对文档内容的访问。
  3. PdfTextExtractor:用于从 PDF 页面中提取文本。
  4. PdfCanvasProcessor:用于处理 PDF 页面中的图像、文本或其他元素。
  5. ImageRenderInfo:包含关于图像的详细信息,可以获取图像的字节数据。
  6. IEventListener:事件监听器,用于在 PDF 页面中处理各种事件,特别是图像渲染事件。

示例代码

以下示例展示了如何使用 iText 7 提取 PDF 文档中的文本和图像,并将图像保存为文件。

import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.canvas.parser.EventType;
import com.itextpdf.kernel.pdf.canvas.parser.PdfCanvasProcessor;
import com.itextpdf.kernel.pdf.canvas.parser.PdfTextExtractor;
import com.itextpdf.kernel.pdf.canvas.parser.data.IEventData;
import com.itextpdf.kernel.pdf.canvas.parser.data.ImageRenderInfo;
import com.itextpdf.kernel.pdf.canvas.parser.listener.IEventListener;
import com.itextpdf.kernel.pdf.canvas.parser.listener.ITextExtractionStrategy;
import com.itextpdf.kernel.pdf.canvas.parser.listener.SimpleTextExtractionStrategy;
import com.itextpdf.kernel.pdf.xobject.PdfImageXObject;import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Set;public class IText7Example {private static void readTextAndImage(String filePath) {try {// 使用 iText 7 的 PdfReader 打开 PDF 文件PdfDocument pdfDoc = new PdfDocument(new PdfReader(filePath));// 获取 PDF 页数int numberOfPages = pdfDoc.getNumberOfPages();// 遍历每一页,提取文本for (int i = 1; i <= numberOfPages; i++) {// 创建文本提取策略ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();// 提取当前页面的文本String pageContent = PdfTextExtractor.getTextFromPage(pdfDoc.getPage(i), strategy);// 输出当前页的内容System.out.println("Page " + i + " Content: \n" + pageContent + "\n");// 使用 PdfCanvasProcessor 处理页面内容,提取图像PdfCanvasProcessor processor = new PdfCanvasProcessor(new ImageExtractionListener(i));processor.processPageContent(pdfDoc.getPage(i));}// 关闭 PDF 文档pdfDoc.close();} catch (IOException e) {e.printStackTrace();}}// 定义一个监听器,用于提取图像static class ImageExtractionListener implements IEventListener {private final int pageNum;public ImageExtractionListener(int pageNum) {this.pageNum = pageNum;}@Overridepublic void eventOccurred(IEventData eventData, EventType eventType) {if (eventType == EventType.RENDER_IMAGE) {// 获取图像数据ImageRenderInfo renderInfo = (ImageRenderInfo) eventData;PdfImageXObject imgObj = renderInfo.getImage();try {// 提取图像并保存为文件byte[] imgBytes = imgObj.getImageBytes();String imageFilePath = "image_" + System.currentTimeMillis() + ".png";try (FileOutputStream fos = new FileOutputStream(imageFilePath)) {fos.write(imgBytes);System.out.println("Page " + pageNum + " Image saved: " + imageFilePath);}} catch (IOException e) {e.printStackTrace();}}}@Overridepublic Set<EventType> getSupportedEvents() {return Set.of(EventType.RENDER_IMAGE);}}public static void main(String[] args) {// 输入 PDF 文件路径String inputPdfPath = "/path/to/your/pdf-file.pdf"; // 替换为实际路径readTextAndImage(inputPdfPath);}
}

代码解析

  1. PdfDocument 和 PdfReader
    我们使用 PdfReader 打开一个现有的 PDF 文件,并通过 PdfDocument 对象获取文件内容。通过 pdfDoc.getNumberOfPages() 获取 PDF 文件的总页数,方便后续遍历每一页。

  2. 文本提取
    PdfTextExtractor.getTextFromPage() 方法用于从 PDF 页面中提取文本。SimpleTextExtractionStrategy 是默认的文本提取策略,它会保留页面上的文本内容并去除图像和其他非文本元素。

  3. 图像提取
    PdfCanvasProcessor 被用来遍历 PDF 页面内容并触发图像提取事件。在 ImageExtractionListener 中,我们监听 EventType.RENDER_IMAGE 事件,该事件会在页面渲染图像时触发。图像通过 ImageRenderInfo 提供,可以通过 imgObj.getImageBytes() 获取图像的字节数据并保存为文件。

  4. 文件保存
    提取的图像字节通过 FileOutputStream 保存为 .png 格式文件。每次提取图像时,都会保存为一个新文件,并打印出文件路径。

小结

通过上述示例,我们了解了如何使用 iText 7 提取 PDF 文件中的文本和图像。iText 7 提供了强大且灵活的 API,能够轻松处理各种 PDF 操作。通过事件监听和页面处理,我们可以轻松提取 PDF 中的图像数据,并根据需要进行进一步的处理。iText 7 的模块化设计和现代化的 API 使其成为处理 PDF 文件的理想选择,适用于各种业务场景。

在实际开发中,你可以根据自己的需求灵活运用 iText 7 提供的功能,处理各种复杂的 PDF 文件。无论是生成 PDF 文件、提取数据,还是处理图像和表单,iText 7 都能够提供强大的支持,帮助你轻松完成各种任务。


文章转载自:

http://B0AHkIF5.qLsyf.cn
http://9rEPoNO4.qLsyf.cn
http://ixQ2o4EM.qLsyf.cn
http://25x6Slbx.qLsyf.cn
http://qMFhd2GE.qLsyf.cn
http://4pg9Rq47.qLsyf.cn
http://jmhqXq59.qLsyf.cn
http://FbhYKB89.qLsyf.cn
http://u4erdTNO.qLsyf.cn
http://AocZFtoi.qLsyf.cn
http://gTo72vHv.qLsyf.cn
http://COA8Fw4B.qLsyf.cn
http://K1CDzHFO.qLsyf.cn
http://5kMO5YMt.qLsyf.cn
http://h0cAXi75.qLsyf.cn
http://PzAUvg2w.qLsyf.cn
http://05POjq0W.qLsyf.cn
http://rfq2KfeB.qLsyf.cn
http://OEio1rnj.qLsyf.cn
http://KWe3coLU.qLsyf.cn
http://uF63QdaA.qLsyf.cn
http://0f4iRnhj.qLsyf.cn
http://L0tVw5kq.qLsyf.cn
http://mCDz03jG.qLsyf.cn
http://3oV6RPc5.qLsyf.cn
http://qxBXqYYS.qLsyf.cn
http://25cHTkIX.qLsyf.cn
http://jvWcvNaf.qLsyf.cn
http://ye5ptq5F.qLsyf.cn
http://GczIK8Xo.qLsyf.cn
http://www.dtcms.com/wzjs/625588.html

相关文章:

  • 淄博网站制作高端服务建立网站看病的经济问题
  • 有关做能源的网站淄博网站建设电话咨询
  • 网站建设公司网站源码云捷配快速开发平台
  • iis默认网站建设中wordpress怎样显示子类目
  • 做租号玩网站赚钱吗医院网站如何建立
  • 石家庄seo优化公司自助建站网站seo公司
  • 百度云网站建设教程页面 菜单 wordpress
  • 电子商务网站建设分析医疗器械分类目录2021
  • 英文网站优化页面设计描述
  • 网站开发报价表格做的好的c2c网站
  • 高端网站建设网站做logo有哪些网站
  • 建设通网站查询单位郑州郑好办app
  • 企业为什么网站建设环江建设网站
  • 兰州建设厅评职称网站常见的网络营销方法及其效果
  • 中间商可以做网站吗soho设计网站
  • 模块化建站工具哪里有网页设计培训
  • 怎样推广一个网站云建站哪家好
  • 网站如何做收录哈尔滨小程序制作公司
  • 购物网站建设工作流程发外链软件
  • 关于网站建设分类邢台发广告的平台有哪些
  • 惠安建设局网站网站备案号 放网站
  • 网站优化seo推广服务网站上面带官网字样怎么做的
  • 上海网站关键词优化方法引用网站资料怎么注明
  • 西凤九网站建设的目标wordpress可注册
  • php网站开发技术文档咸阳兼职做网站
  • 网站建设jwzcq网站开发文献综述范文
  • 孟州网站建设iis做的网站如何添加播放器
  • 商会建设网站说明qq群优惠券里面网站怎么做的
  • 做调查问卷网挣钱的网站电商网站销售数据分析
  • 数学教学网站开发网页升级访问中每天正常更新中