PDFBox - Dividindo um Documento PDF

No capítulo anterior, vimos como adicionar JavaScript a um documento PDF. Vamos agora aprender como dividir um determinado documento PDF em vários documentos.

Dividindo as páginas em um documento PDF

Você pode dividir o documento PDF fornecido em vários documentos PDF usando a classe chamada Divisor. Esta classe é usada para dividir o documento PDF fornecido em vários outros documentos.

A seguir estão as etapas para dividir um documento PDF existente

Etapa 1: Carregando um documento PDF existente

Carregue um documento PDF existente usando o método estático load() do PDDocumentclasse. Este método aceita um objeto de arquivo como parâmetro, uma vez que é um método estático, você pode invocá-lo usando o nome da classe conforme mostrado abaixo.

File file = new File("path of the document") 
PDDocument document = PDDocument.load(file);

Etapa 2: instanciar a classe do divisor

A classe chamada Splitter contém os métodos para dividir o documento PDF fornecido, portanto, instancie essa classe conforme mostrado abaixo.

Splitter splitter = new Splitter();

Etapa 3: Dividindo o documento PDF

Você pode dividir o documento fornecido usando o Split() método do Splitterclasse esta classe. Este método aceita um objeto daPDDocument classe como um parâmetro.

List<PDDocument> Pages = splitter.split(document);

o split() O método divide cada página de um determinado documento como um documento individual e retorna todos eles na forma de uma lista.

Etapa 4: Criar um objeto Iterator

Para percorrer a lista de documentos, você precisa obter um objeto iterador da lista adquirida na etapa acima, você precisa obter o objeto iterador da lista usando o listIterator() método conforme mostrado abaixo.

Iterator<PDDocument> iterator = Pages.listIterator();

Etapa 5: Fechando o Documento

Por fim, feche o documento usando close() método de PDDocument classe como mostrado abaixo.

document.close();

Exemplo

Suponha que haja um documento PDF com o nome sample.pdf no caminho C:\PdfBox_Examples\ e este documento contém duas páginas - uma página contendo imagem e outra página contendo texto conforme mostrado abaixo.

Este exemplo demonstra como dividir o documento PDF mencionado acima. Aqui, vamos dividir o documento PDF chamadosample.pdf em dois documentos diferentes sample1.pdf e sample2.pdf. Salve este código em um arquivo com o nomeSplitPages.java.

import org.apache.pdfbox.multipdf.Splitter; 
import org.apache.pdfbox.pdmodel.PDDocument;

import java.io.File; 
import java.io.IOException; 
import java.util.List; 
import java.util.Iterator;
  
public class SplitPages {
   public static void main(String[] args) throws IOException {

      //Loading an existing PDF document
      File file = new File("C:/PdfBox_Examples/sample.pdf");
      PDDocument document = PDDocument.load(file); 

      //Instantiating Splitter class
      Splitter splitter = new Splitter();

      //splitting the pages of a PDF document
      List<PDDocument> Pages = splitter.split(document);

      //Creating an iterator 
      Iterator<PDDocument> iterator = Pages.listIterator();

      //Saving each page as an individual document
      int i = 1;
      while(iterator.hasNext()) {
         PDDocument pd = iterator.next();
         pd.save("C:/PdfBox_Examples/sample"+ i++ +".pdf");
      }
      System.out.println("Multiple PDF’s created");
      document.close();
   }
}

Compile e execute o arquivo Java salvo a partir do prompt de comando usando os seguintes comandos

javac SplitPages.java 
java SplitPages

Após a execução, o programa acima criptografa o documento PDF fornecido exibindo a seguinte mensagem.

Multiple PDF’s created

Se você verificar o caminho fornecido, poderá observar que vários PDFs foram criados com nomes sample1 e sample2 como mostrado abaixo.