# Como funciona um arquivo PDF por dentro

Um PDF é um conjunto de objetos com uma tabela de referências no fim. Veja a estrutura, o que pesa no arquivo, por que ele cresce depois de editado e como inspecioná-lo.

URL canônica: https://www.ajustapdf.com/blog/o-que-tem-dentro-de-um-pdf

Publicado em 2026-10-04 · 5 min de leitura

Um PDF é um conjunto de objetos ligados entre si: páginas, fontes, imagens, textos e metadados, cada um com um número. No fim do arquivo, uma tabela de referências cruzadas (xref) diz em que byte começa cada objeto, e o trailer aponta para o catálogo do documento. Por isso um leitor abre a página 40 sem precisar percorrer as 39 anteriores.

## A estrutura em quatro partes

Todo PDF segue a mesma ordem, definida pela especificação ISO 32000. Abra um arquivo em editor de texto puro e você vê o começo dessa organização: um cabeçalho com a versão, os objetos, a tabela de referências e o trailer.

```
%PDF-1.7
1 0 obj
<< /Type /Catalog /Pages 2 0 R >>
endobj
2 0 obj
<< /Type /Pages /Kids [3 0 R] /Count 1 >>
endobj
...
xref
0 3
...
trailer
<< /Size 3 /Root 1 0 R >>
startxref
...
%%EOF
```

O exemplo é simplificado, mas o princípio é o mesmo. O objeto 1 é o catálogo, que aponta para a árvore de páginas no objeto 2. O trailer diz qual é a raiz do documento. O `%%EOF` marca o fim, e o `startxref` indica onde a tabela começa.

## Os objetos que mais pesam

| Objeto | O que guarda | Peso típico |
| --- | --- | --- |
| Catálogo e árvore de páginas | Ordem e hierarquia das páginas | Pouco |
| Página | Tamanho (MediaBox), rotação e referências ao conteúdo | Pouco |
| Fluxo de conteúdo (content stream) | Comandos de desenho e de texto | Varia com a complexidade da página |
| Fonte | Glifos usados, ou a fonte inteira embutida | Alto em documentos com muitas fontes |
| Imagem (XObject com subtipo Image) | Os pixels de fotos e scans | Quase sempre o maior |
| Metadados (Info e XMP) | Autor, programa de origem, datas | Pouco |

Na prática, quase todo o peso de um PDF está em duas linhas dessa tabela: fontes e imagens. Os demais objetos são pequenos em comparação.

## Como o texto é desenhado

Uma página de texto não guarda a palavra como palavra. Ela guarda um fluxo de comandos que seleciona uma fonte, define o tamanho e posiciona o texto:

```
BT
/F1 12 Tf
72 700 Td
(Olá, mundo) Tj
ET
```

`/F1` aponta para a fonte no dicionário de recursos da página, `12 Tf` define o corpo, `72 700 Td` move o cursor para a posição e `Tj` desenha a sequência de caracteres. Por isso o texto depende da fonte: sem ela, o leitor não sabe que formato dar às letras. O guia sobre [fontes embutidas no PDF](/blog/fontes-embutidas-no-pdf) trata do peso desse pedaço.

## Por que o tamanho não é o que você espera

Dois motivos explicam a maior parte das surpresas. O primeiro é a compressão interna: os fluxos de página e de imagem são compactados com Flate, o mesmo algoritmo do ZIP. Um fluxo já compactado não encolhe mais sem ser reescrito, por isso comprimir um PDF que já está compacto dá pouco ganho.

O segundo é o que a especificação chama de atualização incremental. Quando um PDF é editado sem ser reescrito, o programa acrescenta os objetos novos no fim do arquivo, com uma nova tabela de referências, e mantém a versão anterior. Um documento revisado dez vezes pode carregar dez revisões. Reescrever o arquivo inteiro, como faz a compressão do AjustaPDF com o Ghostscript, descarta esse histórico.

## Como ver a estrutura por dentro

1.  Confira a integridade com `qpdf --check arquivo.pdf`. Ele aponta tabelas de referência erradas e objetos fora do lugar.
2.  Gere uma cópia legível com `qpdf --qdf --object-streams=disable entrada.pdf saida.pdf`. A saída tem os objetos em texto e os fluxos descompactados, o que permite ler cada comando.
3.  Compare o tamanho do original com o da cópia descompactada. A diferença mostra quanto do peso era compactação e quanto era conteúdo.

Quando o arquivo está danificado, o problema costuma estar nessa tabela. O guia [PDF corrompido que não abre](/blog/pdf-corrompido-nao-abre) explica os sintomas mais comuns.

## Como as ferramentas mexem nesses objetos

Cada operação mexe em uma parte diferente da estrutura. O [juntar PDF](/juntar-pdf) copia os objetos de página de um arquivo para outro e reconstrói a árvore de páginas. O [girar PDF](/girar-pdf) altera a rotação gravada em cada página, sem tocar no conteúdo. A criptografia do [proteger PDF](/proteger-pdf) adiciona um dicionário Encrypt ao trailer e cifra os fluxos com AES de 256 bits.

Isso explica por que girar é uma operação quase instantânea e comprimir não é. Girar só escreve um número; comprimir precisa abrir cada imagem, redimensioná-la e recompactá-la.

## O que a estrutura não mostra

Olhar o arquivo por dentro não diz se o documento é fiel. Um PDF bem formado pode trazer uma página escaneada torta, uma assinatura inválida ou um campo de autor que você não quer divulgar. Para isso, a estrutura é só o começo da verificação, e o guia [metadados do PDF e o que revelam](/blog/metadados-do-pdf-o-que-revelam) cuida do que fica escondido no arquivo.

## Por que o mesmo texto pesa diferente

Dois fatores mudam o peso de um texto: a fonte e a forma como ela foi embutida. Um PDF que embute a fonte inteira leva o alfabeto completo, com acentos e símbolos, mesmo que use só meia dúzia de letras. Um PDF com subconjunto de fonte leva apenas os glifos usados. Em ambos, o leitor usa a fonte do próprio arquivo, por isso o texto fica igual em qualquer computador.

## Cabeçalho e versão

A primeira linha do arquivo declara a versão, como `%PDF-1.7`. A versão indica quais recursos o leitor deve suportar, como criptografia e formatos de imagem, mas não garante que o leitor esteja atualizado. Para as diferenças entre versões, leia o guia [versões do PDF 1.4, 1.7 e 2.0](/blog/versoes-do-pdf-1-4-1-7-2-0).

## Atributos herdados: onde mora o tamanho da página

Nem toda página declara tudo. A árvore de páginas pode guardar atributos como MediaBox e Rotate em um nó pai, e cada página herda esses valores quando não os define. Por isso um documento pode mostrar o tamanho certo em uma página e errado em outra: o objeto que define o atributo não é o mesmo. O guia [tamanho A4 no PDF](/blog/tamanho-de-pagina-a4-no-pdf) trata desse ponto.

## Quando a tabela de referências está errada

Se a tabela aponta para o byte errado, o leitor não sabe onde começa cada objeto. Leitores modernos fazem uma varredura: procuram marcas como `1 0 obj` no arquivo inteiro e reconstroem a tabela. É por isso que alguns PDFs danificados abrem em um leitor e falham em outro. A reconstrução tem limite: um arquivo truncado no meio perde tudo o que vinha depois do corte.

Para diagnóstico, o `qpdf --check` separa o que está quebrado do que é apenas estranho. Um aviso sobre a tabela não significa perda de conteúdo; um erro de objeto ausente, sim.

## Perguntas frequentes

### O que é o xref de um PDF?

É a tabela de referências cruzadas, no fim do arquivo. Ela lista o byte exato em que cada objeto começa, e é isso que permite ao leitor pular direto para qualquer página. Se algum deslocamento estiver errado, o leitor tenta reconstruir a tabela varrendo o arquivo inteiro.

### Por que um PDF fica maior depois de editado?

Porque edições são gravadas no fim do arquivo como uma nova revisão, e as versões anteriores continuam dentro dele. Um documento editado muitas vezes acumula objetos antigos. Reescrever o arquivo inteiro, como faz a compressão, descarta essas revisões.

### Dá para ler o conteúdo de um PDF num editor de texto?

Só em partes. O cabeçalho e os dicionários são texto simples, mas os fluxos de página e de imagem vêm compactados com Flate e aparecem como bytes ilegíveis. Para ver tudo, o qpdf com a opção --qdf descompacta o arquivo e o deixa legível.

### Onde ficam o autor e a data de criação de um PDF?

No dicionário Info do arquivo e, em muitos casos, num bloco de metadados XMP. Quem gera o PDF grava esses campos, e eles acompanham o arquivo por padrão. Remover esses dados exige uma ferramenta de edição de metadados; o AjustaPDF não tem essa função.
