Estrutura lógica
Estrutura lógica
Os PDFs marcados incluem uma árvore de estrutura lógica que define a estrutura do documento. hierarquia semântica parágrafos, títulos, tabelas, figuras e listas. O FOSS para .NET fornece o TaggedContent API para construção e inspecção Esta estrutura é essencial para a conformidade com o PDF/UA.
Acesso ao conteúdo marcado
using var doc = new Document();
var tagged = doc.TaggedContent;
tagged.SetTitle("Accessible Document");
tagged.SetLanguage("en-US");Criação de elementos estruturais
ITaggedContent fornece métodos de fábrica para cada elemento da estrutura padrão; Os elementos são montados em uma árvore chamando a 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 secções de cabeça, 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 estruturais
A API suporta o conjunto completo de tipos de elementos da estrutura PDF:
- Nível de bloco:Parágrafo, Rubrica (H1-H6), Lista, item da lista, Tabela, Quota de bloco, Código
- Inline (em linha): Duração, ligação , anotações , figura , fórmula
- Grupamento: Divisão, Artigo, Secção, Parte
Dicas e melhores práticas
- Sempre definido.
Titlee a)Languageem 1 de Setembro deTaggedContentpara a conformidade com o PDF/UA. - Construir a árvore de estrutura de cima para baixo: criar elementos, depois adicionar crianças.
- Utilização:
SetAlternativeTextsobre elementos de figuras para a acessibilidade do leitor de ecrã. - Marcar tabelas com:
THead,TBody,TFootpara a semântica correta da tabela. - Validar a conformidade PDF/UA com o
PdfFormatConversionOptions(ver Guia de conversão).
Problemas comuns
| Emissão | Causa da morte | Correção |
|---|---|---|
| Falha na validação PDF/UA | Árvore de estrutura com elementos não disponíveis | Garantir que todo o conteúdo tenha elementos de estrutura correspondentes |
| A ordem de direcção é errada . | H2 aparece antes de H1 | Seguir a hierarquia de cabeçalhos sequencialmente |
| A figura não tem texto alternativo. | SetAlternativeText não chamado. | Fornecer sempre texto alternativo para ilustrações. |
| Tabela não reconhecida pelo leitor de tela | Falta de estrutura THead/TBody | Use a API de estrutura completa da tabela |
FAQ
O que é um PDF com etiquetas?
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 refluxo de conteúdos.
O PDF é etiquetado como o mesmo que o PDF/UA?
PDF/UA é um padrão que requer etiquetagem e regras adicionais de acessibilidade. Os PDFs marcados são um pré-requisito para a conformidade com o PDF / UA .
Posso marcar um PDF existente?
A Comissão TaggedContent A API funciona melhor com documentos criados a partir do zero. Para PDFs existentes, inspecionar a árvore de estrutura através do Document.TaggedContent.
Resumo de referência da API
| Classe / Método | Descrição: |
|---|---|
TaggedContent | Ponto de entrada para operações da estrutura lógica |
TaggedContent.SetTitle | Indicar o título do documento para acessibilidade |
TaggedContent.SetLanguage | Configurar o idioma do documento |
ITaggedContent | Interface com métodos de fábrica para todos os tipos de elementos |
StructureElement | Classe de base para todos os elementos da estrutura |
StructureElement.AppendChild | Adicionar um elemento filho à árvore |
StructureElement.SetText | Definir o conteúdo de texto de um elemento |
TableElement | Elemento de estrutura da tabela acessível |
TableElement.CreateTHead | Criar a seção de cabeçalho da tabela |
TableElement.CreateTBody | Criar a seção do corpo da tabela |
TableTRElement | Elementos de linha da tabela |
TableTRElement.CreateTD | Adicionar uma célula de dados |
TableTRElement.CreateTH | Adicionar uma célula de cabeçalho |
IllustrationElement | Elementos da estrutura de figura/ilustração |
IllustrationElement.SetImage | Anexe uma imagem à ilustração. |