Ir para o conteúdo do rodapé
USANDO O IRONPDF

Gerando PDFs em C# usando IronPDF

O IronPDF permite que desenvolvedores C# convertam HTML em PDF em apenas 5 etapas usando um aplicativo Windows Forms simples, exigindo apenas a instalação do pacote NuGet e algumas linhas de código para renderizar o HTML como documentos PDF profissionais.

Os desenvolvedores de C# podem usar o IronPDF para gerar PDFs a partir de HTML. Este artigo demonstrará esse processo com um aplicativo Windows Forms em C# criado usando o .NET Framework.

Siga estes passos para criar um projeto no Visual Studio 2019.

Como faço para criar um projeto do Visual Studio para geração de PDF?

Primeiro, abra o Visual Studio 2019 .

Janela inicial do Visual Studio 2019 mostrando opções para clonar um repositório, abrir um projeto ou solução, abrir uma pasta local ou criar um novo projeto

Clique em 'Criar um novo projeto'.

Agora, selecione 'Aplicativo do Windows Forms' no modelo e clique em 'Avançar'. A seguinte janela será exibida:

Diálogo 'Criar um novo projeto' do Visual Studio mostrando seleção de modelo de aplicativo Windows Forms for .NET Core no Windows, Linux e macOS

Insira o nome do projeto 'Criar PDF usando o IronPDF'.

Janela de configuração de novo projeto do Visual Studio mostrando o nome do projeto 'Criar PDF usando IronPDF' com Aplicativo Windows Forms (.NET Framework) selecionado e versão do framework 4.7.2

Clique no botão 'Criar'. O projeto será criado conforme mostrado abaixo.

IDE do Visual Studio mostrando um Formulário Windows em branco na visão de Design com o Solution Explorer exibindo um novo projeto chamado 'Criar PDF usando IronPDF'

Por que devo usar o Windows Forms neste tutorial?

O Windows Forms oferece um ambiente visual simples para iniciantes que estão aprendendo a gerar PDFs em C# . Oferece um editor do tipo "arrastar e soltar" que facilita a criação de interfaces de usuário sem a necessidade de conhecimento aprofundado de HTML ou desenvolvimento web. O modelo de programação orientado a eventos do Windows Forms se alinha bem com a forma como os desenvolvedores iniciantes pensam sobre o fluxo de aplicativos, tornando-o ideal para demonstrar os principais recursos de conversão de HTML para PDF do IronPDF .

Para aplicações de produção, você pode considerar o ASP.NET Core para geração de PDFs baseada na web ou aplicações de console para processamento em lote . No entanto, o Windows Forms continua sendo uma excelente opção para ferramentas internas, utilitários de desktop e ambientes de aprendizagem onde é necessário um feedback visual rápido durante o desenvolvimento.

Qual versão do Visual Studio funciona melhor?

O Visual Studio 2019 ou posterior oferece a melhor experiência para o desenvolvimento em IronPDF . Essas versões incluem gerenciamento de pacotes NuGet melhorado, melhor suporte IntelliSense para recursos modernos do C# e capacidades de depuração aprimoradas que ajudam ao solucionar problemas de geração de PDF.

Embora o Visual Studio 2022 ofereça os recursos mais recentes e melhorias de desempenho, o Visual Studio 2019 continua sendo amplamente utilizado e totalmente suportado. Ambas as versões funcionam perfeitamente com os pacotes NuGet do IronPDF . Para desenvolvedores que usam o Visual Studio Code, ainda é possível trabalhar com o IronPDF, embora seja necessário usar a interface de linha de comando para o gerenciamento de pacotes e, consequentemente, alguns recursos de design visual mostrados neste tutorial não estarão disponíveis.

Posso usar o .NET Core em vez do .NET Framework?

Absolutamente! O IronPDF oferece suporte completo ao .NET Core, .NET 5, .NET 6 e .NET 7+ . Na verdade, usar o .NET Core ou versões mais recentes oferece diversas vantagens, incluindo compatibilidade entre plataformas, melhor desempenho e acesso aos recursos mais recentes da linguagem C#.

Para usar o .NET Core, basta selecionar a estrutura de destino apropriada ao criar seu projeto. Os exemplos de código neste tutorial funcionam da mesma forma em todas as estruturas suportadas. Para maior flexibilidade de implantação, os aplicativos .NET Core podem ser executados em Linux e macOS, além do Windows, tornando-os ideais para implantações em nuvem e ambientes conteinerizados.

Como instalo o IronPDF usando o gerenciador de pacotes NuGet ?

Primeiro, clique no botão 'Ferramentas' na barra de menu.

  • Um menu será aberto. Agora clique na opção Gerenciador de Pacotes NuGet .
  • Outro submenu será aberto. Agora clique na opção chamada Console do Gerenciador de Pacotes.

Visual Studio mostrando o menu Ferramentas expandido com submenu do Gerenciador de Pacotes NuGet, destacando a opção Console do Gerenciador de Pacotes

Uma nova tela será exibida abaixo da linha de comando. Nela, digite o comando para instalar o pacote IronPDF .

Install-Package IronPdf

IDE do Visual Studio 2019 mostrando Console do Gerenciador de Pacotes com comando de instalação do IronPDF pronto para execução

Pressione Enter após digitar o comando. Certifique-se de que seu computador/laptop esteja conectado à internet. O pacote IronPDF será adicionado automaticamente ao seu projeto existente.

IDE do Visual Studio 2019 mostrando documentação da biblioteca IronPDF com exemplo de código C# para conversão de HTML para PDF, junto com o Console do Gerenciador de Pacotes exibindo a instalação do IronPDF com êxito

A tela acima mostra o pacote adicionado com sucesso ao seu projeto.

Quais são as formas alternativas de instalar o IronPDF?

Além do Gerenciador de Pacotes, você tem várias opções para instalar o IronPDF :

  1. Interface do Gerenciador de Pacotes NuGet : Clique com o botão direito do mouse no seu projeto, selecione "Gerenciar Pacotes NuGet ", procure por "IronPDF" e clique em Instalar. Ótimo para iniciantes que preferem interfaces gráficas.

  2. PackageReference no .csproj: Para projetos modernos .NET, você pode adicionar IronPDF diretamente ao seu arquivo de projeto:

    <PackageReference Include="IronPdf" Version="*" />
    <PackageReference Include="IronPdf" Version="*" />
    XML
  3. CLI do .NET : Para desenvolvedores que preferem ferramentas de linha de comando ou usam o Visual Studio Code :

    dotnet add package IronPdf
    dotnet add package IronPdf
    SHELL
  4. Download manual : Você pode baixar a DLL diretamente do site do IronPDF e adicioná-la como referência, embora essa abordagem dificulte as atualizações.

Por que preciso de uma conexão com a internet durante a instalação?

O NuGet precisa de uma conexão com a internet para baixar o IronPDF e suas dependências do repositório NuGet. O pacote inclui a biblioteca principal do IronPDF e os binários do mecanismo de renderização do Chrome necessários para a conversão de HTML para PDF.

Para instalações offline, você pode:

Note que o mecanismo de renderização do IronPDF requer componentes de tempo de execução adicionais que podem ser baixados no primeiro uso, portanto, a geração inicial do PDF também se beneficia da conectividade com a internet.

Como posso verificar se a instalação foi bem-sucedida?

Após a instalação, verifique se o IronPDF está funcionando corretamente, consultando estes indicadores:

  1. Nó de Referências : No Explorador de Soluções, expanda o nó de Referências. Você deverá ver "IronPDF" listado entre as referências do seu projeto.

  2. Suporte IntelliSense: Digite using IronPdf; no topo de um arquivo C#. IntelliSense deve reconhecer o namespace sem erros.

  3. Código de teste simples : Adicione este teste básico para verificar a funcionalidade:
    
    using IronPdf;
    
    using IronPdf;
    Imports IronPdf
    $vbLabelText   $csharpLabel

// Quick verification test var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("

Test

"); // If no exceptions occur, IronPDF is installed correctly


4. **Gerenciador de Pacotes**: Execute `Get-Package IronPdf` no Console do Gerenciador de Pacotes para ver informações de versão.

Se você encontrar problemas, consulte o [guia de solução de problemas](/troubleshooting/quick-ironpdf-troubleshooting/) ou verifique se o seu [sistema atende aos requisitos](/get-started/windows/) .

## Como faço para projetar a interface do usuário para geração de PDFs?

Agora, adicione um rótulo e defina o texto como "Criar um PDF a partir de HTML usando o IronPDF".

![IDE do Visual Studio mostrando um aplicativo Windows Forms com um designer de formulário exibindo um rótulo que lê 'Criar PDF de HTML usando Iron PDF'](/static-assets/pdf/blog/5-steps-to-generate-a-pdf-file-in-c-sharp/5-steps-to-generate-a-pdf-file-in-c-sharp-8.webp)

Em seguida, adicione uma caixa de texto formatado e um botão da caixa de ferramentas. Defina o texto do botão como 'Converter'.

![Interface de aplicação Windows Form mostrando uma área de entrada de texto e botão Converter para criar PDF a partir de HTML usando IronPDF](/static-assets/pdf/blog/5-steps-to-generate-a-pdf-file-in-c-sharp/5-steps-to-generate-a-pdf-file-in-c-sharp-9.webp)

### Por que Usar um `RichTextBox` em Vez de um `TextBox` Normal?

Um `RichTextBox` oferece várias vantagens para [entrada HTML em cenários de geração de PDF](/how-to/html-string-to-pdf/):

1. **Suporte a Multilinhas**: HTML normalmente se estende por várias linhas, e `RichTextBox` lida com isso naturalmente enquanto `TextBox` requer a configuração Multiline = true.

2. **Preservação de Formatação**: Embora estejamos inserindo HTML simples, `RichTextBox` preserva a formatação como recuos e quebras de linha, tornando o HTML mais legível durante o desenvolvimento.

3. **Maior Capacidade**: `RichTextBox` pode lidar com maiores quantidades de texto, útil ao trabalhar com documentos HTML completos em vez de trechos.

4. **Potencial de Realce de Sintaxe**: Embora não implementado neste exemplo básico, `RichTextBox` pode ser estendido para fornecer [realce de sintaxe para HTML](/tutorials/pixel-perfect-html-to-pdf/), melhorando a experiência do desenvolvedor.

Para aplicações de produção, considere usar um editor HTML dedicado ou integrar-se a editores externos para uma melhor experiência do usuário.

### Que outros controles poderiam aprimorar a interface do usuário?

Para criar um aplicativo de geração de PDF mais robusto, considere adicionar estes controles:

1. **Controle `WebBrowser`**: Exibe uma pré-visualização do HTML antes da conversão, ajudando os usuários a ver como ficará o PDF. Isso imita o [motor de renderização Chrome do IronPDF](/how-to/pixel-perfect-html-to-pdf/).

2. **`ProgressBar`**: Mostra o progresso da conversão para documentos grandes ou [operações em lote](/how-to/async/).

3. **`ComboBox` para Modelos**: Fornece modelos HTML predefinidos para tipos de documentos comuns como faturas ou relatórios.

4. **`PropertyGrid`**: Permite que os usuários modifiquem [configurações de renderização de PDF](/how-to/custom-paper-size/) como tamanho da página, margens e orientação.

5. **`TabControl`**: Separa entrada HTML, pré-visualização e [configurações de PDF](/how-to/rendering-options/) em abas organizadas.

Exemplo de como adicionar uma barra de status para feedback:
```csharp
// Add to your form
StatusStrip statusStrip = new StatusStrip();
ToolStripStatusLabel statusLabel = new ToolStripStatusLabel("Ready");
statusStrip.Items.Add(statusLabel);
this.Controls.Add(statusStrip);

Como devo nomear meus controles para seguir as melhores práticas?

Seguir convenções de nomenclatura consistentes melhora a legibilidade e a manutenção do código. Aqui estão as práticas recomendadas para o seu formulário de geração de PDF:

  1. Utilize prefixos descritivos :

    • txtHtml para a entrada HTML @@--CODE-36261@@
    • btnConvert para o botão Converter
    • lblTitle para o rótulo do título
  2. Seja Consistente: Escolha entre camelCase ou PascalCase e mantenha isso ao longo do seu projeto.

  3. Evite Nomes Padrão: Substitua richTextBox1 por nomes significativos como rtbHtmlInput.

  4. Agrupar controles relacionados : Para formulários complexos, use prefixos que agrupem funcionalidades:

    • pdfPageSize, pdfOrientation para configurações específicas de PDF
    • htmlTemplate, htmlPreview para controles relacionados a HTML
  5. Considere a Acessibilidade: Defina a propriedade Name para leitores de tela e AccessibleName para melhor usabilidade.

Uma boa nomenclatura torna seu código autoexplicativo e facilita a implementação de funcionalidades como a extração de dados de formulários .

Como faço para escrever o código para converter HTML em PDF?

Clique duas vezes no botão "Converter". Uma janela de código com um evento de clique no botão "Converter" será aberta.

IDE do Visual Studio mostrando código C# Windows Forms com uma classe Form1 parcial contendo um manipulador de eventos btnConvert_Click vazio para criar PDFs usando IronPDF

Adicione código para importar a biblioteca IronPDF no topo do arquivo .cs.

Primeiro, adicione o seguinte código para usar os métodos da biblioteca IronPDF .

using IronPdf;
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

Abaixo está o código inicial para o evento btnConvert_Click, que está atualmente vazio:

private void btnConvert_Click(object sender, EventArgs e)
{

}
private void btnConvert_Click(object sender, EventArgs e)
{

}
Private Sub btnConvert_Click(ByVal sender As Object, ByVal e As EventArgs)

End Sub
$vbLabelText   $csharpLabel

Agora escreva o seguinte código no evento de clique do botão:

private void btnConvert_Click(object sender, EventArgs e)
{
    // Declare an HtmlToPdf object
    var HtmlLine = new HtmlToPdf();

    // Get HTML text from the user
    string strHtml = txtHtml.Text;

    // Create SaveFileDialog to choose the save path for the PDF file
    SaveFileDialog saveFileDialog = new SaveFileDialog
    {
        InitialDirectory = @"D:\",
        Title = "Save PDF",
        CheckPathExists = true,
        DefaultExt = "pdf",
        Filter = "pdf files (*.pdf)|*.pdf",
        FilterIndex = 2,
        RestoreDirectory = true
    };

    // If the user presses Save
    if (saveFileDialog.ShowDialog() == DialogResult.OK)
    {
        // Get the file path from the user
        string filePath = saveFileDialog.FileName;

        // Convert HTML to PDF and save at the specified path
        using var PDF = HtmlLine.RenderHtmlAsPdf(strHtml);
        PDF.SaveAs(filePath);

        // Clear the TextBox and show a message confirming the successful creation
        txtHtml.Text = "";
        MessageBox.Show("File created successfully.");
    }
}
private void btnConvert_Click(object sender, EventArgs e)
{
    // Declare an HtmlToPdf object
    var HtmlLine = new HtmlToPdf();

    // Get HTML text from the user
    string strHtml = txtHtml.Text;

    // Create SaveFileDialog to choose the save path for the PDF file
    SaveFileDialog saveFileDialog = new SaveFileDialog
    {
        InitialDirectory = @"D:\",
        Title = "Save PDF",
        CheckPathExists = true,
        DefaultExt = "pdf",
        Filter = "pdf files (*.pdf)|*.pdf",
        FilterIndex = 2,
        RestoreDirectory = true
    };

    // If the user presses Save
    if (saveFileDialog.ShowDialog() == DialogResult.OK)
    {
        // Get the file path from the user
        string filePath = saveFileDialog.FileName;

        // Convert HTML to PDF and save at the specified path
        using var PDF = HtmlLine.RenderHtmlAsPdf(strHtml);
        PDF.SaveAs(filePath);

        // Clear the TextBox and show a message confirming the successful creation
        txtHtml.Text = "";
        MessageBox.Show("File created successfully.");
    }
}
Private Sub btnConvert_Click(ByVal sender As Object, ByVal e As EventArgs)
	' Declare an HtmlToPdf object
	Dim HtmlLine = New HtmlToPdf()

	' Get HTML text from the user
	Dim strHtml As String = txtHtml.Text

	' Create SaveFileDialog to choose the save path for the PDF file
	Dim saveFileDialog As New SaveFileDialog With {
		.InitialDirectory = "D:\",
		.Title = "Save PDF",
		.CheckPathExists = True,
		.DefaultExt = "pdf",
		.Filter = "pdf files (*.pdf)|*.pdf",
		.FilterIndex = 2,
		.RestoreDirectory = True
	}

	' If the user presses Save
	If saveFileDialog.ShowDialog() = DialogResult.OK Then
		' Get the file path from the user
		Dim filePath As String = saveFileDialog.FileName

		' Convert HTML to PDF and save at the specified path
		Dim PDF = HtmlLine.RenderHtmlAsPdf(strHtml)
		PDF.SaveAs(filePath)

		' Clear the TextBox and show a message confirming the successful creation
		txtHtml.Text = ""
		MessageBox.Show("File created successfully.")
	End If
End Sub
$vbLabelText   $csharpLabel

Explicação:

  • Um objeto HtmlToPdf é criado para utilizar as capacidades de conversão do IronPDF.
  • O conteúdo HTML é obtido de uma caixa de texto.
  • Um SaveFileDialog é usado para solicitar ao usuário que especifique onde o PDF resultante deve ser salvo.
  • Se o usuário escolher um local para o arquivo e clicar em Salvar, o caminho será obtido.
  • A entrada HTML é então renderizada para um PDF usando RenderHtmlAsPdf e salva no caminho escolhido. Após salvar, a caixa de texto é limpa e uma caixa de mensagem é exibida para confirmar a criação do PDF.

Que tratamento de erros devo adicionar a este código?

Um tratamento robusto de erros é crucial para aplicações de geração de PDFs em produção . Aqui está uma versão aprimorada com tratamento de erros abrangente:

private void btnConvert_Click(object sender, EventArgs e)
{
    try
    {
        // Validate input
        if (string.IsNullOrWhiteSpace(txtHtml.Text))
        {
            MessageBox.Show("Please enter HTML content.", "Validation Error", 
                MessageBoxButtons.OK, MessageBoxIcon.Warning);
            return;
        }

        var renderer = new ChromePdfRenderer();
        string strHtml = txtHtml.Text;

        SaveFileDialog saveFileDialog = new SaveFileDialog
        {
            InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
            Title = "Save PDF",
            CheckPathExists = true,
            DefaultExt = "pdf",
            Filter = "pdf files (*.pdf)|*.pdf",
            FilterIndex = 1,
            RestoreDirectory = true
        };

        if (saveFileDialog.ShowDialog() == DialogResult.OK)
        {
            try
            {
                // Show progress cursor
                Cursor.Current = Cursors.WaitCursor;

                using var pdf = renderer.RenderHtmlAsPdf(strHtml);
                pdf.SaveAs(saveFileDialog.FileName);

                txtHtml.Text = "";
                MessageBox.Show("PDF created successfully!", "Success", 
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (IronPdf.Exceptions.IronPdfProductException ex)
            {
                // Handle licensing issues
                MessageBox.Show($"Licensing error: {ex.Message}", "License Error", 
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show($"An error occurred: {ex.Message}", "Error", 
            MessageBoxButtons.OK, MessageBoxIcon.Error);
        // Log the full exception for debugging
        System.Diagnostics.Debug.WriteLine(ex.ToString());
    }
}
private void btnConvert_Click(object sender, EventArgs e)
{
    try
    {
        // Validate input
        if (string.IsNullOrWhiteSpace(txtHtml.Text))
        {
            MessageBox.Show("Please enter HTML content.", "Validation Error", 
                MessageBoxButtons.OK, MessageBoxIcon.Warning);
            return;
        }

        var renderer = new ChromePdfRenderer();
        string strHtml = txtHtml.Text;

        SaveFileDialog saveFileDialog = new SaveFileDialog
        {
            InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
            Title = "Save PDF",
            CheckPathExists = true,
            DefaultExt = "pdf",
            Filter = "pdf files (*.pdf)|*.pdf",
            FilterIndex = 1,
            RestoreDirectory = true
        };

        if (saveFileDialog.ShowDialog() == DialogResult.OK)
        {
            try
            {
                // Show progress cursor
                Cursor.Current = Cursors.WaitCursor;

                using var pdf = renderer.RenderHtmlAsPdf(strHtml);
                pdf.SaveAs(saveFileDialog.FileName);

                txtHtml.Text = "";
                MessageBox.Show("PDF created successfully!", "Success", 
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (IronPdf.Exceptions.IronPdfProductException ex)
            {
                // Handle licensing issues
                MessageBox.Show($"Licensing error: {ex.Message}", "License Error", 
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show($"An error occurred: {ex.Message}", "Error", 
            MessageBoxButtons.OK, MessageBoxIcon.Error);
        // Log the full exception for debugging
        System.Diagnostics.Debug.WriteLine(ex.ToString());
    }
}
Private Sub btnConvert_Click(sender As Object, e As EventArgs) Handles btnConvert.Click
    Try
        ' Validate input
        If String.IsNullOrWhiteSpace(txtHtml.Text) Then
            MessageBox.Show("Please enter HTML content.", "Validation Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Return
        End If

        Dim renderer As New ChromePdfRenderer()
        Dim strHtml As String = txtHtml.Text

        Dim saveFileDialog As New SaveFileDialog With {
            .InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
            .Title = "Save PDF",
            .CheckPathExists = True,
            .DefaultExt = "pdf",
            .Filter = "pdf files (*.pdf)|*.pdf",
            .FilterIndex = 1,
            .RestoreDirectory = True
        }

        If saveFileDialog.ShowDialog() = DialogResult.OK Then
            Try
                ' Show progress cursor
                Cursor.Current = Cursors.WaitCursor

                Using pdf = renderer.RenderHtmlAsPdf(strHtml)
                    pdf.SaveAs(saveFileDialog.FileName)
                End Using

                txtHtml.Text = ""
                MessageBox.Show("PDF created successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Catch ex As IronPdf.Exceptions.IronPdfProductException
                ' Handle licensing issues
                MessageBox.Show($"Licensing error: {ex.Message}", "License Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Finally
                Cursor.Current = Cursors.Default
            End Try
        End If
    Catch ex As Exception
        MessageBox.Show($"An error occurred: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        ' Log the full exception for debugging
        System.Diagnostics.Debug.WriteLine(ex.ToString())
    End Try
End Sub
$vbLabelText   $csharpLabel

Principais melhorias no tratamento de erros:

  • Validação de entrada antes do processamento
  • Tratamento específico para exceções de licenciamento do IronPDF
  • Indicação de progresso com alterações do cursor
  • Registro adequado de exceções para depuração
  • Mensagens de erro fáceis de usar

Como posso personalizar as configurações de PDF, como o tamanho da página?

O IronPDF oferece ampla personalização através da classe ChromePdfRenderOptions . Veja como implementar personalizações comuns:

private void ConvertWithCustomSettings()
{
    var renderer = new ChromePdfRenderer();

    // Configure rendering options
    renderer.RenderingOptions = new ChromePdfRenderOptions
    {
        // Page setup
        PaperSize = PdfPaperSize.A4,
        PaperOrientation = PdfPaperOrientation.Portrait,
        MarginTop = 25,    // millimeters
        MarginBottom = 25,
        MarginLeft = 20,
        MarginRight = 20,

        // Rendering behavior
        EnableJavaScript = true,
        RenderDelay = 500, // milliseconds
        CreatePdfFormsFromHtml = true,

        // Headers and footers
        TextHeader = new TextHeaderFooter
        {
            CenterText = "My Document",
            FontSize = 12,
            DrawDividerLine = true
        },
        TextFooter = new TextHeaderFooter
        {
            RightText = "Page {page} of {total-pages}",
            FontSize = 10
        }
    };

    // Apply custom CSS for print
    renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;

    // Generate PDF with custom settings
    var pdf = renderer.RenderHtmlAsPdf(txtHtml.Text);
    pdf.SaveAs("custom-output.pdf");
}
private void ConvertWithCustomSettings()
{
    var renderer = new ChromePdfRenderer();

    // Configure rendering options
    renderer.RenderingOptions = new ChromePdfRenderOptions
    {
        // Page setup
        PaperSize = PdfPaperSize.A4,
        PaperOrientation = PdfPaperOrientation.Portrait,
        MarginTop = 25,    // millimeters
        MarginBottom = 25,
        MarginLeft = 20,
        MarginRight = 20,

        // Rendering behavior
        EnableJavaScript = true,
        RenderDelay = 500, // milliseconds
        CreatePdfFormsFromHtml = true,

        // Headers and footers
        TextHeader = new TextHeaderFooter
        {
            CenterText = "My Document",
            FontSize = 12,
            DrawDividerLine = true
        },
        TextFooter = new TextHeaderFooter
        {
            RightText = "Page {page} of {total-pages}",
            FontSize = 10
        }
    };

    // Apply custom CSS for print
    renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;

    // Generate PDF with custom settings
    var pdf = renderer.RenderHtmlAsPdf(txtHtml.Text);
    pdf.SaveAs("custom-output.pdf");
}
Private Sub ConvertWithCustomSettings()
    Dim renderer = New ChromePdfRenderer()

    ' Configure rendering options
    renderer.RenderingOptions = New ChromePdfRenderOptions With {
        ' Page setup
        .PaperSize = PdfPaperSize.A4,
        .PaperOrientation = PdfPaperOrientation.Portrait,
        .MarginTop = 25,    ' millimeters
        .MarginBottom = 25,
        .MarginLeft = 20,
        .MarginRight = 20,

        ' Rendering behavior
        .EnableJavaScript = True,
        .RenderDelay = 500, ' milliseconds
        .CreatePdfFormsFromHtml = True,

        ' Headers and footers
        .TextHeader = New TextHeaderFooter With {
            .CenterText = "My Document",
            .FontSize = 12,
            .DrawDividerLine = True
        },
        .TextFooter = New TextHeaderFooter With {
            .RightText = "Page {page} of {total-pages}",
            .FontSize = 10
        }
    }

    ' Apply custom CSS for print
    renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print

    ' Generate PDF with custom settings
    Dim pdf = renderer.RenderHtmlAsPdf(txtHtml.Text)
    pdf.SaveAs("custom-output.pdf")
End Sub
$vbLabelText   $csharpLabel

Para opções de personalização mais avançadas, explore tamanhos de papel personalizados , margens personalizadas e configurações de viewport .

Por que usar a instrução using para gerar PDFs?

A declaração using é essencial para gestão adequada de recursos na geração de PDFs:

  1. Descarte automático : documentos PDF podem consumir uma quantidade significativa de memória, especialmente com imagens ou conteúdo extenso. A declaração using garante que o objeto PDF seja devidamente descartado após o uso.

  2. Liberação do identificador de arquivo : Sem o descarte adequado, os identificadores de arquivo podem permanecer bloqueados, impedindo operações subsequentes no arquivo PDF.

  3. Gerenciamento de memória : O mecanismo de renderização do IronPDF usa recursos nativos que precisam ser liberados para evitar vazamentos de memória em aplicativos de longa duração.

Aqui está a comparação de padrões:

// Recommended approach with using
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
    pdf.SaveAs("output.pdf");
} // Resources automatically released here

// Alternative with try-finally (more verbose)
PdfDocument pdf = null;
try
{
    pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("output.pdf");
}
finally
{
    pdf?.Dispose();
}
// Recommended approach with using
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
    pdf.SaveAs("output.pdf");
} // Resources automatically released here

// Alternative with try-finally (more verbose)
PdfDocument pdf = null;
try
{
    pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("output.pdf");
}
finally
{
    pdf?.Dispose();
}
' Recommended approach with Using
Using pdf = renderer.RenderHtmlAsPdf(html)
    pdf.SaveAs("output.pdf")
End Using ' Resources automatically released here

' Alternative with Try-Finally (more verbose)
Dim pdf As PdfDocument = Nothing
Try
    pdf = renderer.RenderHtmlAsPdf(html)
    pdf.SaveAs("output.pdf")
Finally
    If pdf IsNot Nothing Then
        pdf.Dispose()
    End If
End Try
$vbLabelText   $csharpLabel

Para operações assíncronas, use await using no C# 8.0+:

await using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
await using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
Await Using pdf = Await renderer.RenderHtmlAsPdfAsync(html)
$vbLabelText   $csharpLabel

Quais são as tags HTML mais comuns que funcionam melhor?

O mecanismo de renderização do IronPDF para Chrome suporta todas as tags HTML5 modernas, mas algumas funcionam particularmente bem para a geração de PDFs:

Estrutura do documento:

<html>
<head>
    <meta charset="UTF-8">
    <style>
        @media print { /* PDF-specific styles */ }
        body { font-family: Arial, sans-serif; }
        .page-break { page-break-after: always; }
    </style>
</head>
<body>
    <h1>Document Title</h1>
    <div class="page-break"></div>
    <h2>New Page Content</h2>
</body>
</html>
<html>
<head>
    <meta charset="UTF-8">
    <style>
        @media print { /* PDF-specific styles */ }
        body { font-family: Arial, sans-serif; }
        .page-break { page-break-after: always; }
    </style>
</head>
<body>
    <h1>Document Title</h1>
    <div class="page-break"></div>
    <h2>New Page Content</h2>
</body>
</html>
HTML

Etiquetas com melhor desempenho para PDFs:

  • <h1> para <h6>: Cria uma hierarquia clara de documento
  • <table>: Excelente para dados estruturados e faturas
  • <img>: Suporta imagens incorporadas e dados base64
  • <div> com CSS: Controle preciso de layout
  • <p> e <span>: Formatação padrão de texto
  • <ul> e <ol>: Formatação limpa de listas

Considerações especiais:

Como faço para testar o aplicativo de geração de PDF?

Ao executar o projeto, você verá a seguinte tela:

Aplicação de formulário Windows com um campo de entrada de texto contendo código HTML para um arquivo PDF simples e um botão Converter

Digite o código HTML no RichTextBox, por exemplo:

<h1>A Simple PDF File</h1><br><h6>Heading 6</h6>
<h1>A Simple PDF File</h1><br><h6>Heading 6</h6>
HTML

Clique em 'Converter'. Uma caixa de diálogo para salvar o arquivo será exibida.

Caixa de diálogo Salvar PDF no Windows mostrando o navegador de arquivos com a unidade Work selecionada e HtmlToPDF como nome de arquivo

Ao clicar no botão Salvar, o arquivo será salvo no caminho especificado, com o nome e a localização definidos.

Quais elementos HTML devo testar primeiro?

Comece com estes exemplos de HTML progressivamente mais complexos para entender os recursos de renderização do IronPDF :

Formatação básica de texto:

<!DOCTYPE html>
<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; margin: 40px; }
        .highlight { background-color: yellow; }
        .important { color: red; font-weight: bold; }
    </style>
</head>
<body>
    <h1>Test Document</h1>
    <p>This is <strong>bold</strong> and <em>italic</em> text.</p>
    <p class="highlight">Highlighted text example.</p>
    <p class="important">Important notice!</p>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; margin: 40px; }
        .highlight { background-color: yellow; }
        .important { color: red; font-weight: bold; }
    </style>
</head>
<body>
    <h1>Test Document</h1>
    <p>This is <strong>bold</strong> and <em>italic</em> text.</p>
    <p class="highlight">Highlighted text example.</p>
    <p class="important">Important notice!</p>
</body>
</html>
HTML

Mesa com decoração:

<table style="border-collapse: collapse; width: 100%;">
    <tr style="background-color: #f2f2f2;">
        <th style="border: 1px solid #ddd; padding: 8px;">Product</th>
        <th style="border: 1px solid #ddd; padding: 8px;">Price</th>
    </tr>
    <tr>
        <td style="border: 1px solid #ddd; padding: 8px;">IronPDF</td>
        <td style="border: 1px solid #ddd; padding: 8px;">$749</td>
    </tr>
</table>
<table style="border-collapse: collapse; width: 100%;">
    <tr style="background-color: #f2f2f2;">
        <th style="border: 1px solid #ddd; padding: 8px;">Product</th>
        <th style="border: 1px solid #ddd; padding: 8px;">Price</th>
    </tr>
    <tr>
        <td style="border: 1px solid #ddd; padding: 8px;">IronPDF</td>
        <td style="border: 1px solid #ddd; padding: 8px;">$749</td>
    </tr>
</table>
HTML

Funcionalidades avançadas:


<img src="___PROTECTED_URL_118___" width="200" alt="Company Logo">

<div style="page-break-after: always;"></div>

<ul>
    <li>First item</li>
    <li>Second item</li>
</ul>

<img src="___PROTECTED_URL_118___" width="200" alt="Company Logo">

<div style="page-break-after: always;"></div>

<ul>
    <li>First item</li>
    <li>Second item</li>
</ul>
HTML

Teste esses elementos para garantir que sua conversão de HTML para PDF funcione conforme o esperado.

Como posso depurar se o PDF não for gerado?

Quando a geração de PDF falhar, siga esta abordagem sistemática de depuração:

  1. Ativar registro de logs:

    IronPdf.Logging.Logger.EnableDebugging = true;
    IronPdf.Logging.Logger.LogFilePath = "IronPdfLog.txt";
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;
    IronPdf.Logging.Logger.EnableDebugging = true;
    IronPdf.Logging.Logger.LogFilePath = "IronPdfLog.txt";
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;
    IronPdf.Logging.Logger.EnableDebugging = True
    IronPdf.Logging.Logger.LogFilePath = "IronPdfLog.txt"
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All
    $vbLabelText   $csharpLabel
  2. Verificar a validade do HTML:

    // Validate HTML before conversion
    private bool IsValidHtml(string html)
    {
    try
    {
        var doc = new HtmlAgilityPack.HtmlDocument();
        doc.LoadHtml(html);
        return doc.ParseErrors.Count() == 0;
    }
    catch
    {
        return false;
    }
    }
    // Validate HTML before conversion
    private bool IsValidHtml(string html)
    {
    try
    {
        var doc = new HtmlAgilityPack.HtmlDocument();
        doc.LoadHtml(html);
        return doc.ParseErrors.Count() == 0;
    }
    catch
    {
        return false;
    }
    }
    ' Validate HTML before conversion
    Private Function IsValidHtml(html As String) As Boolean
        Try
            Dim doc As New HtmlAgilityPack.HtmlDocument()
            doc.LoadHtml(html)
            Return doc.ParseErrors.Count() = 0
        Catch
            Return False
        End Try
    End Function
    $vbLabelText   $csharpLabel
  3. Use Chrome DevTools: Salve seu HTML em um arquivo e abra-o no Chrome. Pressione F12 para verificar erros de JavaScript .

  4. Problemas comuns e soluções:

  5. Exemplo mínimo de teste:
    // Start with the simplest possible HTML
    var testHtml = "<h1>Test</h1>";
    var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(testHtml);
    pdf.SaveAs("test.pdf");
    // Start with the simplest possible HTML
    var testHtml = "<h1>Test</h1>";
    var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(testHtml);
    pdf.SaveAs("test.pdf");
    ' Start with the simplest possible HTML
    Dim testHtml = "<h1>Test</h1>"
    Dim pdf = New ChromePdfRenderer().RenderHtmlAsPdf(testHtml)
    pdf.SaveAs("test.pdf")
    $vbLabelText   $csharpLabel

Quais são os problemas comuns ao executar o aplicativo?

Aqui estão os problemas mais frequentes que os desenvolvedores juniores encontram e suas soluções:

  1. "IronPdf.Exceptions.IronPdfDeploymentException" Solução: Certifique-se de que o Visual C++ Runtime esteja instalado. Execute o Windows Update para obter os tempos de execução mais recentes.

  2. Erros de "Acesso Negado"

    • Não salve em diretórios protegidos (C:\, Arquivos de Programas)
    • Use Environment.SpecialFolder para caminhos seguros
    • Verificar permissões do IIS para aplicativos da Web
  3. Tamanhos de arquivo grandes

    • Aplicar compressão de PDF :
      pdf.CompressImages(90); // 90% quality
      pdf.CompressImages(90); // 90% quality
      pdf.CompressImages(90) ' 90% quality
      $vbLabelText   $csharpLabel
  4. Desempenho lento

  5. Conteúdo Ausente

Para problemas persistentes, consulte o guia completo de resolução de problemas .

Qual será a aparência do arquivo PDF final?

O documento PDF resultante terá a seguinte aparência:

Captura de tela de um arquivo PDF simples exibindo um título 'Um Arquivo PDF Simples' e texto 'Heading 6' em um fundo branco

Como posso melhorar a qualidade do PDF?

Melhore a qualidade dos seus PDFs com estas técnicas profissionais:

  1. Renderização em alta resolução:

    renderer.RenderingOptions.PrintHtmlBackgrounds = true;
    renderer.RenderingOptions.ImageQuality = 95; // Higher quality for images
    renderer.RenderingOptions.DPI = 300; // Print-quality resolution
    renderer.RenderingOptions.PrintHtmlBackgrounds = true;
    renderer.RenderingOptions.ImageQuality = 95; // Higher quality for images
    renderer.RenderingOptions.DPI = 300; // Print-quality resolution
    renderer.RenderingOptions.PrintHtmlBackgrounds = True
    renderer.RenderingOptions.ImageQuality = 95 ' Higher quality for images
    renderer.RenderingOptions.DPI = 300 ' Print-quality resolution
    $vbLabelText   $csharpLabel
  2. Estilização profissional:

    <style>
    @page {
        size: A4;
        margin: 2cm;
    }
    body {
        font-family: 'Segoe UI', Tahoma, sans-serif;
        line-height: 1.6;
        color: #333;
    }
    h1 {
        color: #2c3e50;
        border-bottom: 2px solid #3498db;
        padding-bottom: 10px;
    }
    </style>
    <style>
    @page {
        size: A4;
        margin: 2cm;
    }
    body {
        font-family: 'Segoe UI', Tahoma, sans-serif;
        line-height: 1.6;
        color: #333;
    }
    h1 {
        color: #2c3e50;
        border-bottom: 2px solid #3498db;
        padding-bottom: 10px;
    }
    </style>
    HTML
  3. Adicionar elementos visuais:

  4. Otimize para diferentes usos:

Por que o resultado pode ser diferente do esperado?

Diversos fatores podem causar diferenças de renderização entre a pré-visualização HTML e a saída em PDF:

  1. Tipos de mídia CSS : Os PDFs usam mídia de impressão por padrão. Adicionar estilos específicos para impressão:

    @media print {
    .no-print { display: none; }
    body { font-size: 12pt; }
    }
  2. Disponibilidade de fontes : Incorpore fontes personalizadas para garantir a consistência:

    @font-face {
    font-family: 'MyFont';
    src: url('data:font/woff2;base64,...') format('woff2');
    }
  3. Conteúdo dinâmico : o conteúdo renderizado em JavaScript precisa de tempo para carregar:

    renderer.RenderingOptions.RenderDelay = 2000; // Wait 2 seconds
    renderer.RenderingOptions.RenderDelay = 2000; // Wait 2 seconds
    renderer.RenderingOptions.RenderDelay = 2000 ' Wait 2 seconds
    $vbLabelText   $csharpLabel
  4. Diferenças entre navegadores : O IronPDF usa o Chromium, portanto, teste no Chrome para obter uma pré-visualização precisa. Saiba mais sobre o renderizador do Chrome .

  5. Resolução e escala : O DPI do monitor difere do DPI de impressão. Use as configurações de viewport para uma renderização consistente.

Para uma renderização perfeita em pixels, siga o guia de melhores práticas de conversão de HTML para PDF .

Quais são os próximos passos após este tutorial?

O tutorial acima explica como criar um PDF a partir de HTML usando a biblioteca IronPDF .

Para obter mais informações, visite o site oficial do IronPDF . A biblioteca também oferece outras funcionalidades que suportam arquivos PDF totalmente personalizáveis , mesclagem e divisão de arquivos programaticamente , ou simplesmente a verificação de códigos de exemplo que demonstram vários recursos .

Você pode avaliá-lo usando a chave de teste de 30 dias . Atualmente, está disponível uma excelente oferta em que você pode adquirir cinco produtos da Iron Software pelo preço de apenas dois. Visite a página de Informações sobre Licenciamento do IronPDF para obter mais informações sobre licenciamento.

Que funcionalidades avançadas devo aprender a seguir?

Após dominar a conversão básica de HTML para PDF, explore estes recursos avançados:

  1. Formulários em PDF : Crie formulários preenchíveis para coleta de dados:

    // Create interactive form fields
    pdf.Form.Fields.Add(new PdfTextField("name", "Enter your name", 100, 100));
    // Create interactive form fields
    pdf.Form.Fields.Add(new PdfTextField("name", "Enter your name", 100, 100));
    ' Create interactive form fields
    pdf.Form.Fields.Add(New PdfTextField("name", "Enter your name", 100, 100))
    $vbLabelText   $csharpLabel
  2. Assinaturas digitais : Adicione segurança e autenticidade aos documentos.

  3. Manipulação de PDF :

  4. Renderização Avançada :

  5. Otimização de desempenho :
    • Renderização assíncrona para aplicações web
    • Processamento em lote de vários documentos
    • Streaming com uso eficiente de memória

Comece com as funcionalidades mais relevantes para os requisitos do seu projeto.

Como faço para passar da fase de testes para a fase de produção?

A transição da fase de testes para a produção envolve várias etapas importantes:

  1. Escolha a licença correta :

    • Lite : Um desenvolvedor, um projeto
    • Plus : Um único desenvolvedor, múltiplos projetos
    • Profissional : Equipes pequenas (até 3 desenvolvedores)
    • Ilimitado : Equipes empresariais
  2. Aplique sua chave de licença :
    
    // In application startup
    IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
    
    // In application startup
    IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
    $vbLabelText   $csharpLabel

// Or via configuration // appsettings.json (for .NET Core) { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }



3. **Remover marcas d'água de avaliação** : As versões licenciadas removem automaticamente as marcas d'água de avaliação de todos os PDFs gerados.

4. **Considerações sobre desempenho** :
   - Teste com dados em escala de produção
   - Implementar [tratamento de erros adequado](/troubleshooting/engineering-support-for-ironpdf/)
   - Configurar [registro de logs para monitoramento](/how-to/custom-logging/)

5. **Lista de verificação para implantação** :
   - Verificar [requisitos do servidor](/get-started/windows/)
   - Teste na [plataforma de implantação](/get-started/azure/) alvo
   - Configure [o IIS, se aplicável.](/troubleshooting/ironpdf-and-iis/)
   - Configurar [integração contínua](/get-started/installation-overview/)

Para obter orientações detalhadas sobre licenciamento, consulte as [perguntas frequentes sobre licenciamento](/licensing/) .

### Onde posso encontrar exemplos mais complexos?

Amplie seu conhecimento sobre IronPDF com estes recursos abrangentes:

1. **[Biblioteca de exemplos de código](/examples/)** :
   - [Geração de faturas](/how-to/csharp-pdf-reports/)
   - [Criação de relatórios](/how-to/csharp-pdf-reports/)
   - [Processamento em lote](/examples/parallel/)

2. **[Série de tutoriais](/tutorials/)** :
   - [Guia completo para converter HTML em PDF](/tutorials/html-to-pdf/)
   - [Criação de PDFs do zero](/tutorials/csharp-create-pdf-complete-tutorial/)
   - [Edição avançada de PDF](/tutorials/csharp-edit-pdf-complete-tutorial/)

3. **[Guias de Integração](/how-to/html-string-to-pdf/)**:
   - [Integração com ASP.NET MVC](/how-to/cshtml-to-pdf-mvc-core/)
   - [Aplicações Blazor](/how-to/blazor-tutorial/)
   - [Implantação no Azure](/how-to/azure/)

4. **[Documentação da API](/object-reference/api/)** :
   - Referências abrangentes para as aulas
   - Assinaturas e parâmetros de métodos
   - Trechos de código para cada funcionalidade

5. **Recursos comunitários** :
   - [Tag IronPDF do Stack Overflow](https://stackoverflow.com/questions/tagged/ironpdf)
   - [Exemplos do GitHub](https://github.com/iron-software)
   - Suporte técnico através da [central de ajuda](/)

Comece com exemplos mais próximos do seu caso de uso e explore gradualmente recursos mais avançados conforme necessário.

Perguntas frequentes

Como posso converter HTML para PDF em C#?

Você pode usar o método RenderHtmlAsPdf do IronPDF para converter strings HTML em PDFs. Basta criar um objeto HtmlToPdf e chamar o método para renderizar o HTML em um documento PDF.

Quais são os passos envolvidos na configuração de um projeto do Visual Studio para geração de PDF?

Comece abrindo o Visual Studio 2019, selecione "Criar um novo projeto", escolha "Aplicativo Windows Forms" e defina o nome do seu projeto. Em seguida, instale o IronPDF via NuGet para começar a integrar os recursos de geração de PDF.

Como faço para instalar uma biblioteca de geração de PDF no Visual Studio?

Você pode instalar o IronPDF navegando até o Console do Gerenciador de Pacotes no Visual Studio e executando o comando: Install-Package IronPDF .

Quais componentes devem ser incluídos no formulário para gerar PDFs?

Inclua um rótulo com instruções, uma caixa de texto formatado para entrada de HTML e um botão com o rótulo "Converter" no qual os usuários clicarão para gerar o PDF.

Como faço para implementar o código de backend para a criação de arquivos PDF?

Utilize o IronPDF para declarar um objeto HtmlToPdf . Recupere a entrada HTML de uma caixa de texto, solicite ao usuário que salve o PDF e renderize o HTML com o método RenderHtmlAsPdf .

Qual é a função do objeto HtmlToPdf na biblioteca PDF?

O objeto HtmlToPdf do IronPDF é usado para transformar conteúdo HTML em documentos PDF, utilizando os recursos abrangentes de conversão da biblioteca.

Como posso verificar se meu projeto de geração de PDF está funcionando corretamente?

Execute o projeto no Visual Studio, insira o HTML no RichTextBox e clique em "Converter". Em seguida, use a caixa de diálogo Salvar Arquivo para selecionar um local para o arquivo PDF, garantindo que a conversão seja concluída com sucesso.

Que funcionalidades avançadas oferece a biblioteca de PDFs?

O IronPDF permite a criação de PDFs totalmente personalizáveis, bem como a fusão e divisão de arquivos programaticamente. A biblioteca também fornece exemplos de código para diversas funcionalidades.

Posso experimentar a biblioteca de PDFs antes de comprar?

Sim, uma chave de avaliação de 30 dias para o IronPDF está disponível no site oficial, permitindo que você explore seus recursos antes de efetuar a compra.

Onde posso encontrar detalhes sobre a licença da biblioteca de PDFs?

Informações detalhadas sobre licenciamento do IronPDF podem ser encontradas na página de Informações sobre Licenciamento do IronPDF em seu site, incluindo opções e ofertas atuais.

O IronPDF é compatível com o .NET 10?

Sim — o IronPDF já é compatível com todas as versões modernas do .NET e com o lançamento do .NET 10, previsto para novembro de 2025. Ele funciona imediatamente com projetos .NET 10, sem a necessidade de soluções alternativas. (ironpdf.com/blog/using-ironpdf/5-steps-to-generate-a-pdf-file-in-c-sharp/)

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim