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

将一个PDF分割成多个子文件的改进版

阅读更多
package com.peter.mytool;

import java.io.FileOutputStream;

import com.lowagie.text.Document;
import com.lowagie.text.pdf.PdfCopy;
import com.lowagie.text.pdf.PdfImportedPage;
import com.lowagie.text.pdf.PdfReader;

public class PDFTool {

	public static void main(String[] args) {
		String fileName = "I:\\iOS电子版资料\\IOS5.pdf";
		int[] pages ={1,31,47,65,97,139,153,179,193,231,251,
				283,299,325,347,369,389,423,445,457,479,517,541};
		String titles[] = new String[]{
				"00-Introduction",
				"01-Getting Started with iOS 5 Programming",
				"02-Writing Your First Hello World! Application",
				"03-Understanding Views, Outlets,and Actions",
				"04-Exploring the Different View Controllers",
				"05-Enabling Multi-Platform Support for the iPhone and iPad",
				"06-Handling Keyboard Inputs",
				"07-Supporting Screen Rotations",
				"08-Creating and Persisting Data Using the Table View",
				"09-Using Application Preferences",
				"10-File Handling",
				"11-Database Storage Using SQLite",
				"12-Programming iCloud",
				"13-Performing Simple Animations and Video Playback",
				"14-Accessing Built-In Applications",
				"15-Accessing the Sensors",
				"16-Using Web Services",
				"17-Bluetooth Programming",
				"18-Bonjour Programming",
				"19-Programming Remote Notifications Using Apple Push Notification Services",
				"20-Displaying Maps",
				"21-Programming Background Applications",
				"22-Appendix"				
		};
		//splitPDFIntoSubfiles(fileName, pages);
		splitPDFIntoSubfiles(fileName, pages,titles);
	}
	
	/**
	 * 把pdf文件按照指定的页码进行分页
	 * @param pdfFile 指定dpf文件
	 * @param pages 指定页码
	 * @param titles 指定标题
	 */
	public static void splitPDFIntoSubfiles(String pdfFile,int[] pages, String titles[]) {		
		try {
			PdfReader reader = new PdfReader(pdfFile);			
			int totalPages = reader.getNumberOfPages();			
			String staticpath = pdfFile.substring(0, pdfFile.lastIndexOf("\\")+1);
			String subfileName = pdfFile.substring(pdfFile.lastIndexOf("\\")+1) ;
			subfileName = subfileName.substring(0, subfileName.lastIndexOf("."))+"-C";
			String savepath = "";
			int end = 0;
			for(int i=0; i<pages.length; i++){
				if(i == pages.length-1){
					end = totalPages;
				}else{
					end = pages[i+1]-1;
				}				
				savepath = staticpath + subfileName + titles[i] +".pdf";
				createNewPDFFile(reader,pages[i],end,savepath);
			}
			System.out.println(" splitPDFIntoSubfiles is done..... ");
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
	
	/**
	 * 把pdf文件按照指定的页码进行分页
	 * @param pdfFile 指定dpf文件
	 * @param pages 指定页码
	 */
	public static void splitPDFIntoSubfiles(String pdfFile,int[] pages) {		
		try {
			PdfReader reader = new PdfReader(pdfFile);			
			int totalPages = reader.getNumberOfPages();			
			String staticpath = pdfFile.substring(0, pdfFile.lastIndexOf("\\")+1);
			String subfileName = pdfFile.substring(pdfFile.lastIndexOf("\\")+1) ;
			subfileName = subfileName.substring(0, subfileName.lastIndexOf("."))+"-Chapter";
			String savepath = "";
			int end = 0;
			String ChapterNO = "";
			for(int i=0; i<pages.length; i++){
				if(i == pages.length-1){
					end = totalPages;
				}else{
					end = pages[i+1]-1;
				}
				if(i<10){
					ChapterNO = "0";
				}
				savepath = staticpath + subfileName + ChapterNO +i+".pdf";
				createNewPDFFile(reader,pages[i],end,savepath);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
	
	/**
	 * 从PdfReader的from页到end页copy一份,生成一份指定文件目录的文件savepath
	 * @param reader PdfReader 读取的源文件
	 * @param from 开始页码
	 * @param end 结束页面
	 * @param savepath 保存新的路径
	 * @throws Exception
	 */
	private static void createNewPDFFile(PdfReader reader, int from , int end,String savepath) throws Exception{
		Document document = null;
		PdfCopy copy = null;
		document = new Document(reader.getPageSize(1));
		copy = new PdfCopy(document, new FileOutputStream(savepath));
		document.open();
		for(int j=from; j<=end; j++) {
			document.newPage(); 
			PdfImportedPage page = copy.getImportedPage(reader, j);
			copy.addPage(page);
		}
		document.close();
	}
	

}

 直接上程序,不加解释。因为很简单,可以直接看得懂。

 至于所使用的jar见我之前的博文

 

分享到:
评论

相关推荐

    PDF分割合并工具

    然而,有时我们可能需要对PDF文件进行处理,例如将其分割成多个小文件,或者将多个PDF文件合并成一个大文件,这就是"PDF分割合并工具"的作用。这种工具提供了方便快捷的方式来管理和优化PDF文档。 PDF分割功能允许...

    北斗PDF转换器

    4.交互体验:支持批量添加多个PDF文件,支持一键文件拖入软件界面; 5.转换高效:北斗pdf的转换引擎已成为PDF最快、最精准的引擎之一; 6.限制更少:高于大部分同类服务的转换上限,支持所有版本的pdf文件; 7.pdfer.cn...

    深度学习分割任务.pdf

    图像分割是一种计算机视觉任务,旨在将数字图像细分为多个部分或对象。在深度学习领域,图像分割尤其重要,因为它可以应用于不同的场景,包括医学图像分析、自动驾驶、视频监控等。图像分割任务的目的是逐像素地识别...

    Smallpdf_SMALLPDF_

    3. **PDF合并与分割**:可以将多个PDF文件合并成一个,或者将一个PDF文件拆分为多个部分。 4. **PDF加密与解密**:如果PDF有密码保护,Smallpdf可以帮助设置或移除密码,确保文档安全。 5. **PDF签名**:支持电子...

    PDF-XChange Pro 4.0.197

    7. **合并与分割**:可以将多个PDF文件合并成一个,或者将一个大文件拆分成多个小文件。 8. **注解和标记**:提供丰富的注解工具,如高亮、下划线、批注、图章、签名等,方便审阅和协作。 说明.txt文件可能包含关于...

    PdfEbookCutterPDF文件切割软件v1.0.4266.1041Beta绿色免费版

    合并功能则允许用户将多个PDF文件整合为一个;旋转功能对于那些页面方向不正的PDF特别有用;而加密功能则可以保护用户的PDF文件,防止未经授权的访问或编辑。 在实际操作中,用户需要注意的是,切割PDF可能会导致...

    基于加权模糊c均值聚类与统计检验指导的多阈值图像自动分割算法.pdf

    图像分割是指将数字图像细分成多个部分(或称为“对象”)的过程,这些部分通常是具有某些特性(如亮度、颜色、纹理等)相似的区域。图像分割是图像分析和理解的第一步,它为后续的图像处理操作提供基础,如目标检测...

    A-PDF Watermark

    "标签"A-PDF"则表明了这个软件属于A-PDF系列,这可能是一个专注于PDF处理的软件品牌,提供一系列与PDF相关的解决方案,如PDF转换、合并、分割等。使用同一品牌的软件往往意味着它们之间可能存在良好的兼容性和一致性...

    PDF急速编辑.7z

    9. **PDF合并与分割**:整合多个PDF文件为一个,或拆分大文件为多个小文件。 然而,值得注意的是,使用未经官方授权的软件可能存在风险。首先,这些和谐版软件可能含有恶意代码,对用户的计算机安全构成威胁。其次...

    适用于机器人视觉的图像分割方法.pdf

    在当今的机器人技术和人工智能领域,机器视觉是一个极其重要的研究方向,而图像分割则是机器视觉中的基础与核心问题。图像分割是指将图像中具有特殊含义的不同区域分开,并提取出感兴趣目标的过程。针对机器人视觉...

    基于深度学习的医疗图像分割综述.pdf

    图像分割是医学图像处理任务中一个重要的研究方向,目前已经出现了很多图像分割方法,其中包含传统的分割方法和基于深度学习模型的分割方法。传统的图像分割方法包括阈值分割法、区域生长法以及图割法等。这些方法的...

    spire.pdf4.8.8 无水印,无使用限制

    总之,Spire.PDF 4.8.8是一个强大的PDF工具,对于.NET开发者而言,它提供了一个全面的解决方案,用于处理PDF文档的各种需求,而且无水印、无使用限制的特点使其在实际项目中更具吸引力。无论是小型项目还是大型企业...

    简单、好用的文本分割器

    "cutxt003"可能是这个文本分割器的特定版本或者是一个示例文件,可能表示这是第三次更新或改进的版本。通常,这种命名方式表明开发者可能已经发布了多个迭代,每次改进都可能包含性能优化、新功能或修复已知问题。 ...

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

    3. **合并与分割PDF**:将多个PDF文件合并成一个,或从一个PDF中提取部分页面。 4. **表单处理**:填充PDF表单字段,或者创建交互式PDF表单。 5. **加密与解密PDF**:对PDF文档进行安全性设置,保护文档内容不被非法...

    FAT文件系统格式详解.pdf

    文件数据被分割成一个或多个簇,并分散存储在DATA区。操作系统通过FAT表和DIR区中的元数据,来管理和访问存储在DATA区的数据。 FAT文件系统的缺陷主要包括磁盘空间的浪费。由于文件是以簇为单位存储,当文件大小...

    基于改进Unet 的丘陵地区耕地地块深度分割与提取.pdf

    Unet++是一个基于 encoder-decoder 结构的深度学习模型,能够对图像进行自动分割和分类。Unet++模型的改进版本,在遥感影像处理中的应用具有广泛的前景。 知识点3:多尺度分割方法 多尺度分割方法是一种常用的图像...

    itextpdf.-all(7.1.5 and 7.1.6).rar

    这段代码创建了一个新的PDF文档,添加了一行文本和一个图像,然后将其保存为"output.pdf"。 总结,iTextPDF是一个强大的PDF处理工具,通过其提供的API,开发者可以轻松地实现PDF文档的创建、编辑和转换。不论是简单...

Global site tag (gtag.js) - Google Analytics