Como migrar do TuesPechkin para o IronPDF em C#
TuesPechkin serviu como um wrapper thread-safe em torno do binário nativo wkhtmltopdf, ajudando desenvolvedores .NET a converter HTML para PDF por anos. No entanto, o projeto subjacente wkhtmltopdf foi arquivado no GitHub em janeiro de 2023, e o fork WebKit em que se baseia remonta a cerca de 2015. Isso cria limitações de segurança, estabilidade e renderização que as equipes de desenvolvimento não podem mais ignorar.
Este guia fornece um caminho completo de migração do Terça-feira Pechkin para o IronPDF, com instruções passo a passo, comparações de código e exemplos práticos para desenvolvedores .NET profissionais que estejam avaliando essa transição.
Por que migrar do Terça-feira Pechkin agora?
Para equipes de desenvolvimento preocupadas com a segurança, a decisão de migrar do Terça-feira Pechkin deixou de ser opcional. A biblioteca subjacente wkhtmltopdf contém vulnerabilidades críticas não corrigidas que nunca serão solucionadas.
Vulnerabilidade de segurança crítica: CVE-2022-35583
| Atributo | Valor |
|---|---|
| ID CVE | CVE-2022-35583 |
| Gravidade | CRÍTICO (9,8/10) |
| Vetor de ataque | Rede |
| Status | NUNCA SERÁ CORRIGIDO |
| Afetado | TODAS as versões de Terça-feira Pechkin |
Os responsáveis pela manutenção do wkhtmltopdf declararam explicitamente que NÃO irão corrigir as vulnerabilidades de segurança. Qualquer aplicação que utilize o Terça-feira Pechkin fica permanentemente exposta a ataques de falsificação de requisição do lado do servidor (SSRF).
Como funciona o ataque
Ao processar o HTML fornecido pelo usuário, os atacantes podem injetar conteúdo malicioso:
<iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/"></iframe>
<img src="http://internal-admin-panel:8080/api/users?export=all" />
<iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/"></iframe>
<img src="http://internal-admin-panel:8080/api/users?export=all" />
Isso permite que invasores acessem endpoints de metadados da AWS/Azure/GCP, roubem dados de APIs internas, realizem varreduras de portas em redes internas e exfiltrem configurações confidenciais.
A crise tecnológica
TuesPechkin utiliza o wkhtmltopdf, que por sua vez usa o Qt WebKit 4.8 — uma tecnologia antiga, da era pré-Chrome. Isso significa:
- Sem suporte para Flexbox
- Sem suporte para CSS Grid
- Execução de JavaScript interrompida
- Sem suporte para ES6+
A Crise de Estabilidade
Mesmo com o anunciado ThreadSafeConverter, o Terça-feira Pechkin falha sob alta carga:
// ❌ Terça-feira Pechkin - "ThreadSafeConverter" still crashes
var converter = new TuesPechkin.ThreadSafeConverter(
new TuesPechkin.RemotingToolset<PechkinBindings>());
// Under high load, you'll see:
// System.AccessViolationException: Attempted to read or write protected memory
// Process terminated unexpectedly
// Converter hangs indefinitely
// ❌ Terça-feira Pechkin - "ThreadSafeConverter" still crashes
var converter = new TuesPechkin.ThreadSafeConverter(
new TuesPechkin.RemotingToolset<PechkinBindings>());
// Under high load, you'll see:
// System.AccessViolationException: Attempted to read or write protected memory
// Process terminated unexpectedly
// Converter hangs indefinitely
' ❌ Terça-feira Pechkin - "ThreadSafeConverter" still crashes
Dim converter = New TuesPechkin.ThreadSafeConverter(
New TuesPechkin.RemotingToolset(Of PechkinBindings)())
' Under high load, you'll see:
' System.AccessViolationException: Attempted to read or write protected memory
' Process terminated unexpectedly
' Converter hangs indefinitely
IronPDF vs TuesPechkin: Comparação de Recursos
Compreender as diferenças arquitetônicas ajuda os responsáveis pelas decisões técnicas a avaliar o investimento em migração:
| Recurso | Terça-feira Pechkin | IronPDF |
|---|---|---|
| Licença | Gratuito, código aberto | Comercial |
| Segurança da rosca | Requer gestão manual | Suporte nativo |
| Concorrência | Limitado, pode travar sob carga | Robusto, suporta alta concorrência. |
| Desenvolvimento | Inativo, última atualização em 2015 | Melhorias ativas e contínuas |
| Facilidade de uso | Configuração complexa | Fácil de usar, com guias. |
| Documentação | Básico | Extenso com exemplos |
| Segurança | ❌ CVEs Críticas | ✅ Sem vulnerabilidades conhecidas |
| HTML para PDF | ⚠ WebKit desatualizado | ✅ Cromo moderno |
| CSS3 | ❌ Parcial | ✅ Compatível |
| Flexbox/Grade | ❌ Não suportado | ✅ Compatível |
| JavaScript | ⚠ Não confiável | ✅ ES6+ completo |
| Manipulação de PDF | ❌ Não disponível | ✅ Completo |
| Assinaturas digitais | ❌ Não disponível | ✅ Completo |
| Conformidade com PDF/A | ❌ Não disponível | ✅ Completo |
| Preenchimento de formulários | ❌ Não disponível | ✅ Completo |
| Marcas d'água | ❌ Não disponível | ✅ Completo |
| Mesclar/Dividir | ❌ Não disponível | ✅ Completo |
Guia rápido: Migração do Terça-feira Pechkin para o IronPDF
A migração pode começar imediatamente com esses passos fundamentais.
Passo 1: Substituir pacotes NuGet
Remova todos os pacotes TuesPechkin:
# Remove Terça-feira Pechkin and all related packages
dotnet remove package TuesPechkin
dotnet remove package TuesPechkin.Wkhtmltox.Win64
dotnet remove package TuesPechkin.Wkhtmltox.Win32
# Remove Terça-feira Pechkin and all related packages
dotnet remove package TuesPechkin
dotnet remove package TuesPechkin.Wkhtmltox.Win64
dotnet remove package TuesPechkin.Wkhtmltox.Win32
Instale o IronPDF:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Etapa 2: Remover binários nativos
Exclua estes arquivos e pastas do seu projeto:
wkhtmltox.dllwkhtmltopdf.exe- Qualquer arquivo
wkhtmlto* - pasta
TuesPechkin.Wkhtmltox
Etapa 3: Atualizar Namespaces
Substitua namespaces da Terça-feira Pechkin pelo namespace IronPDF:
// Before (TuesPechkin)
using TuesPechkin;
using TuesPechkin.Wkhtmltox.Win64;
// After (IronPDF)
using IronPdf;
// Before (TuesPechkin)
using TuesPechkin;
using TuesPechkin.Wkhtmltox.Win64;
// After (IronPDF)
using IronPdf;
' Before (TuesPechkin)
Imports TuesPechkin
Imports TuesPechkin.Wkhtmltox.Win64
' After (IronPDF)
Imports IronPdf
Etapa 4: Inicializar a licença
Adicionar inicialização de licença na inicialização do aplicativo:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Exemplos de migração de código
Converter HTML para PDF
O caso de uso mais comum demonstra a diferença de complexidade entre essas bibliotecas PDF for .NET .
Abordagem de TuesPechkin:
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Hello World</h1></body></html>";
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = { new ObjectSettings { HtmlText = html } }
});
File.WriteAllBytes("output.pdf", pdfBytes);
}
}
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Hello World</h1></body></html>";
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = { new ObjectSettings { HtmlText = html } }
});
File.WriteAllBytes("output.pdf", pdfBytes);
}
}
Imports TuesPechkin
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdfBytes As Byte() = converter.Convert(New HtmlToPdfDocument With {
.Objects = {New ObjectSettings With {.HtmlText = html}}
})
File.WriteAllBytes("output.pdf", pdfBytes)
End Sub
End Class
Abordagem IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string 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;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
A versão do Terça-feira Pechkin exige a criação de um StandardConverter com uma cadeia de inicialização complexa: RemotingToolset, Win64EmbeddedDeployment, e TempFolderDeployment. Você também precisa escrever bytes manualmente em um arquivo.
O IronPDF elimina completamente essa cerimônia. Crie um ChromePdfRenderer, renderize HTML e salve. O código é autoexplicativo e não requer conhecimento de ferramentas de implantação ou gerenciamento de binários específicos da plataforma.
Para cenários avançados de conversão de HTML para PDF, consulte o guia de conversão de HTML para PDF .
Converter URLs em PDF
A conversão de URL para PDF apresenta diferenças de complexidade semelhantes.
Abordagem de TuesPechkin:
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = {
new ObjectSettings {
PageUrl = "https://www.example.com"
}
}
});
File.WriteAllBytes("webpage.pdf", pdfBytes);
}
}
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = {
new ObjectSettings {
PageUrl = "https://www.example.com"
}
}
});
File.WriteAllBytes("webpage.pdf", pdfBytes);
}
}
Imports TuesPechkin
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
Dim pdfBytes As Byte() = converter.Convert(New HtmlToPdfDocument With {
.Objects = {
New ObjectSettings With {
.PageUrl = "https://www.example.com"
}
}
})
File.WriteAllBytes("webpage.pdf", pdfBytes)
End Sub
End Class
Abordagem IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
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;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Class
O Terça-feira Pechkin usa ObjectSettings.PageUrl aninhado dentro de um HtmlToPdfDocument.IronPDF fornece um método dedicado RenderUrlAsPdf que expressa claramente a intenção.
Consulte a documentação sobre URLs para PDF para obter informações sobre autenticação e opções de cabeçalho personalizadas.
Configurações de renderização personalizadas
A orientação da página, o tamanho do papel e as margens exigem abordagens de configuração diferentes.
Abordagem de TuesPechkin:
// NuGet: Install-Package TuesPechkin
// NuGet: Install-Package TuesPechkin.Wkhtmltox.Win64
using TuesPechkin;
using System.Drawing.Printing;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var document = new HtmlToPdfDocument
{
GlobalSettings = {
Orientation = GlobalSettings.PaperOrientation.Landscape,
PaperSize = PaperKind.A4,
Margins = new MarginSettings { Unit = Unit.Millimeters, Top = 10, Bottom = 10 }
},
Objects = {
new ObjectSettings { HtmlText = html }
}
};
byte[] pdfBytes = converter.Convert(document);
File.WriteAllBytes("custom.pdf", pdfBytes);
}
}
// NuGet: Install-Package TuesPechkin
// NuGet: Install-Package TuesPechkin.Wkhtmltox.Win64
using TuesPechkin;
using System.Drawing.Printing;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var document = new HtmlToPdfDocument
{
GlobalSettings = {
Orientation = GlobalSettings.PaperOrientation.Landscape,
PaperSize = PaperKind.A4,
Margins = new MarginSettings { Unit = Unit.Millimeters, Top = 10, Bottom = 10 }
},
Objects = {
new ObjectSettings { HtmlText = html }
}
};
byte[] pdfBytes = converter.Convert(document);
File.WriteAllBytes("custom.pdf", pdfBytes);
}
}
Imports TuesPechkin
Imports System.Drawing.Printing
Imports System.IO
Module Program
Sub Main()
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
Dim html As String = "<html><body><h1>Custom PDF</h1></body></html>"
Dim document = New HtmlToPdfDocument With {
.GlobalSettings = New GlobalSettings With {
.Orientation = GlobalSettings.PaperOrientation.Landscape,
.PaperSize = PaperKind.A4,
.Margins = New MarginSettings With {.Unit = Unit.Millimeters, .Top = 10, .Bottom = 10}
},
.Objects = {
New ObjectSettings With {.HtmlText = html}
}
}
Dim pdfBytes As Byte() = converter.Convert(document)
File.WriteAllBytes("custom.pdf", pdfBytes)
End Sub
End Module
Abordagem IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom.pdf");
}
}
Imports IronPdf
Imports IronPdf.Engines.Chrome
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 10
renderer.RenderingOptions.MarginBottom = 10
Dim html As String = "<html><body><h1>Custom PDF</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("custom.pdf")
End Sub
End Module
O Terça-feira Pechkin separa as configurações em GlobalSettings para opções de documento e ObjectSettings para conteúdo.IronPDF consolida tudo em RenderingOptions com nomes de propriedade claros e descobríeis.
Referência de mapeamento da API Terça-feira Pechkin para o IronPDF
Este mapeamento acelera a migração ao mostrar equivalentes diretos da API:
| Terça-feira Pechkin | IronPDF |
|---|---|
StandardConverter |
ChromePdfRenderer |
ThreadSafeConverter |
ChromePdfRenderer |
HtmlToPdfDocument |
Parâmetros do método |
GlobalSettings |
RenderingOptions |
ObjectSettings.HtmlText |
RenderHtmlAsPdf(html) |
ObjectSettings.PageUrl |
RenderUrlAsPdf(url) |
GlobalSettings.PaperSize |
RenderingOptions.PaperSize |
GlobalSettings.Orientation |
RenderingOptions.PaperOrientation |
MarginSettings |
MarginTop, MarginBottom, etc. |
[page] placeholder |
{page} placeholder |
[topage] placeholder |
{total-pages} placeholder |
RemotingToolset |
Não é necessário |
Win64EmbeddedDeployment |
Não é necessário |
TempFolderDeployment |
Não é necessário |
Problemas e soluções comuns em migrações
Problema 1: Código de inicialização complexo
Problema: O Terça-feira Pechkin requer uma configuração complexa de conversor com conjuntos de ferramentas de implantação.
Solução:IronPDF é simples:
// Before (TuesPechkin)
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
// After (IronPDF)
var renderer = new ChromePdfRenderer();
// That's it!
// Before (TuesPechkin)
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
// After (IronPDF)
var renderer = new ChromePdfRenderer();
// That's it!
' Before (TuesPechkin)
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
' After (IronPDF)
Dim renderer = New ChromePdfRenderer()
' That's it!
Problema 2: Falhas na segurança da rosca
Problema: O ThreadSafeConverter do Terça-feira Pechkin ainda falha sob alta carga com AccessViolationException.
Solução: O IronPDF possui segurança de threads nativa — nenhuma configuração especial é necessária:
//IronPDF is inherently thread-safe
var renderer = new ChromePdfRenderer();
// Use from any thread without crashes
//IronPDF is inherently thread-safe
var renderer = new ChromePdfRenderer();
// Use from any thread without crashes
'IronPDF is inherently thread-safe
Dim renderer As New ChromePdfRenderer()
' Use from any thread without crashes
Problema 3: Sintaxe do marcador de posição para número de página
Problem: Terça-feira Pechkin uses [page] and [topage] placeholders.
Solução: Atualize para a sintaxe de espaço reservado do IronPDF:
// Before (TuesPechkin)
"Page [page] of [topage]"
// After (IronPDF)
"Page {page} of {total-pages}"
// Before (TuesPechkin)
"Page [page] of [topage]"
// After (IronPDF)
"Page {page} of {total-pages}"
' Before (TuesPechkin)
"Page [page] of [topage]"
' After (IronPDF)
"Page {page} of {total-pages}"
Problema 4: Layout CSS quebrado
Problema: Os layouts Flexbox e Grid não funcionam no Terça-feira Pechkin porque o wkhtmltopdf usa o Qt WebKit 4.8.
Solução: Utilize CSS moderno adequado com o IronPDF:
// Remove table-based workarounds, use modern CSS
var html = @"
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Works correctly with Chromium!
// Remove table-based workarounds, use modern CSS
var html = @"
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Works correctly with Chromium!
' Remove table-based workarounds, use modern CSS
Dim html As String = "
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Works correctly with Chromium!
Edição 5: Gerenciamento de binários nativos
Problema: O Terça-feira Pechkin requer binários wkhtmltopdf específicos da plataforma e configuração de caminho.
Solução: O IronPDF gerencia todas as dependências por meio do NuGet— sem necessidade de gerenciar binários nativos:
# Just install the package
dotnet add package IronPdf
# No wkhtmltopdf binaries needed
# Just install the package
dotnet add package IronPdf
# No wkhtmltopdf binaries needed
Lista de verificação de migração TuesPechkin
Tarefas pré-migração
Faça uma auditoria em sua base de código para identificar todos os usos de TuesPechkin:
grep -r "using TuesPechkin" --include="*.cs" .
grep -r "ThreadSafeConverter\|RemotingToolset" --include="*.cs" .
grep -r "using TuesPechkin" --include="*.cs" .
grep -r "ThreadSafeConverter\|RemotingToolset" --include="*.cs" .
Documente as configurações atuais de GlobalSettings (tamanho do papel, orientação, margens). Documente as configurações de ObjectSettings (conteúdo HTML, URLs). Identificar implementações de cabeçalho/rodapé para conversão. Localize todos os binários do wkhtmltopdf para remoção.
Tarefas de atualização de código
- Remova os pacotes NuGet TuesPechkin
- Remover binários nativos do wkhtmltopdf
- Instale o pacote NuGet do IronPDF
- Atualize as instruções using de
TuesPechkinparaIronPdf - Adicionar inicialização da chave de licença na inicialização do sistema.
- Substitua os conversores por
ChromePdfRenderer - Converta
GlobalSettingsparaRenderingOptions - Converta
ObjectSettingspara parâmetros de método - Atualize a configuração de margem para propriedades individuais.
- Atualize a sintaxe de cabeçalho/rodapé para
HtmlHeaderFooterbaseado em HTML - Corrija a sintaxe do placeholder de página (
[page]→{page}) - Remova todo o código de implantação/conjunto de ferramentas.
Testes pós-migração
Após a migração, verifique os seguintes aspectos:
- Execute todos os testes unitários
- Teste cenários thread-safe (o IronPDF lida com multithreading sem travamentos)
- Comparar a qualidade de saída do PDF (o Chromium renderiza com mais precisão)
- Verificar renderização CSS (Flexbox e Grid agora funcionam)
- Teste a execução de JavaScript (ES6+ agora suportado)
- Testar a renderização do cabeçalho/rodapé
- Teste de desempenho de operações em lote
- Verificação de segurança para garantir que não restem binários do wkhtmltopdf
Principais benefícios da migração para o IronPDF
A migração do Terça-feira Pechkin para o IronPDF oferece diversas vantagens importantes:
Segurança: As vulnerabilidadesCVE-2022-35583e outras relacionadas ao wkhtmltopdf foram eliminadas. O mecanismo Chromium do IronPDF recebe atualizações de segurança regulares.
Segurança de Thread Nativa: Sem mais configurações complexas de ThreadSafeConverter. Sem mais falhas de AccessViolationException sob carga. O IronPDF lida com a concorrência automaticamente.
Mecanismo de renderização moderno: suporte completo para CSS3, Flexbox, Grid e JavaScript ES6+. Seus PDFs são exibidos exatamente como o conteúdo aparece nos navegadores modernos.
Implantação simplificada: Não é necessário gerenciar binários específicos da plataforma. Sem cerimônia de RemotingToolset, Win64EmbeddedDeployment, ou TempFolderDeployment. Basta instalar o pacote NuGet .
Desenvolvimento Ativo: As atualizações regulares do IronPDF garantem compatibilidade com as versões atuais e futuras do .NET.
Funcionalidades avançadas: O Terça-feira Pechkin converte apenas HTML para PDF. O IronPDF adiciona manipulação de PDFs, assinaturas digitais, conformidade com PDF/A, preenchimento de formulários, marcas d'água e operações de mesclagem/divisão.

