• 大小: 1.96MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-11
  • 语言: 其他
  • 标签: Java  itextpdf  pdf  

资源简介

把大的PDF文件拆分成指定大小文件,但是因为每页的文件大小不一定,就不能通过固定页数来拆分文件,这样子的话就需要我们通过计算来将文件拆分这指定大小的文件

资源截图

代码片段和文件信息

package com.mysoft.util;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.*;

/**
 *  文件拆分
 * @author 86185
 *
 */
public class SplitFileUtil {

/**
 *  pdf文件拆分
 * @param path 文档路径
 * @param pdfFileName 文件名
 * @param filePageSize·每个文件的最大页数
 */
public static void splitPdfFile(String pathString pdfFileNameint filePageSize) {

// 文档路径
// String path = “C:\\Users\\86185\\Desktop\\readFile\\“;
// 待拆分文件名
// String pdfFileName = “684331701425410048.pdf“;
// 每个文件最大页数
// int filePageSize = 25;
// 待拆分文件的总页数
int totalPage;
// 拆分后的文件数量
int splitFileNum;
int pageIndex = 1;
PdfReader reader = null;
try {
String orignName = pdfFileName.split(“\\.“)[0];
reader = new PdfReader(path + pdfFileName);
totalPage = reader.getNumberOfPages();
splitFileNum = totalPage % filePageSize == 0 ? totalPage / filePageSize : totalPage / filePageSize + 1;
for (int i = 0; i < splitFileNum; i++) {
String newFileName = path + orignName + “_“ + (i + 1) + “.pdf“;
// 新建一个PDF文件
Document document = null;
PdfWriter writer = null;
try {
document = new Document();
writer = PdfWriter.getInstance(document new FileOutputStream(newFileName));
document.open();
PdfContentByte pdfContentByte = writer.getDirectContent();
for (int j = 0; j < filePageSize; j++) {
document.newPage();
pdfContentByte.addTemplate(writer.getImportedPage(reader pageIndex) 0 0);
pageIndex ++;
if (pageIndex > totalPage)
break;

}
}  catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}finally {

//这个地方要特别注意资源关闭的顺序
if (document != null)
document.close();

if (writer != null)
writer.close();

}
}
} catch (IOException e1) {
e1.printStackTrace();
} finally {
if(reader!=null) reader.close();
}

}

/**
 *  pdf文件拆分
 * @param file 拆分的文件
 * @param filePageSize·每个文件的最大页数
 * @return 
 */
public static List splitPdfFile(File fileint filePageSize) {

List list = new ArrayList();//拆分的文件

String absolutePath = file.getAbsolutePath();//文档绝对路径

String pdfFileName = file.getName();// 待拆分文件名
String path = absolutePath.substring(0 absolutePath.lastIndexOf(pdfFileName));// 文档路径
// 待拆分文件的总页数
int totalPage;
// 拆分后的文件数量
int splitFileNum;
int pageIndex = 1;
PdfReader reader = null;
try {
String orignName = pdfFileName.split(“\\.“)[0];
reader = new PdfReader(path + pdfFileName);
totalPage = reader.getNumberOfPages();
splitFile

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        9360  2020-05-21 10:33  使用itextpdf将PDF大文件拆分成若干份指定大小文件\SplitFileUtil.java
     文件     2164148  2020-03-14 22:44  使用itextpdf将PDF大文件拆分成若干份指定大小文件\itextpdf-5.5.5.jar
     目录           0  2020-08-14 09:03  使用itextpdf将PDF大文件拆分成若干份指定大小文件\

评论

共有 条评论