Pular para o conteúdo
PDFLove

como funciona juntar pdf

Como juntar dois PDFs funciona de verdade

Os dois arquivos têm um objeto numerado 1. Essa única colisão é a razão inteira de juntar ser mais do que concatenar, e explica tudo o que sobrevive e o que não sobrevive à operação.

01

Por que você não pode simplesmente colar um arquivo depois do outro

Um PDF é um conjunto de objetos numerados e um índice de onde cada um começa. Os dois arquivos numeram seus objetos a partir do 1. Os dois têm um catálogo, uma árvore de páginas e um dicionário de fontes chamado F1. Concatene os bytes e você terá dois índices concorrentes descrevendo dois objetos 1 concorrentes, e o leitor que abrir isso verá o que encontrar por último — ou seja, apenas o segundo documento.

Então juntar precisa reescrever. Cada objeto do segundo arquivo é copiado para dentro do primeiro com um número novo, e cada referência dentro desses objetos é reescrita para apontar para os números novos. Uma página que dizia "meu conteúdo está no objeto 12" passa a dizer "meu conteúdo está no objeto 847".

Depois as duas árvores de páginas são emendadas em uma só, uma tabela de referências cruzadas nova é construída com os deslocamentos corretos para tudo, e um novo trailer é escrito apontando para o catálogo sobrevivente.

1. Analisar os dois
Ler os grafos de objetos e as árvores de páginas. Nada é renderizado.
2. Renumerar e copiar
Cada objeto do arquivo B ganha um identificador novo, e cada referência a ele é reescrita.
3. Emendar as árvores de páginas
Construir uma árvore só, na ordem que você pediu. As páginas em si não são tocadas.
4. Reconstruir o índice
Deslocamentos novos para cada objeto, trailer novo, arquivo novo.

02

Por que juntar nunca custa qualidade

Nada é decodificado. Os fluxos de imagem são copiados byte a byte, ainda na codificação em que chegaram. Os fluxos de conteúdo são copiados sem alteração. As fontes são copiadas sem alteração.

Essa é a razão inteira de juntar ser sem perdas e rápido. Juntar 500 páginas é um exercício de contabilidade sobre algumas centenas de milhares de referências entre objetos, e uma máquina moderna faz isso em um ou dois segundos. Compare com comprimir, que precisa decodificar e recodificar cada imagem do arquivo.

Também significa que um arquivo juntado é exatamente tão bom e tão ruim quanto suas entradas. Juntar uma digitalização borrada com uma exportação nítida dá um documento borrado em metade. Nada se normaliza.

03

O que precisa ser consertado no caminho

Renumerar objetos é mecânico. Tudo o que se referia a esses objetos por nome em vez de por número não é.

Marcadores e sumário
A árvore de marcadores aponta para objetos de página. Ela precisa ser reconstruída e reapontada, ou os marcadores do segundo documento caem nas páginas do primeiro — ou somem.
Links internos
As referências cruzadas e os saltos do sumário são destinos que apontam para objetos de página, e precisam do mesmo remapeamento que os marcadores.
Campos de formulário
Os campos são endereçados por nome. Junte duas cópias do mesmo formulário e você fica com dois campos chamados `nome`, que a maioria dos leitores trata como um campo só que preenche os dois. Achatar antes evita isso.
Recursos duplicados
Os dois arquivos incorporam a Helvetica como subconjunto sob nomes internos diferentes. Nada consegue provar que os subconjuntos são intercambiáveis, então os dois viajam — e é por isso que um arquivo juntado às vezes pesa mais que a soma das partes.

04

A criptografia precisa sair primeiro

Em um PDF criptografado, os fluxos e as cadeias são criptografados individualmente, com uma chave por objeto derivada da chave de criptografia do arquivo combinada com o número e a geração daquele objeto. O número do objeto faz parte da chave.

O que significa que renumerar um objeto criptografado o invalida silenciosamente. Para juntar, a ferramenta precisa descriptografar primeiro com a chave do arquivo, copiar os objetos em texto claro, renumerá-los e criptografar o resultado sob uma chave nova se a saída tiver de ser protegida. É por isso que uma ferramenta de juntar pede a senha em vez de contorná-la, e por isso a saída sai sem criptografia a menos que você a proteja de novo depois.

05

Dividir é a mesma operação ao contrário

Dividir constrói um arquivo novo contendo apenas as páginas que você pediu, mais todos os objetos que essas páginas alcançam: seus fluxos de conteúdo, suas fontes, suas imagens, e nada mais. É um percurso de grafo a partir de um conjunto de raízes.

É por isso que dividir ao meio um documento de 100 páginas raramente dá dois arquivos com metade do tamanho. Se uma fonte ou um logotipo é usado em páginas espalhadas pelo documento, as duas metades precisam da própria cópia. Recursos compartilhados são duplicados, não divididos.

Perguntas

Perguntas relacionadas

Juntar PDFs reduz a qualidade?

Não. Nada é decodificado nem recodificado — os fluxos de imagem e de conteúdo são copiados byte a byte. As páginas juntadas são idênticas bit a bit às originais.

Por que meus marcadores sumiram depois de juntar?

Porque a árvore de marcadores aponta para objetos de página que foram renumerados, e reapontá-la é um passo separado de copiar as páginas. Uma junção que pula esse passo ou descarta o sumário ou o deixa apontando para as páginas erradas.

Posso juntar um PDF protegido por senha?

Só fornecendo a senha. Objetos criptografados são chaveados em parte pelo próprio número, então não podem ser renumerados enquanto criptografados. Desbloqueie, junte e proteja o resultado de novo se ele precisar continuar trancado.

Por que juntar é tão mais rápido que comprimir?

Porque juntar é contabilidade e comprimir é processamento de imagem. Uma junção reescreve números de objeto e referências; uma passada de compressão decodifica, reamostra e recodifica cada imagem de cada página.