使用java对pdf文档进行分解和合成
知识点:对输入流,输出流的应用
package yichanglei4;
import java.io.*;
import java.util.Arrays;public class str {public static void main(String[] args) {// TODO Auto-generated method stub
//分解File f1=new File("D:\\pdf","李航.统计学习方法.pdf");//确定要分解的文档long L1;int num=0,i=0,n=0;int zijie=1024*1024*5;//分解成5M大小的pdf文档L1=f1.length();byte[]a = new byte[(int)L1];byte[]b;if(L1%zijie==0)num=(int)L1/zijie;//判断可以分解为几个5M大小的文档elsenum=(int)L1/zijie+1;//不足加一try{FileInputStream in=new FileInputStream(f1);//该语句可能会出现错误, in.read(a); //对目标文件进行读入 //所以应在try语句中in.close();for(i=0;i<num;i++){String name=i+1+"-"+"李航.统计学习方法.pdf";if(i!=num-1){b=new byte[zijie]; //对输出字节数组大小进行定义 b=Arrays.copyOfRange(a,i*zijie,(i+1)*zijie);//复制数组a中该字节数组} //大小的值else{b=new byte[(int)(L1-(i-1)*zijie)];b=Arrays.copyOfRange(a,i*zijie,(int)L1);}File f2=new File("D:\\splitpdf",name);FileOutputStream out=new FileOutputStream(f2);//定义输出流out.write(b); //进行字节数组输出out.close();}}catch(IOException e1){System.out.println(e1);}
//合成File f3=new File("D:\\splitpdf");File []splitfile=f3.listFiles(); //该方法返回在f3文件夹下的文件File f4=new File("D:\\splitpdf","new李航.统计学习方法.pdf");int t=0;int sumlength=0;for(File f5:splitfile){System.out.println(f5.getName());System.out.println((int)f5.length());sumlength+=(int)f5.length();}try {FileOutputStream sumout=new FileOutputStream(f4);for(File f5:splitfile) { //遍历每一个被分解的文档byte d[]=new byte[(int)f5.length()];FileInputStream sumin=new FileInputStream(f5);sumin.read(d); //读入sumout.write(d); //写入sumin.close();}sumout.close();}catch(Exception e2){System.out.println(e2);}}}
结果:
对于合成的步骤:
我个人的方法(虽然可以进行文档的和成但是无法对文档重新打开)不同于上面的方法
附上个人代码(虽然和上面大致思路相同)
我的合成过程是分解过程的逆过程
(找到了问题所在,但不知道为什么f4的创建会有大小)
package yichanglei4;
import java.io.*;
import java.util.Arrays;public class str {public static void main(String[] args) {// TODO Auto-generated method stub
//分解File f1=new File("D:\\pdf","李航.统计学习方法.pdf");long L1;int num=0,i=0,n=0;int zijie=1024*1024*5;L1=f1.length();byte[]a = new byte[(int)L1];;byte[]b;if(L1%zijie==0)num=(int)L1/zijie;elsenum=(int)L1/zijie+1;try{FileInputStream in=new FileInputStream(f1);in.read(a);in.close();for(i=0;i<num;i++){String name=i+1+"-"+"李航.统计学习方法.pdf";if(i!=num-1){b=new byte[zijie];b=Arrays.copyOfRange(a,i*zijie,(i+1)*zijie);}else{b=new byte[(int)(L1-(i-1)*zijie)];b=Arrays.copyOfRange(a,i*zijie,(int)L1);}File f2=new File("D:\\splitpdf",name);FileOutputStream out=new FileOutputStream(f2);out.write(b);out.close();}}catch(IOException e1){System.out.println(e1);}
//合成 File f3=new File("D:\\splitpdf");File []splitfile=f3.listFiles();File f4=new File("D:\\splitpdf","new李航.统计学习方法.pdf");int t=0;for(File f5:splitfile) //问题在于遍历每个f5的大小(注意f4为什么会有大小){byte c[] = new byte[(int)f5.length()];byte d[]=new byte[(int)L1]; //数组大小不够try {FileInputStream sumin=new FileInputStream(f5);sumin.read(c);sumin.close();}catch(Exception e2){System.out.println(e2);}int L2=0;System.arraycopy(c, 0, d, L2, (int)f5.length());L2+=(int)f5.length();try {FileOutputStream sumout=new FileOutputStream(f4);sumout.write(d);sumout.close();}catch(Exception e3){System.out.println(e3);}}}}
使用java对pdf文档进行分解和合成相关推荐
- Java在PDF文档中添加或删除页面
前言 当你编辑一个PDF文档时,有时需要删除文档中多余的页面或向文档中添加新的页面.本文将向您演示如何使用Spire.PDF for Java在PDF文档中添加或删除页面. 程序环境 安装Spire. ...
- java生成pdf方法_详解Java生成PDF文档方法|chu
最近项目需要实现PDF下载的功能,由于没有这方面的经验,从网上花了很长时间才找到相关的资料.整理之后,发现有如下几个框架可以实现这个功能. 1. 开源框架支持iText,生成PDF文档,还支持将XML ...
- java jar 打印_三种Java打印PDF文档的实例代码
以下内容归纳了通过Java程序打印PDF文档时的3种情形.即: 1 静默打印 2 显示打印对话框打印 3 打印PDF时自定义纸张大小 使用工具:Spire.PDF for Java Jar文件获取及导 ...
- 【教程】如何使用Java生成PDF文档?
在如今数字化时代,越来越多的人使用PDF文档进行信息传递和共享.而使用Java生成PDF文档也成为了一个非常重要的技能,因为Java作为一种通用的编程语言,可以在不同的操作系统和平台上运行.下面,我们 ...
- Java 处理PDF文档(一):页眉页脚、水印、背景、附件
前言 本文将介绍通过Java编程来处理PDF文档的一些方法,因为一篇文档的处理可能包括很多内容,比如文档安全性设置(水印.加密/解密).文本/图片/图形操作.注释.附件.域.文档转换(其他文件格式转为 ...
- Java生成PDF文档(表格)
Java生成PDF文档(表格) package org.jeecg.modules.esi.utils;import com.itextpdf.text.*; import com.itextpdf. ...
- Java 给PDF文档设置背景颜色和背景图片
如题,这篇文章主要介绍如何在Java应用程序中给PDF文档设置背景颜色和背景图片. 使用组件: Spire.PDF for Java 下载Spire.PDF for JAVA包并解压缩,然后从lib文 ...
- Java 拆分PDF文档
这篇文章主要介绍以下两种拆分方式: 将一个PDF文档快速拆分为多个PDF(每个PDF包含1页) 根据指定页码范围,将一个PDF文档拆分为2个或多个PDF(每个PDF可以包含不同的页数) 使用组件: S ...
- Java 压缩PDF文档
PDF文档是我们日常办公中使用最频繁的文档格式.但因为大多数PDF文档都包含很多页面图像或大量图片,这就导致PDF文档过大,在传输或者下载过程中速度会变慢,也会增加传输失败的风险,影响办公效率.因此我 ...
- Java 设置PDF文档过期时间(有效时间)
有些文档具有一定时效性,需在规定时间段内才可阅读查看,针对此类文档,需要设置文档的过期日期.时间等.下面以Java示例演示为例如何给PDF文档设置过期时间.需使用PDF类库, Free Spire.P ...
最新文章
- Nginx学习之五:Nginx第三方模块
- JVM的内存结构,Eden和Survivor比例;JVM中一次完整的GC流程,对象如何晋升到老年代,说说你知道的几种主要的JVM参数;CMS 常见参数解析;.你知道哪几种垃圾收集器,各自的优缺点
- qMISPlat入门级使用问题解答一
- wxpython 表格粘贴,wxpython在整个应用程序中剪切复制和粘贴
- fuser命令使用说明
- Docker系列(一)什么是Docker
- 接了几个APP逆向的私活,赚爆了!
- html添加桌面背景图片代码,背景图片加文字代码. 用HTML制作表格
- 无人机动力组装与测试-电机、螺旋桨、电调、电池
- error C4716 必须返回一个值 处理
- 电子计算机X线体层摄影,X线计算机体层摄影.pdf
- 划分子网(计算机网络)
- 福特汉姆大学计算机科学专业,福特汉姆大学研究生学院
- python——田字格
- 递归算法_字符串反转_20230412
- A problem has occurred and the system can‘t recover问题的解决
- 付鼻窦瓦氏位与付鼻窦柯氏位区别
- 百度搜索引擎爬行蜘蛛IP大全
- 最全Mac系统快捷键一览 学会了一秒变大神!
- 金融科技大数据产品推荐: 换汇API/海外支付API——让跨境支付更简单
热门文章
- 阿里云对象存储OSS收费标准(很详细一看就懂)
- gcc: libc: __ASSEMBLER__; Kernel: __ASSEMBLY__
- 破解封杀ADSL路由器解决办法全面剖析
- 观察者模式和模拟wow插件的例子
- 什么是噪声,白噪声,加性噪声,乘性噪声
- 苹果pencil和普通的有什么区别?推荐好用的平替笔
- 算法时间复杂度Θ(n2)与 O(n2)
- Camtasia如何给视频或者图片调色
- Windows 10内置Hyper-V虚拟机安装XP系统(二) - 配置网络
- 捡到的苹果手机怎么解id锁_苹果手机软解和硬解的区别