本人要对pdf文件进行操作,截取一个pdf文件的n-m页.
源码如下:
FileInputStream file=new FileInputStream(input);
PdfReader pdfr= new PdfReader(file);//这里会报错
Document document = new Document();
PdfCopy copy = new PdfCopy(document, new FileOutputStream(output)); //输出pdf文件;
document.open();
for(int i=begin;i<=end;i++){
document.newPage();
PdfImportedPage page=copy.getImportedPage(pdfr, i);
copy.addPage(page);
}
document.close();
如果file文件是大型文件.那么 PdfReader会将文件放入内存里.那么就会报错.内存溢出.
解决原理:
直接将文件读取会报错,那么我们参考,文件上传和下载的方法:
byte[] b=new byte[8192];
int len=0;
while((len=fis.read(b))>0){
fos.write(b,0,len);
}
fos.close();
fis.close();
将输入输出流用 byte[]来解决.
那么这里怎么处理呢?
解决源码:
Document document = new Document();
PdfCopy copy = new PdfCopy(document, new FileOutputStream(output)); //输出pdf文件;
document.open();
byte[] b= new byte[file.available()]; ///这里是解决问题的重点
int len=0;
while((len=file.read(b))>0){
file.read(b,0,b.length);///这里是解决问题的重点
PdfReader pdfr=new PdfReader(new PdfReader(b));///这里是解决问题的重点
int num=pdfr.getNumberOfPages();
System.out.println("第一次页数是:"+num);
if(num<end||begin<0||begin>end){
System.out.println("截取的页数不正确!");
}else {
for(int i=begin;i<=end;i++){
document.newPage();
PdfImportedPage page=copy.getImportedPage(pdfr, i);
copy.addPage(page);
}
}
}
document.close();
中文注释,问题解决.内存不再报错.
分享到:
相关推荐
flying-saucer-pdf-itext5-9.0.3.jar
itext-rtf-2.1.7.jar,iTextAsian.jar,iText-5.0.6.jar,itext-2.1.7.jar
itext-asian-5.2.0.jar、 itextpdf-5.5.5.jar 两个JAR包
itext-asian-5.2.0.jar和itextpdf-5.5.5.jar 用于java生成pdf的各种开发 1
pdf定位签字包(itext-asian-5.2.0.jar与itextpdf-5.5.11.jar)。专门用来做定位。参考文档:https://www.jb51.net/article/212310.htm
这两个jar ,可以解决导出PDF,不能显示中文问题。 pdf文档jar包 itext-asian-5.2.0.jaritextpdf-5.5.5.jar 读取PDF文件,PDF签名文件
flying-saucer-pdf-itext5-9.0.3.jar freemarker-2.3.20.jar hamcrest-core-1.3.jar itextpdf-5.3.0.jar jackson-core-asl-1.9.2.jar jackson-mapper-asl-1.9.2.jar junit-4.11.jar log4j-1.2.17.jar slf4j-...
java的PDF生成jar包,包含 iText-5.5.8.jar, iTextAsian.jar, itextpdf-5.5.8, itextpdf-5.5.8-javadoc, itext-xtra-5.5.8, xmlworker-5.5.8。 已打包中文字体
java操作pdf和rtf文件所需的jar包。包含: itext-2.1.7.jar itext-rtf-2.1.7.jar
iText-2.0.8.jar/jxl.jar/core-renderer.jar/iTextAsian.jariText-2.0.8.jar/jxl.jar/core-renderer.jar/iTextAsian.jariText-2.0.8.jar/jxl.jar/core-renderer.jar/iTextAsian.jariText-2.0.8.jar/jxl.jar/core-...
java 操作 pdf模板 所需的jar包下载下载 下载 下载 下载 下载 下载 下载 下载 下载 下载 下载 下载 下载
iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iText的安装非常方便,下载iText.jar文件后,...
iText-2.1.7.jar+iTextAsian.jar+iTextAsianCmaps.jar+itext-rtf-2.1.7.jar.zip
itext-asian-5.2.0.jar itext-hyph-xml-5.1.1.jar itext-pdfa-5.5.13-javadoc.jar itext-pdfa-5.5.13-sources.jar itext-pdfa-5.5.13.jar itext-xtra-5.5.13-javadoc.jar itext-xtra-5.5.13-sources.jar itext-xtra-...
itext转换PDF所需jar包:xmlworker-5.5.8.jar,itext-asian-5.2.0.jar,jsoup-1.11.3.jar,itextpdf-5.5.8.jar
这是曾经在项目中做pdf导出时用过的itext的包,有包含asian包,可解决中文输出问题。内容包含:itext-4.2.1&&itext;-asian-5.2.0&&itext;-pdfa-5.5.13
itext 7-7.0.5全部Jar包itext 7-7.0.5全部Jar包itext 7-7.0.5全部Jar包
java使用itextpdf、itext-asian对pdf文件加中文文字水印,此demo只提供参考,希望给需要的朋友带来帮助,谢谢支持!
该包里面包含了这iText-2.1.4.jar,iTextAsian.jari,Text-rtf-2.1.4.jar,iText-rups-2.1.4.jar,4个包,用于Java pdf打印。