Como mesclar dois arquivos PDF usando Java
Mesclar documentos PDF em um único arquivo é um requisito frequente em pipelines de gerenciamento de documentos. Consolidar relatórios mensais, montar formulários de várias partes e agrupar faturas são todos cenários comuns. IronPDF for Java reduz essa operação a uma única chamada de método: PdfDocument.merge(). Passe dois ou mais documentos carregados, e você receberá de volta um PDF combinado com toda a formatação, fontes e imagens incorporadas preservadas exatamente como estavam.
Este guia aborda os quatro cenários de mesclagem mais práticos: combinando PDFs gerados dinamicamente, mesclando arquivos existentes do disco, lidando com lotes maiores com uma abordagem baseada em lista e controlando a ordem das páginas no documento final.
Início rápido: Mesclar PDFs em Java
- Adicione a dependência IronPDF ao seu Maven
pom.xml - Importe
com.ironsoftware.ironpdf.PdfDocument - Carregue arquivos de origem usando
PdfDocument.fromFile() - Chame
PdfDocument.merge(pdf1, pdf2)para produzir um documento combinado - Salve o resultado com
merged.saveAs()
```java {title="Início rápido: Junção básica de PDF"} //:path=/static-assets/pdf/content-code-examples/how-to/how-to-merge-two-pdf-files-java-tutorial/quickstart-merge.java import IronPDF; importação java.nio.file.Paths;
// Carregar dois documentos PDF existentes do disco PdfDocument pdf1 = PdfDocument.fromFile(Paths.get("document1.pdf")); PdfDocument pdf2 = PdfDocument.fromFile(Paths.get("document2.pdf"));
// Mesclar em um único documento; formatação e imagens são preservadas PdfDocument mesclado = PdfDocument.merge(pdf1, pdf2);
// Escrever o PDF combinado para o disco mesclado.saveAs(Paths.get("merged-output.pdf"));
<div class="hsg-featured-snippet">
<h3>Fluxo de trabalho mínimo (5 etapas)</h3>
1. Adicione o IronPDF como uma dependência Maven ou Gradle
2. Importe `com.ironsoftware.ironpdf.PdfDocument`
3. Carregue cada PDF com `PdfDocument.fromFile(Paths.get("file.pdf"))`
4. Chame `PdfDocument.merge(pdf1, pdf2)`, ou passe um array `PdfDocument[]` para lotes
5. Salve o resultado combinado com `merged.saveAs(Paths.get("output.pdf"))`
</div>
## Quais são os pré-requisitos para mesclar PDFs em Java?
Antes de começar a codificar, confirme que esses quatro requisitos estão em vigor:
1. **Java 8 ou superior** instalado com a variável de ambiente `JAVA_HOME` configurada. Consulte o [guia de download e instalação do Java](https://www.java.com/en/download/help/download_options.html#windows) para instruções específicas da plataforma.
2. **Um IDE Java** (este guia usa o [JetBrains IntelliJ IDEA](https://www.jetbrains.com/idea/download/#section=windows), embora o [Eclipse](https://www.eclipse.org/downloads/) funcione igualmente bem).
3. **Maven ou Gradle** configurado em seu IDE. Se você é novo no Maven, o [guia de instalação do Maven da JetBrains](https://www.jetbrains.com/idea/guide/tutorials/marco-codes-maven/installing-maven/) cobre a configuração no IntelliJ.
4. **A biblioteca IronPDF** adicionada como uma dependência de projeto. O [guia de instalação do IronPDF for Java](https://ironpdf.com/java/docs/) explica as abordagens Maven e Gradle.
ObserveIronPDF for Java é compatível com Java 8 e posterior. Não há necessidade de atualizar projetos existentes para um JDK mais novo para começar a usá-lo.
## Como instalo o IronPDF for Java?
IronPDF for Java é distribuído através do [Maven Central](https://search.maven.org), então adicioná-lo ao seu projeto requer apenas algumas linhas de configuração. Não é necessário downloads manuais de JAR.
Abra o IntelliJ IDEA e crie um novo projeto Maven a partir de **File -> New -> Project**, selecionando Maven como o sistema de construção.

Nomeie o projeto e clique em **Concluir**. IntelliJ abre `pom.xml` automaticamente assim que a estrutura do projeto é gerada.

Adicione o seguinte bloco de dependência dentro da seção `<dependencies>` de `pom.xml`. Sempre verifique o [Maven Central para a versão mais recente do IronPDF](https://central.sonatype.com/artifact/com.ironsoftware/ironpdf) e substitua a string de versão pela atual.
```xml {title="pom.xml: Dependência IronPDF"}
//:path=/static-assets/pdf/content-code-examples/how-to/how-to-merge-two-pdf-files-java-tutorial/pom-dependency.xml
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>2024.9.1</version>
</dependency>

Após salvar pom.xml, aparece um pequeno ícone de sincronização no canto superior direito do editor. Clique nele para acionar o download da dependência Maven. Dependendo da velocidade da sua conexão, isso leva entre 15 segundos e alguns minutos, e baixa o IronPDF junto com todas as dependências transitivas requeridas.

implementation 'com.ironsoftware:ironpdf:2024.9.1' às suas dependências build.gradle em vez disso. O mesmo artefato do Maven Central funciona para ambos os sistemas de construção.Como Criar e Mesclar Novos Documentos PDF?
Quando o conteúdo da fonte é gerado em tempo de execução (a partir de modelos HTML, registros de banco de dados ou entrada do usuário), o fluxo de trabalho é renderizar cada peça como PdfDocument primeiro, depois mesclá-los.
PdfDocument.renderHtmlAsPdf() converte uma string HTML em um PDF na memória. Cada chamada produz um objeto de documento independente que pode ser passado diretamente para merge() sem escrever nenhum arquivo intermediário no disco.
Renderizando Seções HTML Antes de Mesclar
O exemplo abaixo renderiza duas strings HTML separadas na memória e as combina em um único documento. Este padrão funciona bem para geradores de relatórios, criadores de faturas e qualquer sistema onde o conteúdo é montado programaticamente a partir de modelos ou linhas de banco de dados.
```java {title="Mesclar PDFs Gerados Dinamicamente"} //:path=/static-assets/pdf/content-code-examples/how-to/how-to-merge-two-pdf-files-java-tutorial/merge-html-pdfs.java import IronPDF; import java.io.IOException; importação java.nio.file.Paths;
public class Main { public static void main(String[] args) throws IOException { // Conteúdo HTML para cada seção do documento String htmlA = "
Primeira parte do relatório.
"; String htmlB = "Segunda parte do relatório.
";// Renderizar cada string HTML como um PDF na memória -- sem necessidade de gravações no disco PdfDocument pdfA = PdfDocument.renderHtmlAsPdf(htmlA); PdfDocument pdfB = PdfDocument.renderHtmlAsPdf(htmlB);
// Mesclar ambos os documentos em um único PDF combinado PdfDocument merged = PdfDocument.merge(pdfA, pdfB);
// Salvar o resultado mesclado merged.saveAs(Paths.get("assets/merged.pdf")); } }
A saída mesclada concatena páginas na ordem dos argumentos: as páginas `pdfA` aparecem antes das páginas `pdfB`. Para um guia completo do mecanismo de renderização HTML, veja o [tutorial de IronPDF HTML para PDF for Java](https://ironpdf.com/java/tutorials/html-to-pdf/).

ImportanteA chamada `renderHtmlAsPdf()` usa um mecanismo de renderização baseado em Chromium. CSS completo, fontes da web e imagens inline são todos suportados -- a saída corresponde ao que um navegador exibiria.
## Como Mesclar Arquivos PDF Existentes?
Carregar PDFs do disco e mesclá-los segue o mesmo padrão, usando `PdfDocument.fromFile()` para ler cada arquivo na memória antes de passar os objetos para `merge()`.
Esta abordagem se adapta a qualquer fluxo de trabalho onde os documentos de origem já existam -- faturas digitalizadas, relatórios exportados ou arquivos recebidos de um sistema externo. O IronPDF lê a estrutura do PDF e mescla páginas sem alterar os arquivos de origem originais.
### Carregando e Combinando Arquivos do Disco
```java {title="Mesclar Arquivos PDF Existentes do Disco"}
//:path=/static-assets/pdf/content-code-examples/how-to/how-to-merge-two-pdf-files-java-tutorial/merge-existing-files.java
import IronPDF;
import java.io.IOException;
importação java.nio.file.Paths;
public class Main {
public static void main(String[] args) throws IOException {
// Carregar dois arquivos PDF existentes do disco
PdfDocument pdfA = PdfDocument.fromFile(Paths.get("assets/invoice-january.pdf"));
PdfDocument pdfB = PdfDocument.fromFile(Paths.get("assets/invoice-february.pdf"));
// Combinar em um documento
PdfDocument merged = PdfDocument.merge(pdfA, pdfB);
// Escrever a saída mesclada -- originais não são alterados
merged.saveAs(Paths.get("assets/invoices-q1.pdf"));
}
}
A chamada merge() produz um novo objeto PdfDocument; nem pdfA nem pdfB é modificado. Para reverter a operação -- extraindo páginas novamente -- consulte o exemplo de divisão de PDFs for Java.

Quais Formatos de Arquivo o fromFile() Aceita?
PdfDocument.fromFile() aceita arquivos padrão .pdf. Para documentos que precisam ser convertidos antes da mesclagem -- como arquivos HTML, arquivos de imagem ou outros formatos -- use o método de renderização apropriado (renderHtmlAsPdf(), renderUrlAsPdf()) primeiro para produzir um PdfDocument, em seguida, passe esse objeto para merge().
fromFile() podem ser absolutos ou relativos ao diretório de trabalho. Usar Paths.get() (de java.nio.file) é a abordagem recomendada para compatibilidade entre plataformas.O IronSuite desempenha um papel crucial nas nossas operações. Estas são ferramentas que aumentam a eficiência no negócio, incluindo a criação de plantas baixas e melhoria na gestão de inventário.
Como faço para mesclar mais de dois arquivos PDF?
PdfDocument.merge() aceita uma lista de argumentos de comprimento variável, então mesclar três ou quatro documentos não é diferente, sintaticamente, de mesclar dois. Para coleções de tamanho dinâmico -- onde o número de PDFs é determinado em tempo de execução -- passar um array PdfDocument[] é a abordagem mais limpa.
Padrões Baseados em Varargs e Lista
Os dois padrões abaixo produzem resultados idênticos. Escolha a chamada direta de varargs quando a contagem de arquivos estiver fixada, e o padrão lista-para-array quando você estiver construindo a coleção programaticamente:
```java {title="Mesclar Quatro PDFs -- Abordagens com Varargs e Lista"} //:path=/static-assets/pdf/content-code-examples/how-to/how-to-merge-two-pdf-files-java-tutorial/merge-multiple-files.java import IronPDF; import java.io.IOException; importação java.nio.file.Paths; import java.util.ArrayList; import java.util.List;
public class Main { public static void main(String[] args) throws IOException { // Carregar quatro arquivos PDF existentes PdfDocument pdfA = PdfDocument.fromFile(Paths.get("assets/chapter-1.pdf")); PdfDocument pdfB = PdfDocument.fromFile(Paths.get("assets/chapter-2.pdf")); PdfDocument pdfC = PdfDocument.fromFile(Paths.get("assets/chapter-3.pdf")); PdfDocument pdfD = PdfDocument.fromFile(Paths.get("assets/chapter-4.pdf"));
// Padrão 1: chamada direta de varargs -- funciona bem para um número fixo de arquivos PdfDocument merged = PdfDocument.merge(pdfA, pdfB, pdfC, pdfD); merged.saveAs(Paths.get("assets/full-document.pdf"));
// Padrão 2: construir uma lista primeiro -- preferido quando a contagem de arquivos é dinâmica
List
PdfDocument mergedFromList = PdfDocument.merge( pdfList.toArray(new PdfDocument[0]) ); mergedFromList.saveAs(Paths.get("assets/full-document-v2.pdf")); } }
ImportanteA ordem das páginas na saída corresponde exatamente à ordem dos argumentos. Se a sequência do documento for importante -- por exemplo, capítulos de um livro ou seções de formulário ordenadas -- classifique sua lista antes de chamar `merge()`.
### Como Posso Escanear um Diretório e Mesclar Todos os PDFs?
Quando o conjunto de arquivos de entrada não é conhecido no momento da compilação, ler caminhos de arquivos de um diretório é uma extensão natural do padrão de lista. O trecho abaixo coleta todos os arquivos `.pdf` de uma pasta, classifica-os pelo nome do arquivo e os mescla em ordem.
```java {title="Scanear um Diretório e Mesclar Todos os Arquivos PDF"}
//:path=/static-assets/pdf/content-code-examples/how-to/how-to-merge-two-pdf-files-java-tutorial/merge-directory-pdfs.java
import IronPDF;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
importação java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) throws IOException {
Path inputDir = Paths.get("assets/monthly-reports");
// Coletar todos os arquivos PDF do diretório, classificados por nome de arquivo
List<Path> pdfPaths = Files.list(inputDir)
.filter(p -> p.toString().endsWith(".pdf"))
.sorted(Comparator.comparing(Path::getFileName))
.collect(Collectors.toList());
// Carregar cada arquivo em um PdfDocument
List<PdfDocument> documents = new ArrayList<>();
for (Path path : pdfPaths) {
documents.add(PdfDocument.fromFile(path));
}
// Mesclar todos os documentos e salvar o resultado
PdfDocument combined = PdfDocument.merge(
documents.toArray(new PdfDocument[0])
);
combined.saveAs(Paths.get("assets/annual-report.pdf"));
}
}
Este padrão lida com qualquer tamanho de pasta. Para grandes lotes (50+ arquivos), considere carregar e mesclar em fatias para limitar o uso máximo de memória em vez de carregar todos os arquivos simultaneamente.
pdfPaths com um Comparator personalizado se seus arquivos seguirem um esquema de nomenclatura baseado em data (por exemplo, 2024-01.pdf, 2024-02.pdf). A classificação alfabética funciona naturalmente para números de meses preenchidos com zero.Após a mesclagem, você pode querer refinar o documento combinado ainda mais. IronPDF for Java suporta adicionar cabeçalhos e rodapés personalizados, aplicar marcas d'água e comprimir a saída final para reduzir o tamanho do arquivo antes da entrega.
Quais São os Próximos Passos para Mesclagem de PDFs em Java?
Este guia cobriu quatro padrões de mesclagem com IronPDF for Java: renderizar conteúdo HTML para PDF antes da mesclagem, carregar e combinar arquivos existentes do disco, lidar com lotes de documentos de comprimento variável com uma lista, e escanear um diretório para mesclar todos os PDFs automaticamente. Em todos os casos, PdfDocument.merge() preserva o formato de origem -- fontes, imagens e layout de página são mantidos na saída sem qualquer configuração adicional.
Para continuar explorando o que IronPDF for Java pode fazer, veja o tutorial de mesclagem de PDFs em Java para padrões adicionais, ou revise como assinar PDFs digitalmente em Java para adicionar assinaturas à saída combinada. Para operações em nível de página -- reordenar, remover ou extrair páginas individuais -- veja o exemplo de exclusão de páginas específicas.
Pronto para tentar em seu próprio projeto? Inicie sua avaliação gratuita -- nenhuma cartão de crédito é necessário. Quando estiver pronto para implantar, veja as opções de licenciamento para uso por equipes e empresas.
Perguntas frequentes
Qual é a maneira mais simples de mesclar arquivos PDF em Java?
A maneira mais simples é PdfDocument.merge(pdf1, pdf2) do IronPDF for Java. Carregue cada arquivo com PdfDocument.fromFile(Paths.get("file.pdf")), passe ambos para merge() e salve o resultado com merged.saveAs().
Quais são os pré-requisitos para mesclar PDFs com IronPDF em Java?
Você precisa de Java 8 ou superior com JAVA_HOME configurado, um IDE Java como IntelliJ IDEA ou Eclipse, Maven ou Gradle configurado e a dependência IronPDF adicionada ao arquivo pom.xml ou build.gradle do seu projeto.
Posso mesclar mais de dois arquivos PDF de uma vez em Java?
Sim. PdfDocument.merge() aceita uma lista de argumentos de comprimento variável, assim você pode passar três ou mais objetos PdfDocument diretamente. Para uma coleção dinâmica, converta uma List<PdfDocument> em um array usando list.toArray(new PdfDocument[0]) e passe isso para merge().
Como controlo a ordem das páginas ao mesclar PDFs em Java?
As páginas aparecem no resultado na mesma ordem dos argumentos passados para merge(). Se você estiver construindo uma lista dinamicamente, classifique-a antes de chamar merge() -- por exemplo, classifique por nome de arquivo ou por um campo de data nos metadados do documento.
Como mesclo PDFs gerados a partir de HTML em Java?
Chame PdfDocument.renderHtmlAsPdf(htmlString) para cada seção HTML para produzir um PdfDocument na memória, então passe esses objetos para PdfDocument.merge(). Nenhum arquivo intermediário é escrito no disco.
Quais operações adicionais de PDF posso realizar após a mesclagem em Java?
Após a mesclagem, o IronPDF for Java suporta adicionar cabeçalhos e rodapés, aplicar marcas d'água personalizadas, comprimir o resultado para reduzir o tamanho do arquivo, adicionar assinaturas digitais, extrair ou excluir páginas individuais e preencher campos de formulário.


