Como migrar do Kaizen.io para o IronPDF em C#
A migração do Kaizen.io HTML-to-PDF para o IronPDF transforma seu fluxo de trabalho de PDF .NET , de um serviço dependente da nuvem com latência de rede e preocupações com a privacidade dos dados, para uma biblioteca local integrada ao processo, que mantém seus dados dentro da sua infraestrutura. Este guia fornece um caminho de migração abrangente, passo a passo, que elimina as dependências de APIs externas e a cobrança por solicitação para desenvolvedores .NET profissionais.
Por que migrar do Kaizen.io para o IronPDF?
Os desafios das APIs baseadas em nuvem
O serviço de conversão de HTML para PDF da Kaizen.io, assim como outros serviços de PDF baseados em nuvem, apresenta limitações que afetam aplicações em produção:
-
Dependência da nuvem: Requer conexão constante com a internet e disponibilidade de serviços externos. Se o serviço Kaizen.io ficar indisponível, a geração de PDFs do seu aplicativo deixará de funcionar.
-
Preocupações com a privacidade dos dados: Conteúdo HTML sensível — incluindo dados de clientes, relatórios financeiros e documentos confidenciais — precisa ser transmitido para servidores de terceiros para processamento.
-
Latência de rede: Cada geração de PDF acarreta atrasos de ida e volta na rede de 100 a 500 ms ou mais, adicionando uma sobrecarga significativa aos tempos de resposta do seu aplicativo.
-
Preços por solicitação: os custos aumentam diretamente com o volume de uso, tornando a geração de PDFs em grande volume cada vez mais cara.
-
Limitação de taxa: a limitação da API durante períodos de alto tráfego pode causar falhas ou atrasos na geração de PDFs quando você mais precisa deles.
- Dependência de fornecedor: alterações na API ou risco de descontinuação do serviço deixam seu aplicativo vulnerável a decisões comerciais externas.
Comparação entre Kaizen.io e IronPDF
| Recurso | Kaizen.io | IronPDF |
|---|---|---|
| Processamento | Nuvem (servidores externos) | Local (em processo) |
| Privacidade de dados | Dados transmitidos externamente | Os dados nunca saem da sua infraestrutura. |
| Latência | Tempo de ida e volta da rede (100-500ms+) | Processamento local (50-200ms) |
| Disponibilidade | Depende de serviço externo | 100% sob seu controle |
| Preços | Sob encomenda ou por assinatura | Licença única ou anual |
| Modo offline | Não é possível. | Funcionalidade completa |
| Limites de taxa | Limitação de API | Sem limites |
| JavaScript | Suporte limitado | Execução completa do Chromium |
Para equipes que planejam a adoção do .NET 10 e do C# 14 até 2025 e 2026, o IronPDF oferece uma base preparada para o futuro com processamento local que elimina a dependência de serviços externos.
Avaliação da Complexidade da Migração
Esforço estimado por funcionalidade
| Recurso | Complexidade da Migração |
|---|---|
| HTML básico para PDF | Muito baixo |
| Arquivo HTML para PDF | Muito baixo |
| URL para PDF | Muito baixo |
| Cabeçalhos/Rodapés | Baixo |
| Configurações da página | Muito baixo |
| Gerenciamento de chaves de API | Baixo |
Mudança de paradigma
A mudança fundamental nesta migração para o Kaizen.io é a transição de chamadas à API na nuvem para a renderização local no mesmo processo:
Kaizen.io: HtmlToPdfConverter → Convert(html) → byte[] (via rede)
IronPDF: ChromePdfRenderer → RenderHtmlAsPdf(html) → PdfDocument (local)
Antes de começar
Pré-requisitos
- Ambiente .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
- Acesso ao NuGet : Capacidade de instalar pacotes NuGet.
- Licença do IronPDF : Obtenha sua chave de licença em IronPDF
Alterações no pacote NuGet
# Remove Kaizen.io package
dotnet remove package Kaizen.HtmlToPdf
dotnet remove package Kaizen.IO.HtmlToPdf
# Install IronPDF
dotnet add package IronPdf
# Remove Kaizen.io package
dotnet remove package Kaizen.HtmlToPdf
dotnet remove package Kaizen.IO.HtmlToPdf
# Install IronPDF
dotnet add package IronPdf
Configuração de licença
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Identificar o uso do Kaizen.io
# Find all Kaizen.io references
grep -r "using Kaizen\|HtmlToPdfConverter\|ConversionOptions" --include="*.cs" .
grep -r "ConvertUrl\|ConvertHtml\|Kaizen" --include="*.cs" .
# Find all Kaizen.io references
grep -r "using Kaizen\|HtmlToPdfConverter\|ConversionOptions" --include="*.cs" .
grep -r "ConvertUrl\|ConvertHtml\|Kaizen" --include="*.cs" .
Referência completa da API
Mapeamentos de Classes
| Aula Kaizen.io | Equivalente ao IronPDF |
|---|---|
HtmlToPdfConverter |
ChromePdfRenderer |
ConversionOptions |
ChromePdfRenderOptions |
HeaderOptions |
HtmlHeaderFooter ou TextHeaderFooter |
FooterOptions |
HtmlHeaderFooter ou TextHeaderFooter |
PageSize |
PdfPaperSize |
Orientation |
PdfPaperOrientation |
Mapeamentos de Métodos
| Método Kaizen.io | Equivalente ao IronPDF |
|---|---|
converter.Convert(html) |
renderer.RenderHtmlAsPdf(html) |
converter.ConvertUrl(url) |
renderer.RenderUrlAsPdf(url) |
File.WriteAllBytes(path, bytes) |
pdf.SaveAs(path) |
Mapeamentos de propriedades do ConversionOptions
| Propriedade Kaizen.io | Equivalente ao IronPDF |
|---|---|
PageSize |
RenderingOptions.PaperSize |
Orientation |
RenderingOptions.PaperOrientation |
MarginTop |
RenderingOptions.MarginTop |
MarginBottom |
RenderingOptions.MarginBottom |
Header.HtmlContent |
RenderingOptions.HtmlHeader.HtmlFragment |
Footer.HtmlContent |
RenderingOptions.HtmlFooter.HtmlFragment |
Mapeamentos de espaço reservado
| Espaço reservado para Kaizen.io | Espaço reservado para IronPDF |
|---|---|
{page} |
{page} |
{total} |
{total-pages} |
{date} |
{date} |
{title} |
{html-title} |
Exemplos de migração de código
Exemplo 1: HTML básico para PDF
Antes (Kaizen.io):
using Kaizen.IO;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var html = "<html><body><h1>Hello World</h1></body></html>";
var pdfBytes = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdfBytes);
}
}
using Kaizen.IO;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var html = "<html><body><h1>Hello World</h1></body></html>";
var pdfBytes = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdfBytes);
}
}
Imports Kaizen.IO
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New HtmlToPdfConverter()
Dim html = "<html><body><h1>Hello World</h1></body></html>"
Dim pdfBytes = converter.Convert(html)
File.WriteAllBytes("output.pdf", pdfBytes)
End Sub
End Class
Após (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System.IO
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
A abordagem Kaizen.io cria um HtmlToPdfConverter, chama Convert() para obter uma matriz de bytes e, em seguida, grava manualmente os bytes em um arquivo usando File.WriteAllBytes(). Isso envolve uma requisição de ida e volta pela rede para o serviço em nuvem Kaizen.io.
O ChromePdfRenderer do IronPDF processa tudo localmente. O método RenderHtmlAsPdf() retorna um objeto PdfDocument com um método SaveAs() conveniente — sem necessidade de manipulação manual de matrizes de bytes e sem latência de rede. Consulte a documentação de conversão de HTML para PDF para obter opções de renderização adicionais.
Exemplo 2: Converter arquivo HTML para PDF com configurações de página
Antes (Kaizen.io):
using Kaizen.IO;
using System;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var htmlContent = File.ReadAllText("input.html");
var options = new ConversionOptions
{
PageSize = PageSize.A4,
Orientation = Orientation.Portrait
};
var pdfBytes = converter.Convert(htmlContent, options);
File.WriteAllBytes("document.pdf", pdfBytes);
}
}
using Kaizen.IO;
using System;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var htmlContent = File.ReadAllText("input.html");
var options = new ConversionOptions
{
PageSize = PageSize.A4,
Orientation = Orientation.Portrait
};
var pdfBytes = converter.Convert(htmlContent, options);
File.WriteAllBytes("document.pdf", pdfBytes);
}
}
Imports Kaizen.IO
Imports System
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New HtmlToPdfConverter()
Dim htmlContent = File.ReadAllText("input.html")
Dim options = New ConversionOptions With {
.PageSize = PageSize.A4,
.Orientation = Orientation.Portrait
}
Dim pdfBytes = converter.Convert(htmlContent, options)
File.WriteAllBytes("document.pdf", pdfBytes)
End Sub
End Class
Após (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
pdf.SaveAs("document.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
pdf.SaveAs("document.pdf");
}
}
Imports IronPdf
Imports System
Imports System.IO
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait
Dim pdf = renderer.RenderHtmlFileAsPdf("input.html")
pdf.SaveAs("document.pdf")
End Sub
End Class
A abordagem do Kaizen.io requer a leitura manual do conteúdo do arquivo HTML com File.ReadAllText(), a criação de um objeto ConversionOptions separado, a passagem de ambos para o método Convert() e, em seguida, a gravação manual dos bytes resultantes em um arquivo.
O IronPDF fornece um método dedicado RenderHtmlFileAsPdf() que lê o arquivo diretamente — nenhuma leitura manual do arquivo é necessária. A configuração é definida na propriedade RenderingOptions do renderizador, mantendo todas as configurações em um só lugar. Os enums PdfPaperSize.A4 e PdfPaperOrientation.Portrait correspondem diretamente aos equivalentes do Kaizen.io.
Exemplo 3: URL para PDF com cabeçalhos e rodapés
Antes (Kaizen.io):
using Kaizen.IO;
using System;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var options = new ConversionOptions
{
Header = new HeaderOptions { HtmlContent = "<div style='text-align:center'>Company Header</div>" },
Footer = new FooterOptions { HtmlContent = "<div style='text-align:center'>Page {page} of {total}</div>" },
MarginTop = 20,
MarginBottom = 20
};
var pdfBytes = converter.ConvertUrl("https://example.com", options);
File.WriteAllBytes("webpage.pdf", pdfBytes);
}
}
using Kaizen.IO;
using System;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var options = new ConversionOptions
{
Header = new HeaderOptions { HtmlContent = "<div style='text-align:center'>Company Header</div>" },
Footer = new FooterOptions { HtmlContent = "<div style='text-align:center'>Page {page} of {total}</div>" },
MarginTop = 20,
MarginBottom = 20
};
var pdfBytes = converter.ConvertUrl("https://example.com", options);
File.WriteAllBytes("webpage.pdf", pdfBytes);
}
}
Imports Kaizen.IO
Imports System
Imports System.IO
Module Program
Sub Main()
Dim converter As New HtmlToPdfConverter()
Dim options As New ConversionOptions With {
.Header = New HeaderOptions With {.HtmlContent = "<div style='text-align:center'>Company Header</div>"},
.Footer = New FooterOptions With {.HtmlContent = "<div style='text-align:center'>Page {page} of {total}</div>"},
.MarginTop = 20,
.MarginBottom = 20
}
Dim pdfBytes = converter.ConvertUrl("https://example.com", options)
File.WriteAllBytes("webpage.pdf", pdfBytes)
End Sub
End Module
Após (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.TextHeader.CenterText = "Company Header";
renderer.RenderingOptions.TextFooter.CenterText = "Page {page} of {total-pages}";
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("webpage.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.TextHeader.CenterText = "Company Header";
renderer.RenderingOptions.TextFooter.CenterText = "Page {page} of {total-pages}";
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("webpage.pdf");
}
}
Imports IronPdf
Imports System
Imports System.IO
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.TextHeader.CenterText = "Company Header"
renderer.RenderingOptions.TextFooter.CenterText = "Page {page} of {total-pages}"
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Module
Este exemplo demonstra várias diferenças importantes na migração. Kaizen.io requer objetos HeaderOptions e FooterOptions aninhados dentro de ConversionOptions, cada um com uma propriedade HtmlContent. IronPDF oferece uma configuração mais limpa para TextHeader e TextFooter com propriedades dedicadas para CenterText, LeftText e RightText.
Nota importante: A sintaxe do marcador de posição é diferente! Kaizen.io usa {total} para contagem total de páginas, enquanto IronPDF usa {total-pages}. Este é o problema de migração mais comum: procure em sua base de código por {total} e substitua por {total-pages}.
O método RenderUrlAsPdf() do IronPDF renderiza diretamente qualquer URL com execução completa de JavaScript por meio do mecanismo Chromium — sem necessidade de soluções alternativas. Saiba mais sobre conversão de URL para PDF e cabeçalhos e rodapés .
Notas críticas sobre migração
Alteração de sintaxe do marcador de posição
A mudança mais importante na migração de cabeçalhos e rodapés é a sintaxe dos espaços reservados:
// Kaizen.io placeholders:
"Page {page} of {total}"
// IronPDF placeholders:
"Page {page} of {total-pages}"
// Kaizen.io placeholders:
"Page {page} of {total}"
// IronPDF placeholders:
"Page {page} of {total-pages}"
Mapeamento completo de espaços reservados:
{page}→{page}(igual){total}→{total-pages}(DIFERENTE!){title}→{html-title}(DIFERENTE!){date}→{date}(igual){time}→{time}(igual)
Alteração do tipo de retorno
Kaizen.io retorna byte[] diretamente. IronPDF retorna um objeto PdfDocument:
// Kaizen.io returns byte[]
byte[] pdfBytes = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdfBytes);
// IronPDF returns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf"); // Direct save
byte[] bytes = pdf.BinaryData; // Or get bytes if needed
// Kaizen.io returns byte[]
byte[] pdfBytes = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdfBytes);
// IronPDF returns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf"); // Direct save
byte[] bytes = pdf.BinaryData; // Or get bytes if needed
' Kaizen.io returns Byte()
Dim pdfBytes As Byte() = converter.Convert(html)
File.WriteAllBytes("output.pdf", pdfBytes)
' IronPDF returns PdfDocument
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf") ' Direct save
Dim bytes As Byte() = pdf.BinaryData ' Or get bytes if needed
Remover o gerenciamento de chaves de API
A Kaizen.io exige autenticação por chave de API por solicitação. O IronPDF utiliza uma chave de licença definida uma única vez na inicialização do aplicativo:
// DELETE this Kaizen.io pattern:
var converter = new HtmlToPdfConverter("YOUR_API_KEY");
// IronPDF: Set once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer(); // No API key needed
// DELETE this Kaizen.io pattern:
var converter = new HtmlToPdfConverter("YOUR_API_KEY");
// IronPDF: Set once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer(); // No API key needed
' DELETE this Kaizen.io pattern:
Dim converter = New HtmlToPdfConverter("YOUR_API_KEY")
' IronPDF: Set once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim renderer = New ChromePdfRenderer() ' No API key needed
Excluir tratamento de erros de rede
Remover a lógica de repetição, o tratamento de limites de taxa e o código de tempo limite de rede — o IronPDF processa localmente:
// DELETE this Kaizen.io pattern:
int retries = 3;
while (retries > 0)
{
try
{
return converter.Convert(html);
}
catch (RateLimitException)
{
retries--;
Thread.Sleep(1000);
}
}
// IronPDF: Just call the method
return renderer.RenderHtmlAsPdf(html).BinaryData;
// DELETE this Kaizen.io pattern:
int retries = 3;
while (retries > 0)
{
try
{
return converter.Convert(html);
}
catch (RateLimitException)
{
retries--;
Thread.Sleep(1000);
}
}
// IronPDF: Just call the method
return renderer.RenderHtmlAsPdf(html).BinaryData;
' DELETE this Kaizen.io pattern:
Dim retries As Integer = 3
While retries > 0
Try
Return converter.Convert(html)
Catch ex As RateLimitException
retries -= 1
Thread.Sleep(1000)
End Try
End While
' IronPDF: Just call the method
Return renderer.RenderHtmlAsPdf(html).BinaryData
Solução de problemas
Problema 1: Conversor HtmlToPdf não encontrado
Problema: a classe HtmlToPdfConverter não existe no IronPDF.
Solução: Substitua por ChromePdfRenderer:
// Kaizen.io
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();
// Kaizen.io
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();
' Kaizen.io
Dim converter As New HtmlToPdfConverter()
' IronPDF
Dim renderer As New ChromePdfRenderer()
Problema 2: Opções de conversão não encontradas
Problema: a classe ConversionOptions não existe no IronPDF.
Solução: Use RenderingOptions no renderizador:
// Kaizen.io
var options = new ConversionOptions { PageSize = PageSize.A4 };
converter.Convert(html, options);
// IronPDF
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderHtmlAsPdf(html);
// Kaizen.io
var options = new ConversionOptions { PageSize = PageSize.A4 };
converter.Convert(html, options);
// IronPDF
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderHtmlAsPdf(html);
' Kaizen.io
Dim options As New ConversionOptions With {.PageSize = PageSize.A4}
converter.Convert(html, options)
' IronPDF
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderHtmlAsPdf(html)
Problema 3: Números de página não funcionam
Problema: O rodapé exibe o texto literal {total} em vez da contagem de páginas.
Solução: Atualize a sintaxe do marcador de posição:
// Kaizen.io syntax (won't work)
"Page {page} of {total}"
// IronPDF syntax
"Page {page} of {total-pages}"
// Kaizen.io syntax (won't work)
"Page {page} of {total}"
// IronPDF syntax
"Page {page} of {total-pages}"
Problema 4: Método de conversão não encontrado
Problema: o método Convert() não existe em ChromePdfRenderer.
Solução: Use RenderHtmlAsPdf():
// Kaizen.io
var pdfBytes = converter.Convert(html);
// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
var pdfBytes = pdf.BinaryData;
// Kaizen.io
var pdfBytes = converter.Convert(html);
// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
var pdfBytes = pdf.BinaryData;
' Kaizen.io
Dim pdfBytes = converter.Convert(html)
' IronPDF
Dim pdf = renderer.RenderHtmlAsPdf(html)
Dim pdfBytes = pdf.BinaryData
Problema 5: Primeira renderização lenta
Problema: A primeira geração do PDF leva de 1 a 3 segundos.
Solução: O IronPDF inicializa o Chromium no primeiro uso. Aquecimento na inicialização do aplicativo:
// In Program.cs or Startup.cs:
new ChromePdfRenderer().RenderHtmlAsPdf("<html></html>");
// In Program.cs or Startup.cs:
new ChromePdfRenderer().RenderHtmlAsPdf("<html></html>");
' In Program.vb or Startup.vb:
Call New ChromePdfRenderer().RenderHtmlAsPdf("<html></html>")
Lista de verificação para migração
Pré-migração
- Identifique todas as declarações
usingdo Kaizen.io - Documento
ConversionOptionsconfigurações usadas - Observe os modelos de cabeçalho/rodapé e os espaços reservados.
- Listar locais das chaves de API (a remover)
- Verificar lógica de repetição/limitação de taxa (para exclusão)
- Obtenha a chave de licença do IronPDF
Alterações no pacote
- Remover o pacote
Kaizen.HtmlToPdf - Instale o pacote NuGet
IronPdf:dotnet add package IronPdf - Atualizar importações de namespace
Alterações no código
- Adicionar configuração de chave de licença na inicialização
- Substitua
HtmlToPdfConverterporChromePdfRenderer - Converter
ConversionOptionsparaRenderingOptions - Atualizar
Convert()paraRenderHtmlAsPdf() - Atualizar
ConvertUrl()paraRenderUrlAsPdf() - Atualizar sintaxe do marcador de posição (
{total}→{total-pages}) - Substitua
File.WriteAllBytes()porpdf.SaveAs() - Remover configuração da chave de API
- Excluir lógica de repetição/limitação de taxa
- Remover o tratamento de erros de rede para chamadas de API.
Testando
- Testar todos os caminhos de geração de PDF
- Verificar a renderização do cabeçalho/rodapé
- Verificar renderização de espaço reservado
- Validar margens e tamanhos de página
- Teste a funcionalidade offline (nova funcionalidade!)
- Melhoria do desempenho de referência
Pós-migração
- Remover a chave da API Kaizen.io da configuração
- Atualizar variáveis de ambiente
- Remover configuração de limite de taxa
- Atualizar monitoramento/alertas

