Como migrar do TuesPechkin para o IronPDF em C#
O Terça-feira Pechkin tem servido como um wrapper thread-safe em torno da biblioteca wkhtmltopdf, ajudando desenvolvedores .NET a converter HTML em PDF por anos. No entanto, a tecnologia subjacente wkhtmltopdf foi atualizada pela última vez em 2015 e oficialmente abandonada em dezembro de 2022. Isso cria limitações críticas 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 código de erro anunciado ThreadSafeConverter, o Terça-feira Pechkin trava 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 (Licença MIT) | 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- Quaisquer arquivos
wkhtmlto* TuesPechkin.Wkhtmltoxpasta
Etapa 3: Atualizar Namespaces
Substitua os namespaces 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 Terça-feira Pechkin requer 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 o 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
TuesPechkin usa ObjectSettings.PageUrl aninhado dentro de um HtmlToPdfDocument. O 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
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>Custom PDF</h1></body></html>";
var document = new HtmlToPdfDocument
{
GlobalSettings = {
Orientation = GlobalSettings.PdfOrientation.Landscape,
PaperSize = GlobalSettings.PdfPaperSize.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
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>Custom PDF</h1></body></html>";
var document = new HtmlToPdfDocument
{
GlobalSettings = {
Orientation = GlobalSettings.PdfOrientation.Landscape,
PaperSize = GlobalSettings.PdfPaperSize.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.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.PdfOrientation.Landscape,
.PaperSize = GlobalSettings.PdfPaperSize.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
TuesPechkin separa as configurações em GlobalSettings para opções de todo o documento e ObjectSettings para conteúdo. IronPDF consolida tudo em RenderingOptions com nomes de propriedades claros e fáceis de encontrar.
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] espaço reservado |
{page} espaço reservado |
[toPage] espaço reservado |
{total-pages} espaço reservado |
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 de Terça-feira Pechkin ainda trava 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
Problema: Terça-feira Pechkin usa marcadores de posição [page] e [toPage].
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}"
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 do GlobalSettings (tamanho do papel, orientação, margens). Documento ObjectSettings configurações (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 IronPDF
- Atualize as instruções de uso de
TuesPechkinparaIronPdf - Adicionar inicialização da chave de licença na inicialização do sistema.
- Substitua os conversores por
ChromePdfRenderer - Converter
GlobalSettingsparaRenderingOptions - Converter
ObjectSettingsem parâmetros de método - Atualize a configuração de margem para propriedades individuais.
- Atualizar a sintaxe do cabeçalho/rodapé para HTML
HtmlHeaderFooter - Corrigir a sintaxe do marcador de posição da 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 vulnerabilidades CVE-2022-35583 e outras relacionadas ao wkhtmltopdf foram eliminadas. O mecanismo Chromium do IronPDF recebe atualizações de segurança regulares.
Segurança de Threads Nativa: Chega de configurações complexas ThreadSafeConverter. Chega de travamentos 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. Nenhuma cerimônia RemotingToolset, Win64EmbeddedDeployment ou TempFolderDeployment. Basta instalar o pacote NuGet .
Desenvolvimento ativo: À medida que a adoção do .NET 10 e do C# 14 aumenta até 2026, as atualizações regulares do IronPDF garantem a 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.

