Java 复制PDF文档的2种方法
本文将介绍通过Java程序来复制PDF页面,包括:
- 跨文档复制,即从文档1复制到文档2
- 在同一文档内复制,即从页面A复制到页面B
使用工具:Free Spire.PDF for Java (免费版)
Jar文件获取及导入方法:
方法1:可通过官网下载jar文件包。下载后,解压文件,并将lib文件夹下的Spire.Pdf.jar文件导入到Java程序。参考如下导入效果:(这里程序将jar文件分别导入了两个module)
方法2:可通过maven仓库安装导入。
Java代码示例
【示例1】跨文档复制
import com.spire.pdf.*; import com.spire.pdf.graphics.PdfMargins; import com.spire.pdf.graphics.PdfTemplate; import java.awt.*; import java.awt.geom.Dimension2D; public class Copy1 { public static void main(String[]args){ //加载两个PDF文档 PdfDocument pdf1 = new PdfDocument("test1.pdf"); PdfDocument pdf2 = new PdfDocument("test2.pdf"); //获取pdf1的第一页,并根据页面创建模板 PdfPageBase page = pdf1.getPages().get(0); Dimension2D size = page.getSize(); PdfTemplate template = page.createTemplate(); //在pdf2中第一页插入从复制的pdf1中绘制的模板 pdf2.getPages().insert(0,size,new PdfMargins(0,0)); pdf2.getPages().get(0).getCanvas().drawTemplate(template,new Point(0,0)); //保存pdf2 pdf2.saveToFile("result.pdf",FileFormat.PDF); pdf2.dispose(); } }
跨文档复制效果:
【示例2】在同一个文档内复制
import com.spire.pdf.*; import com.spire.pdf.graphics.PdfMargins; import com.spire.pdf.graphics.PdfTemplate; import java.awt.*; import java.awt.geom.Dimension2D; public class Copy2 { public static void main(String[]args){ //加载测试文档 PdfDocument pdf = new PdfDocument("test1.pdf"); //获取第一页,并将于页面创建模板 PdfPageBase page = pdf.getPages().get(0); Dimension2D size = page.getSize(); PdfTemplate template = page.createTemplate(); //在文档末循环添加两张绘制好的页面模板 for(int i=0; i<2; i++){ page = pdf.getPages().add(size, new PdfMargins(0)); page.getCanvas().drawTemplate(template, new Point(0, 0)); } //在第一页插入一张绘制好的页面模板 pdf.getPages().insert(0,size,new PdfMargins(0,0)); pdf.getPages().get(0).getCanvas().drawTemplate(template,new Point(0,0)); //保存文档 pdf.saveToFile("result1.pdf",FileFormat.PDF); } }
复制效果:
(本文完)
分类:
Java PDF
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)