Artigo técnico

Estrutura mestre do PDF: metadados XML, marcadores e anotações

· Estrutura PDF

Entendendo Metadados XML e Marcadores em PDF: Um Guia Técnico.

📖 15 minutos de leitura. Desenvolvimento de PDF. 🔧 Nível Intermediário-Avançado.

PDF document structure showing metadata and bookmarks navigation panel

Este guia abrangente explora quatro tópicos essenciais relacionados não à aparência visual de um documento PDF, mas aos dados auxiliares que podem ser incluídos para uso interativo na tela, e aos metadados usados para transportar informações adicionais com um documento para uso por programas em um fluxo de trabalho PDF.

Tópicos Principais Abordados.

📍 Destinos.

Marcadores de localização precisos que definem posições específicas dentro de documentos PDF. Estes permitem uma navegação precisa para marcadores e hiperlinks, enquanto os esquemas de documentos fornecem funcionalidade hierárquica de índice.

Metadados XML.

Fluxos XML estruturados que fornecem metadados abrangentes do documento usando formatos XMP padronizados, indo além das propriedades básicas do documento para incluir informações descritivas ricas.

Anexos de arquivo.

Capacidade completa de incorporação de arquivos que empacota recursos externos diretamente dentro de documentos PDF, criando pacotes de documentos autocontidos semelhantes a anexos de e-mail.

Anotações.

Elementos de sobreposição interativos que adicionam texto, gráficos e funcionalidades clicáveis às páginas PDF sem modificar o conteúdo subjacente. Inclui hiperlinks para navegação perfeita no documento e várias ferramentas de marcação para interação aprimorada do leitor.

Marcadores e Destinos.

PDF bookmarks navigation panel showing document outline structure

A navegação no documento depende de estruturas hierárquicas de marcadores, tecnicamente conhecidas como. esboço do documentoEste sistema organizado em árvore apresenta entradas clicáveis, geralmente títulos de capítulos, cabeçalhos de seções e nomes de subseções, que permitem aos leitores navegar rapidamente para seções específicas do documento. Cada entrada de marcador combina texto de exibição com informações de destino que especificam exatamente para onde o link deve direcionar.

Entendendo os Destinos

Os destinos PDF servem como marcadores de localização precisos dentro de um documento, especificando qual página exibir, onde posicionar a visualização nessa página e qual nível de zoom aplicar. Você pode criar destinos de duas maneiras: definindo-os diretamente (o que usaremos em nossos exemplos para clareza) ou referenciando-os por nome por meio de um sistema de nomenclatura abrangente do documento. A maioria dos leitores de PDF apresenta marcadores em um painel de navegação, juntamente com o conteúdo principal do documento.

Cada destino usa uma estrutura de array, onde os elementos específicos variam dependendo do comportamento de visualização que você deseja alcançar. Aqui estão os principais padrões de destino disponíveis:

Tabela de Tipos de Destino

Observação: "page" representa uma referência indireta a um objeto de página. Por padrão, esses destinos funcionam com as bordas da caixa de recorte da página, recorrendo à caixa de mídia quando nenhuma caixa de recorte é definida.

Array Description
[page /Fit] Scales the page to fit completely within the viewer window, adjusting both width and height proportionally.
[page /FitH top] Positions the specified top coordinate at the window’s top edge while scaling horizontally to fit the full page width.
[page /FitV left] Aligns the specified left coordinate with the window’s left edge while scaling vertically to fit the full page height.
[page /XYZ left top zoom] Positions the coordinates (left, top) at the window’s upper-left corner and applies the specified zoom factor. Null values preserve current settings for those parameters.
[page /FitR left bottom right top] Zooms and positions the view to display the rectangular area defined by the left, bottom, right, and top coordinates.
[page /FitB] Similar to /Fit, but scales based on the actual content boundaries instead of the defined crop box area.
[page /FitBH top] Functions like /FitH but uses the content bounding box instead of the crop box for horizontal scaling calculations.
[page /FitBV left] Operates like /FitV but calculates vertical scaling based on the content bounding box rather than the crop box boundaries.

Estrutura do Esboço do Documento

Os documentos de estrutura criam uma estrutura de navegação hierárquica que funciona como um índice interativo para visualizadores de PDF. Essa organização em árvore ajuda os usuários a navegar rapidamente por documentos complexos, fornecendo uma visão geral estrutural clara. O sistema depende de dois tipos fundamentais de objetos:

  • Dicionário de estrutura – A raiz da hierarquia de estrutura
  • Dicionários de itens de estrutura – Entradas individuais na estrutura

Estrutura do dicionário de estrutura (tabela)

Key Value Type Value
/Type name If present, must be /Outlines.
/First indirect reference to dictionary References the initial top-level outline entry in the document hierarchy. This field is mandatory when outline entries exist.
/Last indirect reference to dictionary References the final top-level outline entry in the document hierarchy. This field is mandatory when outline entries exist.
/Count integer Specifies how many outline entries are currently expanded across the entire outline tree. Can be omitted when no entries are in an open state.

Implementação de itens de estrutura

Cada item de estrutura consiste em um dicionário que especifica seu título de exibição, destino e relacionamentos com outros itens na hierarquia.

Vamos examinar como um simples esquema de documento é estruturado na sintaxe PDF:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
8 0 obj
<</Type/Outlines/Count 4/First 9 0 R/Last 9 0 R>>
endobj
9 0 obj
<</Title(Chapter 1: Experiment A)/Count 3/Parent 8 0 R/First 12 0 R/Last 18 0 R>>
endobj
12 0 obj
<</Title(1: Introduction)/Count 0/Parent 9 0 R/Next 15 0 R>>
endobj
15 0 obj
<</Title(2: Methodology)/Count 0/Parent 9 0 R/Prev 12 0 R/Next 18 0 R>>
endobj
18 0 obj
<</Title(3: Result verification)/Count 0/Parent 9 0 R/Prev 15 0 R/>>
endobj

Estrutura da Tabela do Dicionário de Itens do Esquema

* indica uma entrada obrigatória

Key Value Type Value
/Title* text string Text to be displayed for this entry.
/Parent* indirect reference to dictionary References this item’s parent within the outline hierarchy, which can be either another outline item or the root outline dictionary.
/Prev indirect reference to dictionary References the preceding sibling item at the same hierarchical level, when applicable.
/Next indirect reference to dictionary References the following sibling item at the same hierarchical level, when applicable.
/First indirect reference to dictionary References the initial child item under this entry, when child items exist.
/Last indirect reference to dictionary References the final child item under this entry, when child items exist.
/Count integer When the entry is expanded, indicates the count of visible descendant entries. When collapsed, stores a negative value representing the total number of hidden descendants that would become visible upon expansion.
/Dest name, string or array The destination. Arrays are destinations, names are references to entries in the /Dests entry in the document catalog, strings are references to entries in the /Dests entry in the document’s name dictionary.

Metadados XML

PDF XML metadata structure showing XMP format and RDF elements

Documentos PDF modernos podem incorporar fluxos de metadados baseados em XML que oferecem informações muito mais detalhadas e estruturadas do que as propriedades de documentos tradicionais. Este sistema de metadados avançado utiliza a especificação XMP (Extensible Metadata Platform) da Adobe para fornecer descrições de documentos padronizadas e legíveis por máquina, que melhoram a pesquisa, a organização e as capacidades de processamento automatizado.

Estrutura dos Metadados XMP

Os metadados XMP são empacotados como um documento XML que utiliza a sintaxe RDF (Resource Description Framework) para organizar e descrever as propriedades do documento em um formato padronizado. Este conteúdo de metadados é incorporado dentro de um objeto de fluxo dedicado que inclui a identificação de tipo adequada para processadores PDF:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
6 0 obj
<</Length 1235/Type/Metadata/Subtype/XML>>stream
<?xpacket begin="锘xBF" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.2-c001 63.139439, 2010/09/27-13:37:26"
><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
><rdf:Description rdf:about="" xmlns:pdf="http://ns.adobe.com/pdf/1.3/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/"
><pdf:Producer>losLab PDF Library</pdf:Producer>
<dc:creator>losLab.com</dc:creator>
<dc:title>Delphi PDF SDKs</dc:title>
<xmp:CreateDate>2025-06-29T10:46:27+08:00</xmp:CreateDate>
<xmp:ModifyDate>2025-06-29T10:58:57+08:00</xmp:ModifyDate>
<xmp:MetadataDate>2025-06-29T10:46:27+08:00</xmp:MetadataDate>
<dc:description>Delphi Development Library for PDF creation & editing</dc:description>
<xmp:CreatorTool>HotPDF Component</xmp:CreatorTool>
<dc:subject>PDF Developer Library for RAD Studio></dc:subject>
<pdf:Keywords>Delphi, PDF SDK, PDF Component</pdf:Keywords>
</rdf:Description>Robust Delphi PDF development library</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>
endstream
endobj

Esquemas de Metadados Padrão

O framework XMP organiza metadados através de namespaces de esquema bem definidos, cada um servindo categorias específicas de informações:

📋 Dublin Core (dc:)

Informações bibliográficas básicas

  • dc:title – Título do documento
  • dc:creator – Autor(es) do documento
  • dc:subject – Assunto/palavras-chave do documento
  • dc:description – Descrição do documento
  • dc:format – Tipo MIME

🏷️ XMP Basic (xmp:)

Propriedades principais do XMP

  • xmp:CreateDate – Data de criação
  • xmp:ModifyDate – Data de modificação
  • xmp:CreatorTool – Aplicativo de criação
  • xmp:MetadataDate – Data de modificação dos metadados

📄 Esquema PDF (pdf:)

Propriedades específicas do PDF

  • pdf:Producer – Produtor do PDF.
  • pdf:Keywords – Palavras-chave do documento.
  • pdf:PDFVersion – Versão do PDF.

Integração com o catálogo de documentos.

O fluxo de metadados XML é referenciado a partir do catálogo de documentos:

1
2
3
1 0 obj
< < Type Catalog Pages 2 0 R Metadata 10 0 R Outlines 1 0 R>>
endobj

🎯 Melhores práticas para metadados XML.

  • Sempre inclua tanto o dicionário de informações do documento quanto os metadados XMP para máxima compatibilidade.
  • Garanta que os valores de metadados sejam consistentes em ambos os locais.
  • Utilize a codificação XML adequada (UTF-8) para caracteres internacionais.
  • Inclua as datas de criação e modificação no formato ISO 8601.
  • Valide a estrutura XML para evitar erros de análise.

Anexos de Arquivos.

PDF file attachments panel showing embedded files list

Os anexos de arquivos PDF fornecem um método conveniente para incorporar arquivos externos diretamente em um documento PDF, criando pacotes autocontidos que incluem todos os recursos necessários. Esses anexos podem estar associados a todo o documento ou vinculados a páginas específicas, dependendo de suas necessidades. A maioria dos visualizadores de PDF modernos apresenta esses arquivos incorporados em um painel de anexos dedicado, facilitando o acesso, a visualização ou o salvamento do conteúdo incluído para os usuários. Esse recurso é particularmente valioso para criar pacotes de documentos abrangentes, como apresentações que incluem recursos complementares ou relatórios com arquivos de dados anexos.

Estrutura de Arquivos Incorporados.

No seu núcleo, um arquivo incorporado consiste em um objeto de fluxo que contém os dados reais do arquivo, juntamente com uma entrada de dicionário de fluxo que especifica. /Type /EmbeddedFileEssa abordagem simples permite que qualquer tipo de arquivo seja armazenado dentro de um PDF. Veja como a estrutura básica de um arquivo incorporado se parece:

1
2
3
4
5
6
8 0 obj
< < Type EmbeddedFile Length 35>>
stream
This is a text file attachment...
endstream
endobj

O PDF suporta duas abordagens distintas para referenciar arquivos incorporados, cada uma atendendo a diferentes casos de uso: anexos de nível de documento, que são acessíveis globalmente, e anexos de nível de página, que aparecem como elementos interativos em páginas específicas.

Anexos de Nível de Documento

Para anexos de alcance de todo o documento, você precisa adicionar uma /EmbeddedFiles entrada no dicionário de nomes, que é acessado através da /Names entrada no catálogo do documento. Essa abordagem torna o anexo disponível globalmente em todo o PDF, independentemente da página que o usuário está visualizando:

1
2
3
4
5
6
9 0 obj
< < Names << EmbeddedFiles << Names [ (attachment.txt) << EF << F 8 0 R>> /F (attachment.txt) /Type /Filespec >> ] >>
     >>
   /Pages 1 0 R
   /Type /Catalog >>
endobj

Explicação da Estrutura do Código

  • /Names – Contém o dicionário de nomes para o documento.
  • /EmbeddedFiles – Lida especificamente com nomes de arquivos embutidos.
  • (attachment.txt) – O nome do arquivo como ele aparece para os usuários.
  • /EF – Dicionário de arquivos embutidos que contém a referência real ao arquivo.
  • /F 8 0 R – Referência ao objeto de fluxo de arquivo embutido.
  • /Type /Filespec – Identifica isto como um dicionário de especificações de arquivo.

Anexos de nível de página.

Os anexos específicos da página requerem uma abordagem diferente usando anotações de anexos de arquivo. Estes são adicionados ao /Annots array no dicionário da página de destino, criando um ícone de anexo visível com o qual os usuários podem interagir diretamente na página:

1
2
3
4
5
6
7
8
9 0 obj
< < Type Page (Other dictionary entries as usual) Annots [ << FS << EF << F 8 0 R>> /F (attachment.txt) /Type /Filespec >>
          /Subtype /FileAttachment
          /Contents (attachment.txt)
          /Rect [ 18 796.88976378 45 823.88976378 ]
       >> ]
>>
endobj

Propriedades de anexo de página.

  • /FS – Dicionário de especificações de arquivo (o mesmo que /EF acima).
  • /Subtype /FileAttachment – Identifica esta anotação como um anexo de arquivo.
  • /Contents – Texto de dica que aparece ao passar o mouse sobre o ícone do anexo.
  • /Rect – Retângulo que define a posição e o tamanho do ícone do anexo na página.

Casos de uso de anexos.

📊 Arquivos de dados.

Incorpore planilhas, bancos de dados ou arquivos de dados brutos junto com relatórios e análises.

🎨 Arquivos de Origem

Inclua arquivos de design originais, desenhos CAD ou modelos editáveis.

📹 Recursos de Mídia

Anexe apresentações em vídeo, gravações de áudio ou conteúdo interativo.

📋 Documentos de Suporte

Agrupe PDFs relacionados, contratos ou materiais de referência.

Anotações.

Various PDF annotation types including highlights, notes, and links

As anotações em PDF fornecem uma maneira poderosa de adicionar elementos interativos e marcações visuais a documentos sem alterar o conteúdo original da página. Esses elementos sobrepostos aprimoram a experiência de leitura, permitindo que os usuários destaquem texto, adicionem comentários ou criem links clicáveis. Entre os tipos de anotações mais úteis estão os hiperlinks, que permitem a navegação perfeita entre diferentes seções de um documento ou para recursos externos.

Estrutura das Anotações

Embora diferentes tipos de anotações atendam a vários propósitos, todos seguem uma estrutura fundamental consistente, com propriedades específicas do tipo adicionadas conforme necessário. As páginas PDF podem conter várias anotações, que são organizadas em um array referenciado pela entrada /Annots no dicionário de cada página. Cada anotação é implementada como seu próprio objeto de dicionário com propriedades específicas.

Estrutura do Dicionário de Anotações Tabela

* indica uma entrada obrigatória

Key Value Type Value
/Type name When specified, this value must be set to /Annot to properly identify the dictionary type.
/Subtype* name Specifies the specific annotation category (e.g., Link, Text, Highlight).
/Rect* rectangle Defines the annotation’s position and dimensions using standard PDF coordinate units.
/Contents text string Contains the annotation’s text content or provides an alternative descriptive label for accessibility purposes.

Exemplo fundamental do dicionário de anotações:

1
2
3
12 0 obj
< < Type Annot Subtype Link Rect [100 200 300 250] Border [0 0 1] C [0.0 0.0 1.0] Dest [5 0 R XYZ null null null]>>
endobj

Tipos Comuns de Anotações

🔗 Anotações de Link

Crie áreas clicáveis que navegam para destinos dentro do documento ou para recursos externos.

  • /Subtype /Link – Identifica como uma anotação de link.
  • /Dest – Array de destino ou destino nomeado.
  • /A – Dicionário de ação para comportamentos mais complexos.

📝 Anotações de texto.

Exibe notas e comentários pop-up que aparecem ao clicar.

  • /Subtype /Text – Identifica como uma anotação de texto.
  • /Contents – O conteúdo de texto da anotação.
  • /Open – Indica se a anotação está inicialmente aberta.

🖍️ Anotações de Marcação.

Realçar, sublinhar ou riscar o conteúdo do texto.

  • /Subtype /Highlight Realce de texto
  • /Subtype /Underline Sublinhado de texto
  • /Subtype /StrikeOut Texto tachado

Ações avançadas de link

As anotações de link podem executar várias ações além da simples navegação:

1
2
3
13 0 obj
< < Type Annot Subtype Link Rect [50 50 200 100] A << Type Action S URI URI (https: www.example.com)>> >>
endobj

Tipos de Ação

  • /S /GoTo – Navegar para um destino dentro do documento
  • /S /GoToR – Navegar para um destino em outro documento
  • /S /URI – Abrir uma URL da web
  • /S /Launch – Lançar um aplicativo externo
  • /S /JavaScript – Executar código JavaScript

Aparência da Anotação

O estilo visual personalizado para anotações é alcançado através de fluxos de aparência, permitindo um controle preciso de como as anotações são exibidas aos usuários:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
14 0 obj
< < Type Annot Subtype Square Rect [100 100 200 150] C [1.0 0.0 0.0] BS << W 2 S S>>
   /AP < < N 15 0 R>> >>
endobj
 
15 0 obj
< < Type XObject Subtype Form BBox [0 0 100 50] Length 85>>
stream
q
1.0 0.0 0.0 RG
2 w
10 10 80 30 re
S
Q
endstream
endobj

Diretrizes Práticas de Implementação

Integração da Estrutura do Documento

A implementação bem-sucedida requer o entendimento de como esses elementos funcionam juntos dentro da arquitetura geral do documento PDF.

1
2
3
4
1 0 obj
< < Type Catalog Pages 2 0 R Outlines 3 0 R Names << EmbeddedFiles 4 0 R>>
   /Metadata 5 0 R >>
endobj

✅ Lista de verificação de implementação

  1. Configuração do catálogo de documentos – Garanta referências adequadas a títulos, nomes e metadados.
  2. Numeração de objetos – Mantenha uma numeração de objetos consistente e referências cruzadas.
  3. Codificação de fluxos – Aplique filtros e codificações apropriados para fluxos.
  4. Validação – Verifique a estrutura do PDF com ferramentas de validação.
  5. Testes de Compatibilidade – Teste em diferentes visualizadores e versões de PDF.

Problemas comuns e soluções.

❌ Marcadores não estão sendo exibidos.

Solução: Verifique se o catálogo do documento inclui uma /Outlines entrada e se a hierarquia do sumário está estruturada corretamente com as relações pai-filho corretas.

❌ Metadados não reconhecidos.

Solução: Certifique-se de que o fluxo de metadados XML está formatado corretamente, usa os namespaces corretos e é referenciado no catálogo de documentos. /Type /Metadata e /Subtype /XML.

❌ Anexos não acessíveis.

Solução: Verifique se os arquivos incorporados estão referenciados corretamente no dicionário de nomes de nível de documento ou no dicionário de anotações de nível de página, e se os dicionários de especificações de arquivos estão estruturados corretamente.

Conclusão.

Dominar os metadados e a implementação de marcadores PDF é crucial para desenvolver documentos de qualidade profissional que ofereçam uma experiência e funcionalidade superiores ao usuário. Esses recursos poderosos fornecem:

  • Navegação aprimorada. – Através de marcadores e destinos bem estruturados.
  • Metadados ricos. – Permitindo um melhor gerenciamento e pesquisa de documentos.
  • Integração de arquivos. – Agrupamento de recursos relacionados dentro de documentos.
  • Elementos interativos. – Criação de experiências de usuário envolventes com anotações.

Ao implementar corretamente esses recursos, você pode criar documentos PDF que vão além de simples texto e gráficos, tornando-se recursos abrangentes e interativos que atendem tanto a leitores humanos quanto a sistemas automatizados de forma eficaz.

🚀 Próximos passos.

  1. Pratique a implementação dessas estruturas em seu fluxo de trabalho de criação de PDF.
  2. Experimente diferentes tipos de anotações e hierarquias de marcadores.
  3. Teste suas implementações em vários visualizadores de PDF.
  4. Explore recursos avançados de PDF, construindo sobre essas bases.

Referência Técnica.

Este guia é baseado na especificação PDF e cobre recursos compatíveis com o PDF 1.5 e versões posteriores. Para obter os detalhes mais recentes da especificação, consulte o padrão ISO 32000 PDF oficial.