Java实现裁剪PDF

目录

安装Java PDF库

Java裁剪PDF页面

Java裁剪PDF页面并将结果保存为图片、HTML、Excel等格式


裁剪PDF页面是一项常见的任务,它可以用来调整文档的尺寸和去除不需要的边距或白边。通过裁剪页面,你可以优化文档的布局和展示效果,使其更符合你的需求。这篇文章将介绍如何使用Java实现裁剪PDF文档的页面,主要包括以下内容:

  • Java裁剪PDF页面
  • Java裁剪PDF页面并将结果保存为图片、HTML、Excel等格式

安装Java PDF库

要裁剪PDF页面,可以使用Spire.PDF for Java 库。

Spire.PDF for Java是一款专门为Java开发人员设计的PDF文档处理库。它支持在Java应用程序中创建、读取、编辑、转换和打印PDF文档。你可以使用以下代码来从Maven仓库安装它:

<repositories><repository><id>com.e-iceblue</id><name>e-iceblue</name><url>https://repo.e-iceblue.cn/repository/maven-public/</url></repository></repositories><dependency><groupId>e-iceblue</groupId><artifactId>spire.pdf</artifactId><version>10.4.9</version></dependency>

Java裁剪PDF页面

Spire.PDF for Java提供了PdfPageBase.setCropBox(Rectangle2D rect)方法,支持裁剪PDF页面。具体步骤如下:

  • 创建PdfDocument类的实例。
  • 使用PdfDocument.loadFromFile()方法加载PDF文档。
  • 使用PdfDocument.getPages().get(index)方法获取你希望裁剪的页面。
  • 创建Rectangle2D对象,用于定义裁剪的页面区域。
  • 使用PdfPageBase.setCropBox(Rectangle2D rect)方法裁剪页面。
  • 使用PdfDocument.SaveToFile()方法保存结果文档。
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;import java.awt.*;
import java.awt.geom.Rectangle2D;public class Main {public static void main(String[] args) {//创建PdfDocument实例PdfDocument pdf = new PdfDocument();//加载PDF文档pdf.loadFromFile("示例.pdf");//获取第一页PdfPageBase page = pdf.getPages().get(0);//创建Rectangle2D实例用于指定裁剪的页面区域Rectangle2D rect = new Rectangle(30, 280, 552, 220);//裁剪第一页page.setCropBox(rect);//保存结果文档pdf.saveToFile("裁剪.pdf");pdf.close();}
}

Java裁剪PDF页面并将结果保存为图片、HTML、Excel等格式

有时候,你可能需要裁剪PDF页面并将结果保存为其他格式,例如图片、HTML或Excel等,以便在其他地方使用。Spire.PDF for Java提供了PdfDocument.saveAsImage()方法来将PDF文档保存为图片,以及PdfDocument.saveToFile()方法来将PDF文档保存为其他格式如HTML、Excel等。

以下步骤展示了如何裁剪一个PDF文档的特定页面并将结果保存为图片:

  • 创建PdfDocument类的实例。
  • 使用PdfDocument.loadFromFile()方法加载PDF文档。
  • 使用PdfDocument.getPages().get(index)方法获取你希望裁剪的页面。
  • 创建Rectangle2D对象,用于定义裁剪的页面区域。
  • 使用PdfPageBase.setCropBox(Rectangle2D rect)方法裁剪页面。
  • 使用PdfDocument.saveAsImage(int pageIndex, PdfImageType type)方法将该页面保存为BufferedImage对象。
  • BufferedImage对象保存为PNG图片文件。
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImageType;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;public class CropPageAndSaveItAsImage {public static void main(String[] args) throws IOException {//创建PdfDocument实例PdfDocument pdf = new PdfDocument();//加载PDF文档pdf.loadFromFile("sample.pdf");//获取第一页PdfPageBase page = pdf.getPages().get(0);//创建Rectangle2D实例用于指定裁剪的页面区域Rectangle2D rect = new Rectangle(30, 280, 552, 220);//裁剪页面page.setCropBox(rect);//将第一页保存为图片BufferedImage image = pdf.saveAsImage(0, PdfImageType.Bitmap);//将图片保存为PNG文件File file = new File("cropped.png");ImageIO.write(image, "PNG", file);pdf.close();}
}

以下步骤展示了如何裁剪一个PDF文档的特定页面并将结果保存为HTML、Excel、OFD等格式:

  • 创建PdfDocument类的实例。
  • 使用PdfDocument.loadFromFile()方法加载PDF文档。
  • 使用PdfDocument.getPages().get(index)方法获取你希望裁剪的页面。
  • 创建Rectangle2D对象,用于定义裁剪的页面区域。
  • 使用PdfPageBase.setCropBox(Rectangle2D rect)方法裁剪页面。
  • 创建另一个PdfDocument类的实例来生产一个新的PDF文档。
  • 使用PdfDocument.insertPage()方法将裁剪后的页面插入新的PDF文档。
  • 使用PdfDocument.saveToFile()方法将新的PDF文档保存为HTML/EXCEL/OFD等格式。
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;import java.awt.*;
import java.awt.geom.Rectangle2D;public class CropPageAndSaveItAsHtmlExcel {public static void main(String[] args){//创建PdfDocument实例PdfDocument pdf = new PdfDocument();//加载PDF文档pdf.loadFromFile("sample.pdf");//获取第一页PdfPageBase page = pdf.getPages().get(0);//创建Rectangle2D实例用于指定裁剪的页面区域Rectangle2D rect = new Rectangle(30, 280, 552, 220);//裁剪页面page.setCropBox(rect);//创建一个新的PDF文档PdfDocument newPdf = new PdfDocument();//将裁剪后的页面插入到新的PDF文档 newPdf.insertPage(pdf, page);//将新的PDF文档保存为HTML/XLSX/OFD等其他格式newPdf.saveToFile("cropped.html", FileFormat.HTML);newPdf.saveToFile("cropped.xlsx", FileFormat.XLSX);newPdf.saveToFile("cropped.ofd", FileFormat.OFD);newPdf.close();pdf.close();}
}

除了以上代码中保存的格式外,你还可以将裁剪结果保存为很多其他格式,如.doc.docx,.xps等,修改FileFormat枚举即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/5993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

万界星空科技商业开源MES+项目合作+商业开源低代码平台

今天我想和大家分享的是一套商业开源的 MES制造执行管理系统带源码。对于制造业而言&#xff0c;MES 是一个至关重要的系统&#xff0c;它可以帮助企业提高生产效率、优化资源利用、提高产品质量&#xff0c;从而增强市场竞争力。 什么是 MES&#xff1f; MES 是指通过计算机技…

不通过分组注解计数:Django查询集的高级用法

Django的查询集提供了各种高级用法&#xff0c;可以在不使用分组注解的情况下进行计数。下面是一些常用的高级用法示例&#xff1a; count()方法&#xff1a; 最简单的方法是使用count()方法来计算查询集中的对象数量。例如&#xff1a; num_objects MyModel.objects.count()f…

# notepad++ 编辑器英文版,如何打开自动换行

notepad 编辑器英文版&#xff0c;如何打开自动换行 在Notepad中&#xff0c;如果你想要开启自动换行功能&#xff0c;可以按照以下步骤操作&#xff1a; 1、打开 Notepad 编辑器。 1.1. 依次点击菜单栏中的【视图】&#xff0c;英文版对应【View】。1.2. 在【视图】下拉菜单…

商务谈判技巧与口才书籍有哪些类型

商务谈判技巧与口才书籍有哪些类型&#xff08;3篇&#xff09; 商务谈判技巧与口才书籍的类型丰富多样&#xff0c;以下从三个角度进行介绍&#xff1a; **篇&#xff1a;基础理论与策略类书籍 这类书籍通常深入剖析谈判的本质&#xff0c;系统介绍谈判的原理、技巧和策略。…

QProcess 使用实例

QProcess运行一个命令行&#xff0c;比如ipconfig示例cpp主要的代码如下所示&#xff1a; QStringList m_Arguments; m_Arguments << "/c" << "ipconfig"; QString m_Command("cmd.exe"); QString m_Input; run(); / QStr…

量子城域网建设设备系列(二):量子密钥管系统(KMS)

在上文介绍光量子交换机的文章中我们提到&#xff0c;量子保密通信网络的通道切换是由量子密钥管理系统&#xff08;Key Management System&#xff0c;KMS&#xff09;给光量子交换机下发信道切换指令&#xff0c;实现整个网络中任意两对量子密钥分发终端的量子信道互联互通&a…

WPF之ToolTip提示

ToolTip控件在WPF担任着提示信息的位置&#xff0c;当鼠标悬停在某个标签上时ToolTip中的信息会显示&#xff0c;使用时将ToolTip放在某个标签内部或者设置某个标签的ToolTip属性。 使用方法1 <TextBox Width"300"Height"40"HorizontalAlignment"…

第六十九章 使用 NSD (UNIX® Linux macOS) - 示例 2:两个 Web 应用程序

文章目录 第六十九章 使用 NSD (UNIX Linux macOS) - 示例 2&#xff1a;两个 Web 应用程序示例 2&#xff1a;两个 Web 应用程序将负载分散到多个 NSD 进程上授予 NSD 管理员权限 第六十九章 使用 NSD (UNIX Linux macOS) - 示例 2&#xff1a;两个 Web 应用程序 示例 2&…

Opensbi初始化分析:设备初始化-warmboot

Opensbi初始化分析:设备初始化-warmboot 设备初始化sbi_init函数init_warmboot函数coolboot & warmbootwait_for_coldboot函数domain && scratch(coldboot所特有)console初始化及print相关工作(coldboot所特有)系统调用的相关初始化(coldboot所特有)综上设备…

【跟马少平老师学AI】-【神经网络是怎么实现的】(九)长短期记忆网络

一句话归纳&#xff1a; 1&#xff09;RNN也会存在梯度消失的问题。 2&#xff09;同一句话&#xff0c;对于不同的任务&#xff0c;句中不同的词起的作用也不一样。 3&#xff09;LSTM&#xff08;长短期记忆&#xff09;子网络&#xff1a; 门&#xff0c;让输入经过运算&…

与Apollo共创生态:探索自动驾驶的未来蓝图

目录 引言Apollo开放平台Apollo开放平台企业生态计划Apollo X 企业自动驾驶解决方案&#xff1a;加速企业场景应用落地Apollo开放平台携手伙伴共创生态生态共创会员权益 个人心得与展望技术的多元化应用数据驱动的智能化安全与可靠性的重视 结语 引言 就在2024年4月19日&#x…

SpringBoot的ProblemDetails

1.RFC 7807 之前的项目如果出现异常&#xff0c;默认跳转到error页面。或者是抛出500 异常。 但是对于前后端分离的项目&#xff0c;Java程序员不负责页面跳转&#xff0c;只需要 把错误信息交给前端程序员处理即可。而RFC 7807规范就是将异常 信息转为JSON格式的数据。这个…

导数之光:探寻机器学习中的微变奥秘

在当今这个数据驱动的时代&#xff0c;机器学习以其强大的学习和预测能力&#xff0c;成为了推动科技进步的重要力量。而在机器学习的背后&#xff0c;数学原理&#xff0c;尤其是导数的应用&#xff0c;为其提供了坚实的理论支撑。本文将详细探讨导数在机器学习中的体现&#…

如何使用 GPT API 从 PDF 出版物导出研究图表?

原文地址&#xff1a;how-to-use-gpt-api-to-export-a-research-graph-from-pdf-publications 揭示内部结构——提取研究实体和关系 2024 年 2 月 6 日 介绍 研究图是研究对象的结构化表示&#xff0c;它捕获有关实体的信息以及研究人员、组织、出版物、资助和研究数据之间的关…

AtCoder Beginner Contest 351 F题 Double Sum

F题&#xff1a;Double Sum 标签&#xff1a;扫描线、树状数组、线段树题意&#xff1a;给定序列 A A A&#xff0c;计算 ∑ i 1 N ∑ j i 1 N max ⁡ ( A j − A i , 0 ) \displaystyle \sum_{i1}^N \sum_{ji1}^N \max(A_j - A_i, 0) i1∑N​ji1∑N​max(Aj​−Ai​,0)题解…

IDEA 创建Servlet-HelloWorldServlet

servlet 1.创建空项目2.配置web项目3.配置Tomcat4.加载Tomcat包5.创建HelloWorldServlet类6.配置web.xml7.运行get与post请求 1.创建空项目 2.配置web项目 3.配置Tomcat 4.加载Tomcat包 5.创建HelloWorldServlet类 public class controller extends HttpServlet {Override//get…

【Mellanox命令之】如何查看系统MFT版本是否与OFED和FW匹配?(mst version、rpm -qa|grep mft)

0. 背景 如果出现升级了OFED&#xff0c;以及FW、lib等&#xff0c;但是在Debug中遇到异常。可能与mft版本不匹配有关。 那么如何获取mft与OFED、FW之间的匹配关系呢&#xff1f; 1. 查看MFT版本 mft因为不是一个命令&#xff0c;而是4类工具的集合&#xff08;参考兄弟篇&a…

DRF版本组件源码分析

DRF版本组件源码分析 在restful规范中要去&#xff0c;后端的API中需要体现版本。 3.6.1 GET参数传递版本 from rest_framework.versioning import QueryParameterVersioning单视图应用 多视图应用 # settings.pyREST_FRAMEWORK {"VERSION_PARAM": "versi…

图像处理1,灰度,data,for循环批处理图片,图片属性查看,图片单通道查看,椒盐噪声的生成,滤波处理,图像分割

图像处理1 灰度处理data库的使用for循环批处理图像对图像属性的查看图片类型图片尺寸图片宽度图像高度通道数总像素个数最大像素值最小像素值&#xff0c;像素平均值图像点像素值 for循环分别显示图像rgb通道椒盐噪声的生成中值滤波处理高斯模糊处理图像切割 灰度处理 from sk…

WPF之DataGrid表格,自定义表头、自定义单元格

DataGrid控件在WPF中担任着表格的角色&#xff0c;大多用于展现数据&#xff0c;他有着自定义表头、单元格&#xff0c;和数据绑定等效果。 可以展现的数据 可以显示以下几种标签显示不同数据 : 显示文本: DataGridTextColumn 显示复选框: DataGridCheckboxColumn 下拉框: Data…