Ir para o conteúdo do rodapé
GUIAS DE MIGRAçãO

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" />
HTML

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
$vbLabelText   $csharpLabel

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
SHELL

Instale o IronPDF:

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

Etapa 2: Remover binários nativos

Exclua estes arquivos e pastas do seu projeto:

  • wkhtmltox.dll
  • wkhtmltopdf.exe
  • Quaisquer arquivos wkhtmlto*
  • TuesPechkin.Wkhtmltox pasta

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
$vbLabelText   $csharpLabel

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"
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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!
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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}"
$vbLabelText   $csharpLabel

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!
$vbLabelText   $csharpLabel

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
SHELL

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" .
SHELL

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

  1. Remova os pacotes NuGet TuesPechkin
  2. Remover binários nativos do wkhtmltopdf
  3. Instale o pacote NuGet IronPDF
  4. Atualize as instruções de uso de TuesPechkin para IronPdf
  5. Adicionar inicialização da chave de licença na inicialização do sistema.
  6. Substitua os conversores por ChromePdfRenderer
  7. Converter GlobalSettings para RenderingOptions
  8. Converter ObjectSettings em parâmetros de método
  9. Atualize a configuração de margem para propriedades individuais.
  10. Atualizar a sintaxe do cabeçalho/rodapé para HTML HtmlHeaderFooter
  11. Corrigir a sintaxe do marcador de posição da página ([page]{page})
  12. 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.

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