Gerador de Tabelas

Você precisa criar tabelas dinâmicas e visualmente atraentes em seus documentos PDF usando .NET? Aspose.PDF para .NET oferece uma classe poderosa chamada TableGenerator que simplifica o processo. Neste capítulo, vamos passar pelos passos para gerar tabelas em um documento PDF usando Aspose.PDF Table Generator, desde criar um documento de demonstração até gerar tabelas com a classe TableGenerator. Vamos mergulhar e aprender como gerar tabelas passo a passo.

Pré-requisitos

Você precisará do seguinte:

  • Visual Studio 2019 ou posterior
  • Aspose.PDF para .NET 24.3 ou posterior
  • Um arquivo PDF de amostra

Criando um Documento de Demonstração

Antes de começarmos a gerar tabelas, vamos criar um documento de demonstração com páginas vazias onde nossas tabelas serão inseridas. Antes de começarmos a gerar tabelas, vamos criar um documento de demonstração com páginas vazias onde nossas tabelas serão inseridas.

  • Crie um novo documento PDF.
  • Adicione páginas vazias ao documento.
  • Salve o documento no arquivo especificado.
// <summary>
// Cria um documento de demonstração com páginas vazias.
//
// Parâmetros:
// - fileName: O caminho e nome do arquivo de saída.
// </summary>
internal static void CreateDemoDocument(string fileName)
{
    // Crie um novo documento PDF.
    var document = new Aspose.Pdf.Document();

    // Adicione quatro páginas vazias ao documento.
    for (int i = 0; i < 2; i++)
    {
        document.Pages.Add();
    }

    // Salve o documento no arquivo especificado.
    document.Save(fileName);
}

Gerando Tabelas

Uma vez que temos nosso documento de demonstração pronto, podemos começar a gerar tabelas usando a classe TableGenerator. O seguinte trecho demonstra como gerar tabelas com vários tipos de conteúdo e opções de formatação. Veja como gerar tabelas:

  • Crie uma nova instância da classe TableGenerator.
  • Crie uma nova instância da classe TableGenerator.
  • Crie opções de tabela e especifique fontes de dados de arquivos de entrada e saída.
  • Adicione tabelas com linhas e células às opções, especificando conteúdo e formatação.
  • Processe a geração da tabela usando o método Process e obtenha o recipiente de resultado.

Criando Tabelas

Para criar uma tabela usando Aspose.PDF, siga estas etapas:

// Crie uma nova instância da classe TableGenerator.
var generator = new TableGenerator();

// Crie opções de tabela e adicione tabelas de demonstração.
var options = new TableOptions();

// Adicione fontes de dados de arquivos de entrada e saída às opções.
options.AddInput(new FileDataSource(@"C:\Samples\Results\table-generator-demo.pdf"));
options.AddOutput(new FileDataSource(@"C:\Samples\Results\table-generator-demo.pdf"));

// Adicione a primeira tabela às opções.
options
    .InsertPageAfter(1)
    .AddTable()

No código acima, criamos uma instância de TableOptions e especificamos fontes de dados de arquivos de entrada e saída para o documento PDF. No código acima, criamos uma instância de TableOptions e especificamos fontes de dados de arquivo de entrada e saída para o documento PDF.

Adicionando Conteúdo às Tabelas

Uma vez que a tabela é criada, você pode populá-la com linhas e células contendo vários tipos de conteúdo, como texto, HTML, imagens, etc. Veja como adicionar conteúdo a uma tabela:

options
    .AddTable()
        .AddRow()
            .AddCell()
                .AddParagraph(new HtmlFragment("<h1>Cabeçalho 1</h1>")) // Adiciona conteúdo HTML à célula.
            .AddCell()
                .AddParagraph(new HtmlFragment("<h2>Cabeçalho 2</h2>"))
            .AddCell()
                .AddParagraph(new HtmlFragment("<h3>Cabeçalho 3</h3>"));

Neste exemplo, adicionamos uma linha à tabela e a populamos com células contendo fragmentos HTML representando cabeçalhos.

Métodos úteis:

  • InsertPageAfter: Insere uma página após o número de página especificado.
  • InsertPageBefore: Insere uma página antes do número de página especificado.
  • AddTable: Adiciona uma tabela ao documento.
  • AddTable: Adiciona uma tabela ao documento.
  • AddRow: Adiciona uma linha à tabela.
  • AddCell: Adiciona células à linha.
  • AddParagraph: Adiciona conteúdo à célula.

Você pode adicionar os seguintes tipos de conteúdo como parágrafo:

  • HtmlFragment - um conteúdo baseado em marcação HTML
  • TeXFragment - um conteúdo baseado em marcação TeX/LaTeX
  • TextFragment - um conteúdo de texto simples
  • Image - gráficos

Realizar geração de tabela

Após adicionar o conteúdo, podemos começar a criar a tabela.

// Processa a geração da tabela e obtém o contêiner de resultados.
var resultContainer = generator.Process(options);

// Imprime o número de resultados na coleção de resultados.
Console.WriteLine(resultContainer.ResultCollection.Count);

O método Process realiza a geração da tabela. Este método também pode ser envolto em try-catch para lidar com erros.

Abaixo você pode ver o código completo do exemplo:

using Aspose.Pdf;
using Aspose.Pdf.Plugins;
using Aspose.Pdf.Text;

namespace AsposePluginsNet8.Documentation
{
    // <summary>
    // Representa uma classe que demonstra o uso de geração de tabela em Aspose.Pdf.
    // </summary>
    internal static class TableDemo
    {
        // <summary>
        // Executa a demonstração de geração de tabela.
        // </summary>
        internal static void Run()
        {
            // Cria um documento de demonstração e gera tabelas.
            CreateDemoDocument(@"C:\Samples\Results\table-generator-demo.pdf");
            CreateDemoTable();
        }

        // <summary>
        // Cria um documento de demonstração com quatro páginas vazias.
        //
        // Parâmetros:
        // - fileName: O caminho e nome do arquivo de saída.
        // </summary>
        internal static void CreateDemoDocument(string fileName)
        {
            // Cria um novo documento PDF.
            var document = new Aspose.Pdf.Document();

            // Adiciona quatro páginas vazias ao documento.
            for (int i = 0; i < 2; i++)
            {
                document.Pages.Add();
            }

            // Salva o documento no arquivo especificado.
            document.Save(fileName);
        }

        // <summary>
        // Gera tabelas usando a classe TableGenerator.
        // </summary>
        internal static void CreateDemoTable()
        {
            // Cria uma nova instância da classe TableGenerator.
            var generator = new TableGenerator();

            // Cria opções de tabela e adiciona tabelas de demonstração.
            var options = new TableOptions();

            // Adiciona fontes de dados de arquivos de entrada e saída às opções.
            options.AddInput(new FileDataSource(@"C:\Samples\Results\table-generator-demo.pdf"));
            options.AddOutput(new FileDataSource(@"C:\Samples\Results\table-generator-demo.pdf"));

            // Adiciona a primeira tabela às opções.
            options
                .InsertPageAfter(1)
                .AddTable()
                    .AddRow()
                        .AddCell()
                            .AddParagraph(new HtmlFragment("<h1>Cabeçalho 1</h1>"))
                        .AddCell()
                            .AddParagraph(new HtmlFragment("<h2>Cabeçalho 2</h2>"))
                        .AddCell()
                            .AddParagraph(new HtmlFragment("<h3>Cabeçalho 3</h3>"))
                    .AddRow()
                        .AddCell()
                            .AddParagraph(new TeXFragment("{\\small A equação $E=mc^2$, descoberta em 1905 por Albert Einstein.}", true))
                        .AddCell()
                            .AddParagraph(new TextFragment("Célula 2 2"))
                        .AddCell()
                            .AddParagraph(new TextFragment("Célula 2 3"))
                    .AddRow()
                        .AddCell()
                            .AddParagraph(new TextFragment("Célula 3 1a"))
                            .AddParagraph(new TextFragment("Célula 3 1b"))
                        .AddCell()
                            .AddParagraph(new TextFragment("Célula 3 2"))
                        .AddCell()
                            .AddParagraph(new TextFragment("Célula 3 3"));

            // Adiciona a segunda tabela às opções.
            options
                .InsertPageBefore(2)
                .AddTable()
                    .AddRow()
                        .AddCell()
                            .AddParagraph(new TextFragment("Cabeçalho 1 1"))
                        .AddCell()
                            .AddParagraph(new TextFragment("Cabeçalho 1 2"))
                        .AddCell()
                            .AddParagraph(new TextFragment("Cabeçalho 1 3"))
                    .AddRow()
                        .AddCell()
                            .AddParagraph(new Image()
                            {
                                File = @"C:\Samples\logo.png",
                                FixWidth = 75,
                                FixHeight = 75,
                            })
                        .AddCell()
                            .AddParagraph(new Image()
                            {
                                File = @"C:\Samples\sample.svg",
                                FileType = ImageFileType.Svg,
                                FixWidth = 75,
                                FixHeight = 75
                            })
                        .AddCell()
                            .AddParagraph(new Image()
                            {
                                ImageStream = File.OpenRead(@"C:\Samples\Conversion\Demo.dcm"),
                                FileType = ImageFileType.Dicom,
                                FixWidth = 75,
                                FixHeight = 75
                            });

            // Processa a geração da tabela e obtém o contêiner de resultados.
            var resultContainer = generator.Process(options);

            // Imprime o número de resultados na coleção de resultados.
            Console.WriteLine(resultContainer.ResultCollection.Count);
        }
    }
}