package com.xpdf.demo.controller;
import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfWriter;
import org.apache.commons.lang.StringUtils;
import java.io.*;
public class test {
/**
*
* @param inputStream Input PDF file
* @param outputStream Output PDF file
*/
public static Boolean splitPDF(InputStream inputStream,
OutputStream outputStream,String pagechoose) {
Document document = new Document();
//将字符串分割成数组
try {
PdfReader inputPDF = new PdfReader(inputStream);
int totalPages = inputPDF.getNumberOfPages();
boolean status = pagechoose.contains("-");
//make fromPage equals to toPage if it is greater
String decollator = "-";
int fromPage = 0;
int toPage = 0;
if (status){
fromPage= Integer.parseInt(StringUtils.substringBeforeLast(pagechoose,decollator));
toPage= Integer.parseInt(StringUtils.substringAfterLast(pagechoose,decollator));
}else {
fromPage= Integer.parseInt(pagechoose);
toPage = fromPage;
}
if(fromPage > toPage ) {
fromPage = toPage;
}
if(toPage > totalPages) {
toPage = totalPages;
}
// Create a writer for the outputstream
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
document.open();
PdfContentByte cb = writer.getDirectContent(); // Holds the PDF data
PdfImportedPage page;
while(fromPage <= toPage) {
document.newPage();
page = writer.getImportedPage(inputPDF, fromPage);
cb.addTemplate(page, 0, 0);
fromPage++;
}
outputStream.flush();
document.close();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (document.isOpen())
document.close();
try {
if (outputStream != null)
outputStream.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
return true;
}
//使用示例如下
public static void main(String[] args) {
try {
test.splitPDF(new FileInputStream("C:\\Users\\A\\Desktop\\常用测试pdf\\pink by EasePDF.pdf"),
new FileOutputStream("C:\\Users\\A\\Desktop\\常用测试pdf\\cff2.pdf"), "1-1");
} catch (Exception e) {
e.printStackTrace();
}
}
}