Como migrar do PDFBolt para o IronPDF em C#
A migração do PDFBolt para o IronPDF transforma seu fluxo de trabalho de PDF .NET de um serviço SaaS exclusivamente em nuvem com processamento externo de documentos para uma biblioteca auto-hospedada com total privacidade de dados e geração local ilimitada. Este guia fornece um caminho de migração abrangente, passo a passo, que elimina dependências de rede, limites de uso e transmissão de dados externos, ao mesmo tempo que permite o acesso a recursos de manipulação de PDF que o PDFBolt não oferece.
Por que migrar do PDFBolt para o IronPDF?
O problema de ser exclusivamente em nuvem
O PDFBolt é uma plataforma SaaS totalmente em nuvem que processa seus documentos em servidores externos. Embora conveniente para protótipos rápidos, essa arquitetura cria desafios significativos para aplicações de produção:
-
Processamento exclusivamente em nuvem: todos os documentos passam por servidores externos — não há opção de hospedagem própria disponível, o que pode dissuadir empresas que precisam de maior controle sobre seus dados e processos.
-
Riscos à privacidade dos dados: Documentos sensíveis (contratos, registros médicos, dados financeiros) precisam ser transmitidos externamente. Empresas que lidam com informações sensíveis terão preocupações legítimas.
-
Limites de uso: O plano gratuito tem um limite de 100 documentos por mês, o que pode não ser suficiente para empresas maiores. O modelo de pagamento por documento pode se tornar rapidamente um problema para cargas de trabalho de produção.
-
Dependência de rede: interrupções na internet ou indisponibilidade do PDFBolt significam que a geração de seus PDFs será completamente interrompida.
-
Latência: O tempo de ida e volta na rede adiciona segundos a cada conversão em comparação com o processamento local.
-
Problemas de conformidade: as auditorias de GDPR, HIPAA e SOC2 são complicadas pelo processamento externo de documentos.
-
Segurança da chave de API: O vazamento de chaves de API pode resultar em uso não autorizado cobrado em sua conta.
- Dependência de fornecedor: Seu aplicativo falhará se o PDFBolt alterar os termos ou encerrar suas atividades.
Comparação PDFBolt vs IronPDF
| Preocupação | PDFBolt | IronPDF |
|---|---|---|
| Localização dos dados | Servidores externos | Somente seus servidores |
| Limites de uso | 100 grátis, depois por documento. | Ilimitado |
| É necessário ter acesso à internet. | Sim, sempre | Não |
| Latência | viagem de ida e volta na rede | Milissegundos |
| Conformidade | Complexo (processamento externo) | Simples (processamento local) |
| Modelo de custo | Por documento | Pagamento único ou anual |
| Operação offline | Impossível | Suporte completo |
| Riscos da chave de API | Vazado = faturado | Chave de licença, sem risco de cobrança |
Para equipes que planejam a adoção do .NET 10 e do C# 14 até 2025 e 2026, o IronPDF oferece uma base auto-hospedada que garante total privacidade de dados e elimina a dependência de serviços externos em nuvem.
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 PDFBolt
dotnet remove package PDFBolt
# Install IronPDF
dotnet add package IronPdf
# Remove PDFBolt
dotnet remove package PDFBolt
# 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 PDFBolt
# Find all PDFBolt references
grep -r "PDFBolt\|HtmlToPdfConverter\|ConvertHtmlString\|ConvertUrl" --include="*.cs" .
# Find API key references
grep -r "PDFBOLT\|ApiKey" --include="*.cs" --include="*.json" --include="*.config" .
# Find all PDFBolt references
grep -r "PDFBolt\|HtmlToPdfConverter\|ConvertHtmlString\|ConvertUrl" --include="*.cs" .
# Find API key references
grep -r "PDFBOLT\|ApiKey" --include="*.cs" --include="*.json" --include="*.config" .
Referência completa da API
Mapeamentos de Classes Principais
| PDFBolt | IronPDF |
|---|---|
new HtmlToPdfConverter() |
new ChromePdfRenderer() |
PageSize |
PdfPaperSize |
| (retorna byte[]) | PdfDocument |
Mapeamentos de métodos de conversão
| PDFBolt | IronPDF |
|---|---|
converter.ConvertHtmlString(html) |
renderer.RenderHtmlAsPdf(html) |
converter.ConvertUrl(url) |
renderer.RenderUrlAsPdf(url) |
Mapeamentos de métodos de saída
| PDFBolt | IronPDF |
|---|---|
File.WriteAllBytes(path, pdf) |
pdf.SaveAs(path) |
| (pdf é byte[]) | pdf.BinaryData |
| (fluxo manual) | pdf.Stream |
Mapeamentos de configuração de página
| PDFBolt | IronPDF |
|---|---|
converter.PageSize = PageSize.A4 |
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4 |
converter.MarginTop = 20 |
renderer.RenderingOptions.MarginTop = 20 |
converter.MarginBottom = 20 |
renderer.RenderingOptions.MarginBottom = 20 |
converter.MarginLeft = 15 |
renderer.RenderingOptions.MarginLeft = 15 |
converter.MarginRight = 15 |
renderer.RenderingOptions.MarginRight = 15 |
Mapeamento de espaços reservados para cabeçalho/rodapé
| PDFBolt | IronPDF |
|---|---|
{pageNumber} |
{page} |
{totalPages} |
{total-pages} |
{date} |
{date} |
{title} |
{html-title} |
Exemplos de migração de código
Exemplo 1: HTML básico para PDF
Antes (PDFBolt):
// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);
}
}
// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);
}
}
Imports PDFBolt
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New HtmlToPdfConverter()
Dim html = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = converter.ConvertHtmlString(html)
File.WriteAllBytes("output.pdf", pdf)
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 diferença fundamental aqui reside no tipo de retorno e no padrão de salvamento. O HtmlToPdfConverter.ConvertHtmlString() do PDFBolt retorna um byte[] que você deve gravar manualmente no disco usando File.WriteAllBytes(). Isso requer a importação de System.IO e o gerenciamento da operação de arquivo por conta própria.
O ChromePdfRenderer.RenderHtmlAsPdf() do IronPDF retorna um objeto PdfDocument com um método SaveAs() embutido. Essa abordagem orientada a objetos oferece benefícios adicionais: você pode manipular o PDF (adicionar marcas d'água, mesclar documentos, adicionar segurança) antes de salvar. Se você precisar dos bytes brutos para compatibilidade com o código existente, use pdf.BinaryData. Consulte a documentação de conversão de HTML para PDF para obter opções de renderização adicionais.
Exemplo 2: Conversão de URL para PDF
Antes (PDFBolt):
// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var pdf = converter.ConvertUrl("https://www.example.com");
File.WriteAllBytes("webpage.pdf", pdf);
}
}
// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var pdf = converter.ConvertUrl("https://www.example.com");
File.WriteAllBytes("webpage.pdf", pdf);
}
}
Imports PDFBolt
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New HtmlToPdfConverter()
Dim pdf = converter.ConvertUrl("https://www.example.com")
File.WriteAllBytes("webpage.pdf", pdf)
End Sub
End Class
Após (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Class
O padrão PDFBolt para conversão de URL segue a mesma abordagem da conversão de HTML: ConvertUrl() retorna byte[], exigindo File.WriteAllBytes() para salvar. Note que o PDFBolt ainda requer uma requisição de ida e volta pela rede para seus servidores, mesmo que você já esteja buscando os dados a partir de uma URL.
O método RenderUrlAsPdf() do IronPDF retorna um PdfDocument com o método SaveAs() embutido. A principal vantagem aqui é que o IronPDF realiza a busca da URL e a renderização do PDF localmente — nenhum dado sai da sua infraestrutura. Note que a versão IronPDF nem precisa de using System.IO; para este caso simples. Saiba mais sobre a conversão de URL para PDF .
Exemplo 3: Arquivo HTML com configurações de página personalizadas
Antes (PDFBolt):
// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
converter.PageSize = PageSize.A4;
converter.MarginTop = 20;
converter.MarginBottom = 20;
var html = File.ReadAllText("input.html");
var pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);
}
}
// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
converter.PageSize = PageSize.A4;
converter.MarginTop = 20;
converter.MarginBottom = 20;
var html = File.ReadAllText("input.html");
var pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);
}
}
Imports PDFBolt
Imports System.IO
Class Program
Shared Sub Main()
Dim converter As New HtmlToPdfConverter()
converter.PageSize = PageSize.A4
converter.MarginTop = 20
converter.MarginBottom = 20
Dim html As String = File.ReadAllText("input.html")
Dim pdf As Byte() = converter.ConvertHtmlString(html)
File.WriteAllBytes("output.pdf", pdf)
End Sub
End Class
Após (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
var html = File.ReadAllText("input.html");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
var html = File.ReadAllText("input.html");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System.IO
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
Dim html = File.ReadAllText("input.html")
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
Este exemplo demonstra as diferenças na configuração da página. O PDFBolt define propriedades diretamente no objeto conversor (converter.PageSize, converter.MarginTop). IronPDF usa um objeto RenderingOptions no renderizador (renderer.RenderingOptions.PaperSize, renderer.RenderingOptions.MarginTop).
Os principais mapeamentos:
PageSize.A4→PdfPaperSize.A4(nome de enumeração diferente)MarginTop = 20→RenderingOptions.MarginTop = 20(via RenderingOptions)
Ambos utilizam milímetros para os valores de margem, portanto, seus valores de margem existentes devem ser transferidos diretamente. O namespace IronPdf.Rendering é necessário para acessar a enumeração PdfPaperSize. Para opções adicionais de configuração da página, consulte a documentação de opções de renderização .
Notas críticas sobre migração
Alteração do tipo de retorno
PDFBolt retorna byte[] diretamente; IronPDF retorna PdfDocument:
// PDFBolt pattern:
byte[] pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);
// IronPDF pattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or if you need bytes:
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;
// PDFBolt pattern:
byte[] pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);
// IronPDF pattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or if you need bytes:
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;
' PDFBolt pattern:
Dim pdf As Byte() = converter.ConvertHtmlString(html)
File.WriteAllBytes("output.pdf", pdf)
' IronPDF pattern:
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
' Or if you need bytes:
Dim pdfBytes As Byte() = renderer.RenderHtmlAsPdf(html).BinaryData
Alteração no nome da turma
O nome da classe principal muda de "converter-focused" para "renderer-focused":
// PDFBolt
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();
// PDFBolt
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();
' PDFBolt
Dim converter As New HtmlToPdfConverter()
' IronPDF
Dim renderer As New ChromePdfRenderer()
Alteração do padrão de configuração
O PDFBolt utiliza propriedades diretas; IronPDF usa RenderingOptions:
// PDFBolt: Direct properties
converter.PageSize = PageSize.A4;
converter.MarginTop = 20;
// IronPDF: Via RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
// PDFBolt: Direct properties
converter.PageSize = PageSize.A4;
converter.MarginTop = 20;
// IronPDF: Via RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
' PDFBolt: Direct properties
converter.PageSize = PageSize.A4
converter.MarginTop = 20
' IronPDF: Via RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 20
Eliminação de chave de API
O PDFBolt requer gerenciamento de chaves de API por solicitação; O IronPDF utiliza uma chave de licença única:
// PDFBolt: API key per client (security risk if leaked)
var apiKey = config["PDFBolt:ApiKey"];
var client = new Client(apiKey);
// IronPDF: License key once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
// PDFBolt: API key per client (security risk if leaked)
var apiKey = config["PDFBolt:ApiKey"];
var client = new Client(apiKey);
// IronPDF: License key once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
' PDFBolt: API key per client (security risk if leaked)
Dim apiKey = config("PDFBolt:ApiKey")
Dim client = New Client(apiKey)
' IronPDF: License key once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim renderer = New ChromePdfRenderer()
Remover tratamento de erros de rede
O processamento local significa que não há erros de rede para lidar:
// PDFBolt: Network error handling required
catch (HttpRequestException ex)
catch (TaskCanceledException)
catch (TimeoutException)
// IronPDF: Remove network-specific catches entirely
// PDFBolt: Network error handling required
catch (HttpRequestException ex)
catch (TaskCanceledException)
catch (TimeoutException)
// IronPDF: Remove network-specific catches entirely
Novas funcionalidades disponíveis
Após migrar para o IronPDF, você obtém recursos que o PDFBolt não pode oferecer:
// PDF Merging (not available in PDFBolt)
var merged = PdfDocument.Merge(pdf1, pdf2);
// Watermarks (not available in PDFBolt)
pdf.ApplyWatermark("<h1 style='opacity:0.3;'>DRAFT</h1>");
// Password Protection (not available in PDFBolt)
pdf.SecuritySettings.UserPassword = "secret";
// Text Extraction (not available in PDFBolt)
string text = pdf.ExtractAllText();
// PDF to Images (not available in PDFBolt)
pdf.RasterizeToImageFiles("page_*.png");
// PDF Merging (not available in PDFBolt)
var merged = PdfDocument.Merge(pdf1, pdf2);
// Watermarks (not available in PDFBolt)
pdf.ApplyWatermark("<h1 style='opacity:0.3;'>DRAFT</h1>");
// Password Protection (not available in PDFBolt)
pdf.SecuritySettings.UserPassword = "secret";
// Text Extraction (not available in PDFBolt)
string text = pdf.ExtractAllText();
// PDF to Images (not available in PDFBolt)
pdf.RasterizeToImageFiles("page_*.png");
' PDF Merging (not available in PDFBolt)
Dim merged = PdfDocument.Merge(pdf1, pdf2)
' Watermarks (not available in PDFBolt)
pdf.ApplyWatermark("<h1 style='opacity:0.3;'>DRAFT</h1>")
' Password Protection (not available in PDFBolt)
pdf.SecuritySettings.UserPassword = "secret"
' Text Extraction (not available in PDFBolt)
Dim text As String = pdf.ExtractAllText()
' PDF to Images (not available in PDFBolt)
pdf.RasterizeToImageFiles("page_*.png")
Solução de problemas
Problema 1: Conversor HtmlToPdf não encontrado
Problema: a classe HtmlToPdfConverter não existe no IronPDF.
Solução: Use ChromePdfRenderer:
// PDFBolt
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();
// PDFBolt
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();
' PDFBolt
Dim converter As New HtmlToPdfConverter()
' IronPDF
Dim renderer As New ChromePdfRenderer()
Problema 2: ConvertHtmlString não encontrado
Problema: o método ConvertHtmlString() não existe.
Solução: Use RenderHtmlAsPdf():
// PDFBolt
var pdf = converter.ConvertHtmlString(html);
// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
// PDFBolt
var pdf = converter.ConvertHtmlString(html);
// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
' PDFBolt
Dim pdf = converter.ConvertHtmlString(html)
' IronPDF
Dim pdf = renderer.RenderHtmlAsPdf(html)
Problema 3: ConvertUrl não encontrado
Problema: o método ConvertUrl() não existe.
Solução: Use RenderUrlAsPdf():
// PDFBolt
var pdf = converter.ConvertUrl(url);
// IronPDF
var pdf = renderer.RenderUrlAsPdf(url);
// PDFBolt
var pdf = converter.ConvertUrl(url);
// IronPDF
var pdf = renderer.RenderUrlAsPdf(url);
' PDFBolt
Dim pdf = converter.ConvertUrl(url)
' IronPDF
Dim pdf = renderer.RenderUrlAsPdf(url)
Problema 4: Enumeração PageSize não encontrada
Problema: PageSize enum não existe.
Solução: Use PdfPaperSize de IronPdf.Rendering:
// PDFBolt
converter.PageSize = PageSize.A4;
// IronPDF
using IronPdf.Rendering;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
// PDFBolt
converter.PageSize = PageSize.A4;
// IronPDF
using IronPdf.Rendering;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
' PDFBolt
converter.PageSize = PageSize.A4
' IronPDF
Imports IronPdf.Rendering
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
Problema 5: A primeira geração de PDF é lenta
Problema: A renderização inicial demora mais do que o esperado.
Solução: O mecanismo Chromium inicializa no primeiro uso. Pré-aqueça, se necessário:
// Warm up during application startup
var renderer = new ChromePdfRenderer();
renderer.RenderHtmlAsPdf("<html><body></body></html>");
// Warm up during application startup
var renderer = new ChromePdfRenderer();
renderer.RenderHtmlAsPdf("<html><body></body></html>");
' Warm up during application startup
Dim renderer As New ChromePdfRenderer()
renderer.RenderHtmlAsPdf("<html><body></body></html>")
Lista de verificação para migração
Pré-migração
- Inventariar todas as utilizações do PDFBolt na base de código.
- Documentar as configurações atuais da página (tamanho da página, margens)
- Identificar o código de gerenciamento de chaves de API a ser removido
- Liste quaisquer limites de taxa ou tratamento de erros de rede a serem excluídos.
- Obtenha a chave de licença do IronPDF
Alterações no pacote
- Remover o pacote NuGet
PDFBolt - Instale o pacote NuGet
IronPdf:dotnet add package IronPdf - Adicionar namespace
using IronPdf; - Adicione
using IronPdf.Rendering;para enumerações de tamanho de papel
Alterações no código
- Adicionar configuração de chave de licença na inicialização
- Substitua
HtmlToPdfConverterporChromePdfRenderer - Substitua
ConvertHtmlString()porRenderHtmlAsPdf() - Substitua
ConvertUrl()porRenderUrlAsPdf() - Substitua
File.WriteAllBytes()porpdf.SaveAs() - Atualizar
PageSizeparaRenderingOptions.PaperSize - Atualizar propriedades de margem para
RenderingOptions.MarginTop, etc. - Remover o código de gerenciamento de chaves de API
- Remover o código de tratamento de limite de taxa
- Remover o tratamento de erros de rede
Pós-migração
- Excluir a chave da API dos arquivos de configuração
- Remover chave de API dos gerenciadores de segredos
- Execute todos os testes comparando a saída em PDF.
- Verifique se os tamanhos e margens das páginas estão sendo exibidos corretamente.
- Considere adicionar novas funcionalidades (marcas d'água, segurança, fusão)

