pdfbox 第一页加内容_java 用PDFBox 删除 PDF文件中的某一页

依赖:

org.apache.pdfbox

pdfbox-app

1.8.10

java 用PDFBox 删除 PDF文件中的某一页,前n页,后n页,效率低,不推荐使用

package com.everjiankang;

import java.io.File;

import org.apache.pdfbox.pdmodel.PDDocument;

/**运行效率很慢,因为每次删除一页就读取和保存一次文件,初始文件名格式:xxxx0.pdf*/

public class Test {

static String name_pre = "C:\\log\\jvm"; //文件名前缀

static String name_after = ".pdf";//文件名后缀

public static void main(String[] args) {

//1.刪除前n頁

// cutPdfPreNPage(2);

//2.刪除后n頁

cutPdfAfterNPage(5);

//3.刪除第n頁

cutPdf(name_pre + 0 + name_after,name_pre + (0+1) + name_after,7);//删除第n页

}

/**

* 删除前n页

* @param n

*/

public static void cutPdfPreNPage(int n) {

for(int i = 0; i < n; i++)

cutPdf(name_pre + i + name_after,name_pre + (i+1) + name_after,0);

}

/**

* 删除后n页

* @param n

*/

public static void cutPdfAfterNPage(int n) {

for(int i = 0; i < n; i++)

cutPdf(name_pre + i + name_after,name_pre + (i+1) + name_after,1);

}

/**

*

* @param pdfPath 旧路径

* @param newPdfPath 新路径

* @param flag 0:第一页;1:最后一页 ;else : 要删除的页码

*/

public static void cutPdf(String pdfPath,String newPdfPath, int flag)

{

File file = new File(pdfPath);

PDDocument document = new PDDocument();

try{

document = PDDocument.load(file);

}catch(Exception e){

e.printStackTrace();

}

int noOfPages = document.getNumberOfPages();

System.out.println(noOfPages);

if(flag == 0)

document.removePage(0);

else if(flag == 1) {

document.removePage(noOfPages-1);

} else {

document.removePage(flag-1);

}

try{

document.save(newPdfPath);

document.close();

}catch(Exception e){

e.printStackTrace();

}

System.out.println("已经转完了哦");

}

}

抽取任意范围的PDF页作为新的PDF. 效率高

依赖

com.itextpdf

itextpdf

5.5.13

代码

/**

* 截取pdfFile的第from页至第end页,组成一个新的文件名

* @param pdfFile 需要分割的PDF

* @param savepath 新PDF

* @param from 起始页

* @param end 结束页

*/

public static void splitPDFFile(String respdfFile,

String savepath, int from, int end) {

Document document = null;

PdfCopy copy = null;

try {

PdfReader reader = new PdfReader(respdfFile);

int n = reader.getNumberOfPages();

if(end==0){

end = n;

}

ArrayList savepaths = new ArrayList();

String staticpath = respdfFile.substring(0, respdfFile.lastIndexOf("\\")+1);

//String savepath = staticpath+ newFile;

savepaths.add(savepath);

document = new Document(reader.getPageSize(1));

copy = new PdfCopy(document, new FileOutputStream(savepaths.get(0)));

document.open();

for(int j=from; j<=end; j++) {

document.newPage();

PdfImportedPage page = copy.getImportedPage(reader, j);

copy.addPage(page);

}

document.close();

} catch (IOException e) {

e.printStackTrace();

} catch(DocumentException e) {

e.printStackTrace();

}

}

Java 使用PDFBox提取PDF文件中的图片

今天做PDF文件解析,遇到一个需求:提取文件中的图片并保存.使用的是流行的apache开源jar包pdfbox, 但还是遇到坑了,比如pdfbox版本太高或太低都不能用!!这个包竟然没有很好地做好兼容 ...

怎样批量删除PDF文件中的注释

日常我们在阅读一些PDF文章时候,我们会发现有些PDF文章带有非常多的注释,显得非常不美观,影响了阅读体验.那么PDF文章里的批注应该怎么进行删除呢?怎样批量删除PDF文件中的注释?   操作教程: ...

java 库 pdfbox 将 pdf 文件转换成高清图片方法

近期需要将 pdf 文件转成高清图片,使用库是 pdfbox.fontbox.可以使用 renderImageWithDPI 方法指定转换的清晰度,当然清晰度越高,转换需要的时间越长,转换出来的图片越 ...

java操作Excel、PDF文件

java操作Excel.PDF文件 分享者:Vashon 分享来源:CSDN博客 下面这些是在开发中用到的一些东西,有的代码贴的不是完整的,只是贴出了关于操作EXCEL的代码: jxl是一个*国人写的 ...

怎样把PDF文件中的一页提取出来

现在随着网络科技的发展在网上找资源找文件就像家常便饭一样,但是有很多文件下载完成之后只有几页是需要的这时候就很困惑了,这么多怎么才能看完啊.这样为了不浪费时间可以将有用的一页提取出来,进行使用,那怎样 ...

另类爬虫:从PDF文件中爬取表格数据

简介   本文将展示一个稍微不一样点的爬虫.   以往我们的爬虫都是从网络上爬取数据,因为网页一般用HTML,CSS,JavaScript代码写成,因此,有大量成熟的技术来爬取网页中的各种数据.这次, ...

删除XML文件中的空格

应要求需要删除xml文件中的空格,制表符等字符.要求双引号和xml的text属性中包含的空格不删除. bool delSpace(QFile &file, QString path) //删除 ...

从pdf 文件中抽取特定的页面

前段时间买了一个kindle 电子书阅读器.我想用它来读的pdf文档.当然最主要是用来读python标准库&mysql的官方文档. 问题就来了.这两个都是大头书.之前用mac看还好.用kind ...

Java笔记13:统计文件中每个字符出现的次数

一.代码实现 import java.io.*; import java.util.*; /** 功能:统计文件中每个字符出现的次数 思路: 1.定义字符读取(缓冲)流 2.循环读取文件里的字符,用一 ...

随机推荐

js框架模版

(function() { //注册命名空间zzw到window对象上 window['zzw'] = {} //定义一个$函数 function $() { alert("hello $& ...

两台Linux主机之间文件的复制

使用scp命令可以实现两台Linux主机之间的文件复制,基本格式是: scp [可选参数] file_source file_target 1. 复制文件 命令格式: scp local_file r ...

阿里大于验证码发送 (ThinkPhp框架)

1.登录平台 阿里大于2.登陆之后我们可以看到资费,使用场景等,在进入正题之前我们需要一些准备工作,首先我们先了解下短信的请求参数,在这里我们需要注意的是sms_param这个参数,在接下来我们申请短 ...

IOS8 不用计算Cell高度的TableView实现方案

这个新特性,意味着View被Autolayout调整frame后,会自动拉伸和收缩SupView. 具体到Cell,要求cell.contentView的四条边都与内部元素有约束关系. 在TableV ...

(转)关于eclipse的TestNG的插件安装方法

背景:最近在学习spring 4.x时候,用到了testNG的测试方法,发现需要在eclipse安装testNG插件才能够正常进行单元测试. 1 插件安装 今天在配置eclipse+selenium+ ...

sock5协议转换http协议工具polipo使用笔记(Centos7)

一.安装 Shadowsocks使用socks5协议,而终端很多工具目前只支持http和https等协议,所以我们为终端设置Shadowsocks的思路就是将socks5协议转换成http协议,然后为 ...

xshell 5连接NAT模式的虚拟机

这里简称真实的外部电脑为主机.当虚拟机NAT模式上网时(区别于桥接上网,桥接上网的话,主机和虚拟机可以互访),虚拟机是可以访问主机的,但是由于NAT机制,导致主机不能访问虚拟机,那么如何让主机上的xs ...

认识hasLayout——IE浏览器css bug的一大罪恶根源

你可能感兴趣的:(pdfbox,第一页加内容)