本人要对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
在本案例中,我们关注的是两个特定版本的JAR包:`itext-asian-5.2.0.jar` 和 `itextpdf-5.5.5.jar`。 `itext-asian-5.2.0.jar` 是iText的一个扩展,专门针对亚洲语言,如简体中文、繁体中文、日语和韩语等。这个...
它提供了创建、编辑、读取PDF文件的功能,并且具有高度灵活性和可扩展性。在提供的文件列表中,我们看到几个与iText相关的JAR文件,分别是: 1. itext-rtf-2.1.7.jar:这是iText的一个扩展模块,专门用于处理RTF...
pdf定位签字包(itext-asian-5.2.0.jar与itextpdf-5.5.11.jar)。专门用来做定位。参考文档:https://www.jb51.net/article/212310.htm
在这个场景中,我们关注的是两个特定版本的iText库:`itext-asian-5.2.0.jar` 和 `itextpdf-5.5.5.jar`。 `itext-asian-5.2.0.jar` 是iText的一个扩展版本,特别针对亚洲语言的支持。这个版本包含了对中文、日文、...
这个压缩包包含了两个主要的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` 提供了处理中文PDF和PDF签名的强大工具,它们在Java开发中对于生成和处理复杂PDF文档具有重要意义。这两个库的结合使用,可以有效地解决中文显示问题,...
本文将深入探讨如何使用`itext-asian-5.2.0.jar`和`itextpdf-5.5.5.jar`这两个JAR包来解决PDF导出时中文显示不正常的问题。 `iText`是一款强大的Java库,专为创建、修改和处理PDF文档而设计。`itextpdf`是iText的...
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-...
这个压缩包包含两个重要的JAR文件:`itextpdf-5.5.12.jar`和`itext-asian-5.2.0.jar`,它们是iText库的不同版本,用于帮助Java程序创建、编辑和操作PDF文档。 首先,我们来详细了解一下`itextpdf-5.5.12.jar`。这是...
1. **iText-2.1.7.jar**: 这是iText的主要库文件,版本为2.1.7。在这一版本中,iText提供了许多核心功能,如创建PDF文档、添加文本、图像和表格,以及处理PDF表单。用户可以通过这个库来动态生成PDF报告、发票或任何...
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 是两个在Java环境中广泛使用的库,主要用于处理PDF文档的创建、编辑和转换。在这个场景中,它们被用作将Word、Excel和PPT等不同格式的文件转换为PDF格式的工具。 PDF...
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-2.1.7.jar和iText-rtf-2.1.7.jar是Java开发中处理PDF和RTF文档的重要工具,它们提供了全面的API来满足各种文档处理需求,无论是创建、编辑还是转换,都为开发者带来了极大的便利。
《飞翔的碟片:flying-saucer-core与flying-saucer-pdf-itext5在Freemarker中的应用》 在IT行业中,生成PDF文档是一项常见的需求,特别是在报告、发票或者用户手册等场合。传统的HTML转PDF解决方案可能无法很好地...
2. **iText-2.0.8.jar**: iText是一个开源的Java库,用于处理PDF文档。版本2.0.8是一个较旧的版本,但仍然广泛用于创建、编辑和读取PDF文件。iText提供了许多功能,包括添加文本、图像、表格、链接到PDF,以及签名...
iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iText的安装非常方便,下载iText.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-...