Criar arquivos PDF marcados em C# .NET

Um arquivo marcado PDF é um tipo de PDF que usa marcas para definir a estrutura lógica do conteúdo do documento. Ele é usado para aprimorar a experiência de leitura para quem usa tecnologias assistivas e leitores de tela. Em um post anterior, abordamos a criação de arquivos PDF em um aplicativo .NET. Neste artigo, demonstraremos como criar arquivos PDF marcados programaticamente em C# .NET.

API C# .NET para criar PDF marcado - download gratuito

Aspose.PDF for .NET é uma API robusta para geração e manipulação de PDF dentro dos aplicativos .NET. Usando a API, você pode criar, processar e converter facilmente arquivos PDF de layouts simples e complexos. Você pode baixar os binários da API ou instalá-la usando NuGet.

PM> Install-Package Aspose.PDF

Criar um arquivo PDF marcado em C# .NET

Para criar elementos de estrutura em um PDF marcado, o Aspose.PDF para .NET fornece a interface ITaggedContent. Então vamos ver como usar essa interface para criar um arquivo PDF marcado em C#.

O exemplo de código a seguir mostra como criar um PDF marcado em C#.

// Criar documento PDF
Document document = new Document();

// Obtenha conteúdo para trabalhar com PDF marcado
ITaggedContent taggedContent = document.TaggedContent;
var rootElement = taggedContent.RootElement;
            
// Definir título e idioma para o documento
taggedContent.SetTitle("Tagged Pdf Document");
taggedContent.SetLanguage("en-US");

// Adicionar cabeçalho
HeaderElement mainHeader = taggedContent.CreateHeaderElement();
mainHeader.SetText("Main Header");

// Adicionar parágrafo
ParagraphElement paragraphElement = taggedContent.CreateParagraphElement();
paragraphElement.SetText("Lorem ipsum dolor sit amet, consectetur adipiscing elit. " +
"Aenean nec lectus ac sem faucibus imperdiet. Sed ut erat ac magna ullamcorper hendrerit. " +
"Cras pellentesque libero semper, gravida magna sed, luctus leo. Fusce lectus odio, laoreet" +
"nec ullamcorper ut, molestie eu elit. Interdum et malesuada fames ac ante ipsum primis in faucibus." +
"Aliquam lacinia sit amet elit ac consectetur. Donec cursus condimentum ligula, vitae volutpat" +
"sem tristique eget. Nulla in consectetur massa. Vestibulum vitae lobortis ante. Nulla ullamcorper" +
"pellentesque justo rhoncus accumsan. Mauris ornare eu odio non lacinia. Aliquam massa leo, rhoncus" +
"ac iaculis eget, tempus et magna. Sed non consectetur elit. Sed vulputate, quam sed lacinia luctus," +
"ipsum nibh fringilla purus, vitae posuere risus odio id massa. Cras sed venenatis lacus.");

rootElement.AppendChild(mainHeader);
rootElement.AppendChild(paragraphElement);

// Salvar PDF marcado
document.Save("tagged-pdf.pdf");

A seguir está a saída do exemplo de código acima.

Criar um arquivo PDF marcado em C#

C# Criar um PDF marcado com elementos aninhados

No exemplo anterior, criamos um PDF com tags simples que contém um parágrafo. Vamos agora dar uma olhada em como adicionar elementos aninhados em um PDF marcado. A seguir estão as etapas para realizar esta operação.

O exemplo de código a seguir mostra como adicionar elementos aninhados em um PDF marcado em C#.

// Criar documento PDF
Document document = new Document();

// Obtenha conteúdo para trabalhar com PDF marcado
ITaggedContent taggedContent = document.TaggedContent;
var rootElement = taggedContent.RootElement;

// Definir título e idioma para o documento
taggedContent.SetTitle("Tagged Pdf Document");
taggedContent.SetLanguage("en-US");

// Adicionar cabeçalho
HeaderElement mainHeader = taggedContent.CreateHeaderElement();
mainHeader.SetText("Main Header");

// Criar parágrafo
ParagraphElement paragraphWithQuotes = taggedContent.CreateParagraphElement();
paragraphWithQuotes.StructureTextState.Font = FontRepository.FindFont("Calibri");
paragraphWithQuotes.StructureTextState.MarginInfo = new MarginInfo(10, 5, 10, 5);

// Adicionar elemento de intervalo
SpanElement spanElement1 = taggedContent.CreateSpanElement();
spanElement1.SetText("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean nec lectus ac sem faucibus imperdiet. Sed ut erat ac magna ullamcorper hendrerit. Cras pellentesque libero semper, gravida magna sed, luctus leo. Fusce lectus odio, laoreet nec ullamcorper ut, molestie eu elit. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aliquam lacinia sit amet elit ac consectetur. Donec cursus condimentum ligula, vitae volutpat sem tristique eget. Nulla in consectetur massa. Vestibulum vitae lobortis ante. Nulla ullamcorper pellentesque justo rhoncus accumsan. Mauris ornare eu odio non lacinia. Aliquam massa leo, rhoncus ac iaculis eget, tempus et magna. Sed non consectetur elit. ");
QuoteElement quoteElement = taggedContent.CreateQuoteElement();
quoteElement.SetText("Sed vulputate, quam sed lacinia luctus, ipsum nibh fringilla purus, vitae posuere risus odio id massa.");
quoteElement.StructureTextState.FontStyle = FontStyles.Bold | FontStyles.Italic;
SpanElement spanElement2 = taggedContent.CreateSpanElement();
spanElement2.SetText(" Sed non consectetur elit.");

// Anexar ao parágrafo
paragraphWithQuotes.AppendChild(spanElement1);
paragraphWithQuotes.AppendChild(quoteElement);
paragraphWithQuotes.AppendChild(spanElement2);

// Adicionar ao elemento raiz
rootElement.AppendChild(mainHeader);
rootElement.AppendChild(paragraphWithQuotes);

// Salvar PDF marcado
document.Save("tagged-pdf-nested-elements.pdf");

A captura de tela a seguir mostra o PDF marcado com elementos aninhados.

Criar um PDF marcado com elementos aninhados em C#

Estilizando a estrutura de texto em um PDF marcado em C#

Você também pode aplicar estilo ao texto em um PDF marcado, definindo o estilo da fonte, família, tamanho, etc. Para isso, o Aspose.PDF para .NET fornece Font, FontSize, FontStyle e propriedades ForegroundColor da classe StructureTextState. O exemplo de código a seguir mostra como aplicar estilo de texto em um PDF marcado em C#.

// Criar documento PDF
Document document = new Document();

// Obtenha conteúdo para trabalhar com PDF marcado
ITaggedContent taggedContent = document.TaggedContent;
var rootElement = taggedContent.RootElement;

// Definir título e idioma para o documento
taggedContent.SetTitle("Tagged Pdf Document");
taggedContent.SetLanguage("en-US");

// Adicionar cabeçalho
HeaderElement mainHeader = taggedContent.CreateHeaderElement();
mainHeader.SetText("Main Header");

// Criar parágrafo
ParagraphElement paragraphWithQuotes = taggedContent.CreateParagraphElement();
taggedContent.RootElement.AppendChild(paragraphWithQuotes);

// Definir estilo
paragraphWithQuotes.StructureTextState.FontSize = 18F;
paragraphWithQuotes.StructureTextState.ForegroundColor = Color.Red;
paragraphWithQuotes.StructureTextState.FontStyle = FontStyles.Italic;
            
// Adicione texto
paragraphWithQuotes.SetText("Red italic text.");

// Salvar PDF marcado
document.Save("tagged-pdf-text-styling.pdf");

C# ilustrando elementos de estrutura em um PDF marcado

Para ilustrar os elementos da estrutura, o Aspose.PDF para .NET fornece a classe IllustrationElement. O exemplo de código a seguir mostra como usar essa classe para ilustrar os elementos de estrutura em um PDF marcado.

// Criar documento PDF
Document document = new Document();

// Obtenha conteúdo para trabalhar com PDF marcado
ITaggedContent taggedContent = document.TaggedContent;
var rootElement = taggedContent.RootElement;

// Definir título e idioma para o documento
taggedContent.SetTitle("Tagged Pdf Document");
taggedContent.SetLanguage("en-US");

IllustrationElement figure1 = taggedContent.CreateFigureElement();
taggedContent.RootElement.AppendChild(figure1);
figure1.AlternativeText = "Figure One";
figure1.Title = "Image 1";
figure1.SetTag("Fig1");
figure1.SetImage("aspose_pdf.png");

// Salvar PDF marcado
document.Save("tagged-pdf-illustrating-structure.pdf");

API C# para criar PDF marcado - Obtenha uma licença gratuita

Você pode obter uma licença temporária gratuita para usar o Aspose.PDF para .NET sem limitações de avaliação.

Conclusão

Neste artigo, você aprendeu como criar arquivos PDF marcados em C#. Além disso, você viu como criar elementos aninhados, aplicar estilo ao texto e ilustrar elementos de estrutura em um PDF marcado programaticamente. Além disso, você pode explorar mais sobre a API .NET PDF usando a documentação. Caso você tenha alguma dúvida ou pergunta, você pode entrar em contato conosco através do nosso fórum.

Veja também