本文将介绍通过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文档的2种方法的更多相关文章

  1. Java 打印PDF文档的3种情况

    以下内容归纳了通过Java程序打印PDF文档时的3种情形.即: 静默打印 显示打印对话框打印 打印PDF时自定义纸张大小 使用工具:Spire.PDF for Java Jar导入: 方法1:通过官网 ...

  2. C# 打印PDF文档的10种方法

    操作PDF文档时,打印是常见的需求之一.针对不同的打印需求,可分多种情况来进行,如设置静默打印.指定打印页码范围和打印纸张大小.双面打印.黑白打印等等.经过测试,下面将对常见的几种PDF打印需求做一些 ...

  3. Java 设置PDF文档背景——单色背景、图片背景

    一般生成的PDF文档默认的文档底色为白色,我们可以通过一定方法来更改文档的背景色,以达到文档美化的作用. 以下内容提供了Java编程来设置PDF背景色的方法.包括2种设置方法: 设置纯色背景色 设置图 ...

  4. Java 在PDF文档中绘制图形

    本篇文档将介绍通过Java编程在PDF文档中绘制图形的方法.包括绘制矩形.椭圆形.不规则多边形.线条.弧线.曲线.扇形等等.针对方法中提供的思路,也可以自行变换图形设计思路,如菱形.梯形或者组合图形等 ...

  5. Java 设置PDF文档背景色

    一般生成的PDF文档默认的文档底色为白色,我们可以通过一定方法来更改文档的背景色,以达到文档美化以及保护双眼的作用. 以下内容提供了Java编程来设置PDF背景色的方法.包括: 设置纯色背景色 设置图 ...

  6. 如何使用Adobe Reader复制PDF文档上的文字

    PDF文档大家常用,但是有没有简单的方法能够提取PDF文档上的文字,然后使用呢?除了将PDF转换成Word,这里介绍一种更为简单实用的方法复制PDF文本文字,Adobe Reader是大家都常用的PD ...

  7. Java复制Word文档

    Microsoft Word 提供了许多易于使用的文档操作工具,同时也提供了丰富的功能集供创建复杂的文档使用.在使用的时候,你可能需要复制一个文档里面的内容到另一个文档.本文介绍使用Spire.Doc ...

  8. [开源框架推荐]Icepdf:纯java的pdf文档的提取和转换库

    ICEpdf 是一个轻量级的开源 Java 语言的 PDF 类库.通过 ICEpdf 可以用来浏览.内容提取和转换 PDF 文档,而无须一些本地PDF库的支持. 可以用来做什么? 1.从pdf文件中提 ...

  9. Java生成PDF文档(表格、列表、添加图片等)

    需要的两个包及下载地址: (1)iText.jar:http://download.csdn.net/source/296416 (2)iTextAsian.jar(用来进行中文的转换):http:/ ...

随机推荐

  1. SQL Server 根据日期分组、 根据时间段分组(每三个小时一组)

    所用数据表: 一.根据日期分组 1. 使用convert() 函数方式 --根据年月 ),CreatTime,)日期,COUNT(*) 次数,sum(Money)总数 from Orders ),Cr ...

  2. Python一秒提供Rest接口

    Python一秒提供Rest接口 使用的是Anaconda安装的Python环境; 新建py文件(例如:restapi.py) # -*- coding: utf-8 -*- from flask i ...

  3. 20131222-Dom省市加载-第二十七天

    [1]省市选择 <head> <title></title> <script type="text/javascript"> win ...

  4. spark 源码分析之十六 -- Spark内存存储剖析

    上篇spark 源码分析之十五 -- Spark内存管理剖析 讲解了Spark的内存管理机制,主要是MemoryManager的内容.跟Spark的内存管理机制最密切相关的就是内存存储,本篇文章主要介 ...

  5. vs2010 安装项目完成桌面快捷方式无法定位程序文件夹 解决方法

    本文转载自http://www.cnblogs.com/jasonxuvip/archive/2012/07/13/2589952.html 软件打包工具有很多种,让人不知道选那个方便自己使用,Tig ...

  6. ps aux | grep "svnserve" | cut -c 9-15 | xargs kill -9

    ps aux | grep "svnserve" | cut -c 9-15 | xargs kill -9

  7. 个人永久性免费-Excel催化剂功能第37波-把Sqlserver的强大分析函数拿到Excel中用

    本人一直钟情于使用Sqlserver数据库的一大原因是其提供了非常好用.高效的数据分析函数(窗口函数),可以在做数据清洗和数据分析场合等多个场景使用.只需简单的一个函数即可做出常规SQL语句很难以实现 ...

  8. [leetcode] 87. Scramble String (Hard)

    题意: 判断两个字符串是否互为Scramble字符串,而互为Scramble字符串的定义: 字符串看作是父节点,从字符串某一处切开,生成的两个子串分别是父串的左右子树,再对切开生成的两个子串继续切开, ...

  9. C语言编程入门之--第一章初识程序

    第一章 初识程序 导读:计算机程序无时不刻的影响着人类的生活,现代社会已经离不开程序,程序的作用如此巨大,那么程序到底是什么呢?本章主要讨论程序的概念,唤起读者对程序的兴趣,同时对C语言程序与其它语言 ...

  10. SQLServer 问题(一)

    出现这种错误: [DBNETLIB][ConnectionOpen(Connect()).]SQL Server 不存在或拒绝访问 数据库错误 原因: 1.查看是不是没有在数据库中添加数据库服务器地址 ...