<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
@GetMapping("/pdf")
public void createPdf(){
try {
LocalTime start = LocalTime.now().withNano(0);
splitPdf(new FileInputStream("F:\\PMP\\123.pdf"),
new FileOutputStream("F:\\PMP\\1-1.pdf"), 1, 1);
splitPdf(new FileInputStream("F:\\PMP\\123.pdf"),
new FileOutputStream("F:\\PMP\\1-3.pdf"), 1, 3);
LocalTime end = LocalTime.now().withNano(0);
long between = ChronoUnit.MILLIS.between(start, end);
System.out.println(between);
} catch (Exception e) {
e.printStackTrace();
}
}
private void splitPdf(InputStream inputStream,OutputStream outputStream, int fromPage, int toPage) {
Document document = new Document();
try {
PdfReader inputPdf = new PdfReader(inputStream);
int totalPages = inputPdf.getNumberOfPages();
if(fromPage > toPage ) {
fromPage = toPage;
}
if(toPage > totalPages) {
toPage = totalPages;
}
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
document.open();
PdfContentByte cb = writer.getDirectContent();
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();
}
}
}