`
xbcoil
  • 浏览: 126284 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

内存溢出---iText读取pdf--举一反三法

 
阅读更多

本人要对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();
 

 

中文注释,问题解决.内存不再报错.

 

 

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    flying-saucer-pdf-itext5-9.0.3.jar

    flying-saucer-pdf-itext5-9.0.3.jar

    itext-asian-5.2.0.jar、itextpdf-5.5.5.jar JAR包

    在本案例中,我们关注的是两个特定版本的JAR包:`itext-asian-5.2.0.jar` 和 `itextpdf-5.5.5.jar`。 `itext-asian-5.2.0.jar` 是iText的一个扩展,专门针对亚洲语言,如简体中文、繁体中文、日语和韩语等。这个...

    itext-asian-5.2.0.jar和itextpdf-5.5.5.jar

    在这个场景中,我们关注的是两个特定版本的iText库:`itext-asian-5.2.0.jar` 和 `itextpdf-5.5.5.jar`。 `itext-asian-5.2.0.jar` 是iText的一个扩展版本,特别针对亚洲语言的支持。这个版本包含了对中文、日文、...

    itext-rtf-2.1.7.jar,iTextAsian.jar,iText-5.0.6.jar,itext-2.1.7.jar

    它提供了创建、编辑、读取PDF文件的功能,并且具有高度灵活性和可扩展性。在提供的文件列表中,我们看到几个与iText相关的JAR文件,分别是: 1. itext-rtf-2.1.7.jar:这是iText的一个扩展模块,专门用于处理RTF...

    itext-asian-5.2.0.jar与itextpdf-5.5.11.jar

    pdf定位签字包(itext-asian-5.2.0.jar与itextpdf-5.5.11.jar)。专门用来做定位。参考文档:https://www.jb51.net/article/212310.htm

    itext相关JARitext-asian-5.2.0及itextpdf-5.5.13.1.zip

    这个压缩包包含了两个主要的JAR文件:`itext-asian-5.2.0.jar`和`itextpdf-5.5.13.1.jar`,它们在处理PDF文件时扮演着重要的角色。 `itext-asian-5.2.0.jar`是iText的一个扩展,主要是为了支持亚洲语言,如中文、...

    itext-asian-5.2.0.jar和itextpdf-5.5.5.jar两个JAR包

    总的来说,`itext-asian-5.2.0.jar` 和 `itextpdf-5.5.5.jar` 提供了处理中文PDF和PDF签名的强大工具,它们在Java开发中对于生成和处理复杂PDF文档具有重要意义。这两个库的结合使用,可以有效地解决中文显示问题,...

    itext-asian-5.2.0.jar、itextpdf-5.5.5.jar 两个JAR包

    本文将深入探讨如何使用`itext-asian-5.2.0.jar`和`itextpdf-5.5.5.jar`这两个JAR包来解决PDF导出时中文显示不正常的问题。 `iText`是一款强大的Java库,专为创建、修改和处理PDF文档而设计。`itextpdf`是iText的...

    基于iText和flying saucer结合freemark生成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-...

    itextpdf-5.5.12.jar+itext-asian-5.2.0.jar

    这个压缩包包含两个重要的JAR文件:`itextpdf-5.5.12.jar`和`itext-asian-5.2.0.jar`,它们是iText库的不同版本,用于帮助Java程序创建、编辑和操作PDF文档。 首先,我们来详细了解一下`itextpdf-5.5.12.jar`。这是...

    iText-2.1.7.jar+iTextAsian.jar+iTextAsianCmaps.jar+itext-rtf-2.1.7.jar.zip

    1. **iText-2.1.7.jar**: 这是iText的主要库文件,版本为2.1.7。在这一版本中,iText提供了许多核心功能,如创建PDF文档、添加文本、图像和表格,以及处理PDF表单。用户可以通过这个库来动态生成PDF报告、发票或任何...

    Itext5.5.13

    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-5.5.8+itext-asian+pdf jar包

    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。 已打包中文字体

    PDFRenderer-0.9.0.jar,iText-2.1.4.jar等转pdf jar包

    PDFRenderer-0.9.0.jar 和 iText-2.1.4.jar 是两个在Java环境中广泛使用的库,主要用于处理PDF文档的创建、编辑和转换。在这个场景中,它们被用作将Word、Excel和PPT等不同格式的文件转换为PDF格式的工具。 PDF...

    itext-2.1.7.jar和itext-rtf-2.1.7.jar

    总的来说,iText-2.1.7.jar和iText-rtf-2.1.7.jar是Java开发中处理PDF和RTF文档的重要工具,它们提供了全面的API来满足各种文档处理需求,无论是创建、编辑还是转换,都为开发者带来了极大的便利。

    flying-saucer-core+flying-saucer-pdf-itext5.jar

    《飞翔的碟片:flying-saucer-core与flying-saucer-pdf-itext5在Freemarker中的应用》 在IT行业中,生成PDF文档是一项常见的需求,特别是在报告、发票或者用户手册等场合。传统的HTML转PDF解决方案可能无法很好地...

    itext7-7.0.5.zip最全包

    此外,它还提供了PDF解析和合并的功能,使得开发者能够方便地读取PDF内容或合并多个PDF文档。 4. **iText7-Font-Asian**: 这个模块专为处理亚洲语言的字体而设计,确保了在PDF文档中正确显示中文、日文、韩文等...

    itext-4.2.1&&itext;-asian-5.2.0&&itext;-pdfa-5.5.13的jar包

    这是曾经在项目中做pdf导出时用过的itext的包,有包含asian包,可解决中文输出问题。内容包含:itext-4.2.1&&itext;-asian-5.2.0&&itext;-pdfa-5.5.13

    iText-2.0.8.jar/jxl.jar/core-renderer.jar/iTextAsian.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-...

Global site tag (gtag.js) - Google Analytics