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.