Estrutura Lógica
Estrutura Lógica
Os PDFs marcados incluem uma árvore de estrutura lógica que define a hierarquia semântica do documento — parágrafos, títulos, tabelas, figuras e listas. Aspose.PDF FOSS for .NET fornece a API TaggedContent para construir e inspecionar essa estrutura, que é essencial para a conformidade de acessibilidade PDF/UA.
Acessando conteúdo marcado
using var doc = new Document();
var tagged = doc.TaggedContent;
tagged.SetTitle("Accessible Document");
tagged.SetLanguage("en-US");Criando elementos de estrutura
ITaggedContent fornece métodos de fábrica para cada tipo padrão de elemento de estrutura. Os elementos são montados em uma árvore chamando AppendChild.
var root = tagged.RootElement;
var heading = tagged.CreateHeaderElement(1);
heading.SetText("Chapter 1");
root.AppendChild(heading);
var paragraph = tagged.CreateParagraphElement();
paragraph.SetText("This is the first paragraph.");
root.AppendChild(paragraph);Tabelas estruturadas
TableElement cria tabelas acessíveis com seções de cabeçalho, corpo e rodapé.
var table = tagged.CreateTableElement();
root.AppendChild(table);
var thead = table.CreateTHead();
var headerRow = thead.CreateTR();
headerRow.CreateTH().SetText("Name");
headerRow.CreateTH().SetText("Value");
var tbody = table.CreateTBody();
var dataRow = tbody.CreateTR();
dataRow.CreateTD().SetText("Width");
dataRow.CreateTD().SetText("612");Ilustrações e figuras
IllustrationElement envolve imagens na árvore de estrutura.
var figure = tagged.CreateFigureElement();
figure.SetImage("chart.png");
figure.SetAlternativeText("Sales chart for Q4");
root.AppendChild(figure);Tipos de elementos de estrutura
A API suporta o conjunto completo de tipos de elementos de estrutura PDF:
- Block-level: Parágrafo, Título (H1-H6), Lista, Item de Lista, Tabela, Citação em bloco, Código
- Inline: Span, Link, Anotação, Figura, Fórmula
- Grouping: Divisão, Artigo, Seção, Parte
Dicas e Melhores Práticas
- Sempre defina
TitleeLanguageemTaggedContentpara conformidade PDF/UA. - Construa a árvore de estrutura de cima para baixo: crie os elementos, depois anexe os filhos.
- Use
SetAlternativeTextem elementos de figura para acessibilidade de leitores de tela. - Marque tabelas com
THead,TBody,TFootpara semântica de tabela adequada. - Valide a conformidade PDF/UA com
PdfFormatConversionOptions(consulte o guia de Conversão).
Problemas Comuns
| Problema | Causa | Correção |
|---|---|---|
| Falha na validação PDF/UA | Árvore de estrutura ausente elementos obrigatórios | Garantir que todo o conteúdo tenha elementos de estrutura correspondentes |
| Ordem dos títulos está errada | H2 aparece antes de H1 | Seguir hierarquia sequencial de títulos |
| Figura sem texto alternativo | SetAlternativeText não chamado | Sempre forneça texto alternativo para ilustrações |
| Tabela não reconhecida pelo leitor de tela | Estrutura THead/TBody ausente | Use a API completa de estrutura de tabela |
Perguntas Frequentes
O que é um PDF marcado?
Um PDF marcado inclui uma árvore de estrutura lógica que mapeia o conteúdo visual para elementos semânticos (títulos, parágrafos, tabelas), permitindo ferramentas de acessibilidade e reflow de conteúdo.
Um PDF marcado é o mesmo que PDF/UA?
PDF/UA é um padrão que requer marcação além de regras adicionais de acessibilidade.
PDFs marcados são um pré-requisito para conformidade com PDF/UA.
Posso marcar um PDF existente?
A API TaggedContent funciona melhor com documentos criados do zero. Para PDFs existentes, inspecione a árvore de estrutura através de Document.TaggedContent.
Resumo da Referência da API
| Classe / Método | Descrição |
|---|---|
TaggedContent | Ponto de entrada para operações de estrutura lógica |
TaggedContent.SetTitle | Definir o título do documento para acessibilidade |
TaggedContent.SetLanguage | Definir o idioma do documento |
ITaggedContent | Interface com métodos de fábrica para todos os tipos de elemento |
StructureElement | Classe base para todos os elementos de estrutura |
StructureElement.AppendChild | Adicionar um elemento filho à árvore |
StructureElement.SetText | Definir o conteúdo de texto de um elemento |
TableElement | Elemento de estrutura de tabela acessível |
TableElement.CreateTHead | Criar a seção de cabeçalho da tabela |
TableElement.CreateTBody | Criar a seção de corpo da tabela |
TableTRElement | Elemento de linha de tabela |
TableTRElement.CreateTD | Adicionar uma célula de dados |
TableTRElement.CreateTH | Adicionar uma célula de cabeçalho |
IllustrationElement | Elemento de estrutura de figura/ilustração |
IllustrationElement.SetImage | Anexar uma imagem à ilustração |