IRONSOFTWAREHOME

Iron Suite for .NET

10 bibliotecas .NET. Um conjunto completo de documentos.

COMPARAÇÃO

CraftMyPDF vs IronPDF: Guia de Comparação Técnica

Curtis Chau
Curtis Chau
Updated: 28 de junho de 2026

Quando os desenvolvedores .NET analisam opções de geração de PDFs, Haukcode.DinkToPdf destaca-se como uma continuação do projeto DinkToPdf descontinuado, que usa o binário wkhtmltopdf. Embora Haukcode.DinkToPdf ofereça conversão básica de HTML para PDF, ele apresenta riscos de segurança significativos do wkhtmltopdf que nunca serão corrigidos devido à descontinuação do projeto.IronPDF apresenta uma opção diferente: uma biblioteca ativamente mantida usando um motor Chromium moderno com atualizações de segurança regulares.

Esta comparação revisa ambas as bibliotecas em aspectos técnicos relevantes para ajudar desenvolvedores e arquitetos a fazer escolhas informadas para suas necessidades de PDF em .NET.

Explorando Haukcode.DinkToPdf

Haukcode.DinkToPdf é uma continuação da biblioteca DinkToPdf, outrora popular, construída sobre o binário wkhtmltopdf agora extinto. A biblioteca visa permanecer compatível com o .NET Core enquanto fornece conversão de HTML para PDF. Como uma continuação de um projeto abandonado, Haukcode.DinkToPdf tem limitações notáveis.

Haukcode.DinkToPdf utiliza SynchronizedConverter com PdfTools para conversão. A configuração é gerenciada por meio de objetos HtmlToPdfDocument contendo GlobalSettings para opções de página (ColorMode, Orientação, Tamanho do Papel, Margens) e ObjectSettings para conteúdo (HtmlContent para strings HTML, Page para URLs). O método converter.Convert(doc) retorna dados brutos byte[].

A biblioteca requer binários nativos específicos da plataforma: libwkhtmltox.dll (Windows), libwkhtmltox.so (Linux) e libwkhtmltox.dylib (macOS). A segurança de thread requer o uso do SynchronizedConverter em um padrão singleton devido às limitações do wkhtmltopdf.

Explorando o IronPDF

IronPDF é uma biblioteca .NET desenvolvida de forma independente que usa um motor de renderização Chromium moderno. A biblioteca é ativamente mantida com atualizações regulares, suporte profissional e patching contínuo de segurança.

IronPDF usa ChromePdfRenderer como sua classe principal de renderização com configuração por meio de propriedades RenderingOptions. Métodos como RenderHtmlAsPdf() e RenderUrlAsPdf() retornam objetos PdfDocument que podem ser salvos com SaveAs() ou acessados como BinaryData. A biblioteca é autossuficiente, sem necessidade de binários nativos externos, e é segura para uso em multithreading por design, sem exigir padrões singleton.

A Consideração Crítica de Segurança

A diferença mais significativa entre essas bibliotecas envolve segurança. Haukcode.DinkToPdf herda CVE-2022-35583, uma vulnerabilidade crítica de Server-Side Request Forgery (SSRF) com uma pontuação CVSS de 9.8.

Vetores de Ataque CVE-2022-35583:

  • Conteúdo HTML malicioso pode fazer o servidor buscar recursos internos
  • Ataques de metadados AWS podem acessar http://169.254.169.254 para roubar credenciais
  • Escaneamento de rede interna e acesso a serviços internos
  • Inclusão de arquivos locais via protocolo file://
  • Potencial de tomada completa da infraestrutura

Não há solução para essa vulnerabilidade porque o wkhtmltopdf foi abandonado (arquivado desde janeiro de 2023, com a última versão 0.12.6 em 2020).

Aspecto de SegurançaHaukcode.DinkToPdfIronPDF
CVEs CríticosCVE-2022-35583 (CVSS 9.8, insuscetível de correção)Ativamente corrigido
Motor subjacentewkhtmltopdf (Qt WebKit ~2015)Chromium (atualizado regularmente)
Status do projetoDesdobramento de projeto abandonadoDesenvolvido ativamente
Atualizações de SegurançaNenhuma esperadaLançamentos regulares
ApoiarApenas para a comunidadeSuporte profissional

Comparação de Arquitetura e Motor

As diferenças arquitetônicas fundamentais afetam a qualidade de renderização, o suporte a padrões web modernos e a complexidade de implantação.

AspectoHaukcode.DinkToPdfIronPDF
Motor de renderizaçãoQt WebKit (~2015)Cromo (atual)
HTML5/CSS3LimitadoApoiado
JavaScriptLimitado, inseguroMotor V8 completo
Binários nativosObrigatório (específico da plataforma)Autossuficiente
Segurança da roscaRequer padrão singletonProjetado para ser seguro contra roscas.
AtualizaçõesNenhuma esperadaLançamentos regulares

A dependência do Haukcode.DinkToPdf no motor desatualizado Qt WebKit significa a falta de anos de patches de segurança e suporte limitado a padrões web modernos. O motor Chromium do IronPDF fornece suporte a padrões web atuais com atualizações regulares.

Comparação de código: operações comuns em PDF

Conversão de HTML para PDF

A operação mais fundamental demonstra as diferenças de design da API.

Haukcode.DinkToPdf:

// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());
        
        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize = PaperKind.A4,
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<html><body><h1>Hello World</h1></body></html>",
                }
            }
        };
        
        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("output.pdf", pdf);
    }
}

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        
        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");
        
        pdf.SaveAs("output.pdf");
    }
}

Haukcode.DinkToPdf requer a criação de um SynchronizedConverter com PdfTools, construindo um HtmlToPdfDocument com objetos aninhados GlobalSettings e ObjectSettings, chamando Convert() para obter bytes brutos, então escrevendo manualmente no disco com File.WriteAllBytes().

IronPDF cria um ChromePdfRenderer, chama RenderHtmlAsPdf() com a string HTML diretamente e salva com SaveAs(). A operação é significativamente mais concisa com um design de API moderno.

Para opções avançadas de renderização HTML, explore o guia de conversão de HTML para PDF .

Conversão de URL para PDF

Converter páginas web mostra as diferentes abordagens para lidar com conteúdo externo.

Haukcode.DinkToPdf:

// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());
        
        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize = PaperKind.A4,
            },
            Objects = {
                new ObjectSettings() {
                    Page = "https://www.example.com",
                }
            }
        };
        
        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}

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");
    }
}

Haukcode.DinkToPdf usa a mesma estrutura HtmlToPdfDocument com a propriedade ObjectSettings.Page para especificação de URL.IronPDF fornece um método dedicado RenderUrlAsPdf() que aceita o URL diretamente—uma API mais limpa para este caso de uso específico.

Observe que a renderização de URL com Haukcode.DinkToPdf carrega o risco de vulnerabilidade SSRF CVE-2022-35583, já que URLs maliciosas ou redirecionamentos poderiam explorar o servidor.

Configurações de página personalizadas

A configuração de página demonstra os diferentes modelos de configuração.

Haukcode.DinkToPdf:

// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());
        
        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Landscape,
                PaperSize = PaperKind.Letter,
                Margins = new MarginSettings() { Top = 10, Bottom = 10, Left = 10, Right = 10 }
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>",
                }
            }
        };
        
        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("landscape.pdf", pdf);
    }
}

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        
        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.MarginTop = 10;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.MarginLeft = 10;
        renderer.RenderingOptions.MarginRight = 10;
        
        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>");
        
        pdf.SaveAs("landscape.pdf");
    }
}

Haukcode.DinkToPdf configura configurações de página através de GlobalSettings com objetos aninhados MarginSettings. As propriedades usam enums como Orientation.Landscape e PaperKind.Letter.

IronPDF usa propriedades RenderingOptions diretamente no renderizador. As propriedades são definidas individualmente (PaperSize, PaperOrientation, MarginTop, etc.) com enums tipados (PdfPaperSize.Letter, PdfPaperOrientation.Landscape). Ambos usam milímetros para unidades de margem.

Saiba mais sobre a configuração de renderização nos tutoriais do IronPDF.

Referência de Mapeamento de API

Para desenvolvedores avaliando a migração do Haukcode.DinkToPdf ou comparando capacidades, este mapeamento mostra operações equivalentes:

Mapeamento de Classe de Conversão

Haukcode.DinkToPdfIronPDF
SynchronizedConverterChromePdfRenderer
BasicConverterChromePdfRenderer
PdfToolsN / D
IConverterN / D

Mapeamento de Configuração de Documentos

Haukcode.DinkToPdfIronPDF
HtmlToPdfDocumentChamada de método
GlobalSettingsRenderingOptions
ObjectSettingsRenderingOptions
converter.Convert(doc)renderer.RenderHtmlAsPdf(html)

Mapeamento de propriedades do GlobalSettings

Propriedade GlobalSettingsPropriedade IronPDF
ColorModeRenderingOptions.GrayScale
OrientationRenderingOptions.PaperOrientation
PaperSizeRenderingOptions.PaperSize
Margins.TopRenderingOptions.MarginTop
Margins.BottomRenderingOptions.MarginBottom
Margins.LeftRenderingOptions.MarginLeft
Margins.RightRenderingOptions.MarginRight

Mapeamento de propriedades de configurações de objeto

Propriedade ObjectSettingsEquivalente ao IronPDF
HtmlContentPrimeiro parâmetro para RenderHtmlAsPdf()
Page (URL)renderer.RenderUrlAsPdf(url)
HeaderSettings.Right = "[page]"TextHeader.RightText = "{page}"

Diferenças na Sintaxe de Espaços Reservados

Os espaços reservados de cabeçalho/rodapé usam sintaxe diferente entre as bibliotecas:

Haukcode.DinkToPdfIronPDF
[page]{page}
[toPage]{total-pages}
[date]{date}

Segurança de Thread e Injeção de Dependência

O Haukcode.DinkToPdf requer manuseio cuidadoso devido a limitações de segurança de thread herdadas do wkhtmltopdf.

Haukcode.DinkToPdf (Singleton Necessário):

// Startup.cs - MUST be singleton due to thread safety issues
public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));
}

IronPDF (Flexível):

// Startup.cs - Can be singleton or transient (both work)
public void ConfigureServices(IServiceCollection services)
{
    IronPdf.License.LicenseKey = Configuration["IronPdf:LicenseKey"];
    services.AddSingleton<IPdfService, IronPdfService>();
    // Or services.AddTransient<IPdfService, IronPdfService>() - both are safe!
}

O IronPDF é seguro para uso em multithreading por design, permitindo padrões flexíveis de injeção de dependência sem a exigência de singleton.

Resumo da comparação de recursos

RecursoHaukcode.DinkToPdfIronPDF
Origem de FonteDesdobramento de projeto abandonadoDesenvolvimento independente
SegurançaCVEs herdados de upstream (irresolúveis)Corrigido proativamente e seguro
Comunidade e ApoioPequeno e esporádicoGrande, ativo e dedicado
Recursos e AtualizaçõesLimitado e esporádicoRegular com desenvolvimento ativo
Suporte a Multi-threadingRequer padrão singletonTotalmente suportado e otimizado
Binários nativosObrigatório (específico da plataforma)Autossuficiente
HTML5/CSS3LimitadoApoiado
JavaScriptLimitadoMotor V8 completo
LicençaMIT (Gratuito)Comercial com período de teste gratuito

Quando as Equipes Consideram Mudar de Haukcode.DinkToPdf para IronPDF

As equipes de desenvolvimento avaliam a transição de Haukcode.DinkToPdf para IronPDF por vários motivos:

Vulnerabilidades de Segurança Críticas: CVE-2022-35583 (SSRF) é uma vulnerabilidade crítica com CVSS 9.8 que nunca será corrigida. Para aplicativos que processam HTML fornecido pelo usuário ou renderizam URLs externas, essa vulnerabilidade permite roubo de credenciais da AWS, acesso a redes internas e ataques de inclusão de arquivos locais.

Tecnologia Subjacente Abandonada: wkhtmltopdf está abandonado (arquivado em janeiro de 2023, último lançamento em 2020). Haukcode.DinkToPdf, como uma continuação, não consegue resolver problemas fundamentais na tecnologia subjacente. O desatualizado motorQt WebKit (~2015)perde anos de correções de segurança.

Gerenciamento de Binários Nativos: Haukcode.DinkToPdf requer a distribuição de binários específicos da plataforma (libwkhtmltox.dll, libwkhtmltox.so, libwkhtmltox.dylib). Isso complica a implantação, pipelines CI/CD e containerização.IronPDF é autossuficiente sem binários externos.

Limitações de Segurança de Thread: O padrão singleton SynchronizedConverter necessário limita a flexibilidade arquitetural e pode criar gargalos sob carga.IronPDF é seguro para threads por design, permitindo instâncias por solicitação.

Padrões Web Modernos: Suporte limitado a HTML5/CSS3 e execução insegura de JavaScript restringem as capacidades de renderização para conteúdo web moderno. O motor Chromium do IronPDF oferece suporte aos padrões web atuais.

Viabilidade a Longo Prazo: A dependência de tecnologia abandonada cria uma dívida técnica que se acumula ao longo do tempo. À medida que os projetos evoluem em direção ao .NET 10 e C# 14 até 2026, manter a dependência de wrappers não mantidos de wkhtmltopdf se torna cada vez mais problemático.

Pontos fortes e considerações

Forças do Haukcode.DinkToPdf

  • Gratuito e Open Source: Licença MIT sem custos de licenciamento
  • Funcionalidade Básica: Suporta conversão fundamental de HTML para PDF
  • Base de Código Existente: Familiar para equipes que já usam DinkToPdf

Considerações sobre Haukcode.DinkToPdf

  • Vulnerabilidades Críticas de Segurança: CVE-2022-35583 é irreparável
  • Tecnologia Abandonada: Construído no wkhtmltopdf descontinuado
  • Dependência de Binários Nativos: DLLs específicas da plataforma necessárias
  • Problemas de Segurança de Thread: Padrão singleton necessário
  • Padrões Web Limitados: Motor Qt WebKit desatualizado
  • Sem Suporte Profissional: Assistência apenas da comunidade
  • Dívida Técnica: Dependência de projeto abandonado aumenta o risco

Pontos fortes do IronPDF

  • Atualização Ativa de Segurança: Atualizações regulares tratam vulnerabilidades
  • Motor Chromium Moderno: Suporte aos padrões web atuais
  • Autossuficiente: Sem dependências de binários nativos
  • Design Seguro para Threads: Padrões de implantação flexíveis
  • HTML5/CSS3/JavaScript Completo: Capacidades modernas de renderização
  • Suporte Profissional: Suporte técnico dedicado
  • Recursos abrangentes: tutoriais e documentação extensivos

Considerações sobre o IronPDF

  • Licença Comercial: Necessária para uso em produção.

Conclusão

Haukcode.DinkToPdf e IronPDF representam abordagens fundamentalmente diferentes para geração de PDF em aplicações .NET. Haukcode.DinkToPdf, como continuação do projeto abandonado DinkToPdf encapsulando o binário wkhtmltopdf descontinuado, tem vulnerabilidades críticas de segurança (CVE-2022-35583) que nunca serão corrigidas. A biblioteca requer distribuição de binários nativos, padrões singleton para segurança de threads e oferece suporte limitado aos padrões da web moderna.

IronPDF fornece uma alternativa mantida ativamente com um motor Chromium moderno, atualizações de segurança regulares e arquitetura segura para threads. A biblioteca autossuficiente elimina a gestão de binários nativos enquanto oferece suporte total a HTML5/CSS3/JavaScript.

À medida que as organizações planejam para .NET 10, C# 14, e desenvolvimento de aplicações até 2026, a escolha entre manter a dependência de tecnologia abandonada com vulnerabilidades críticas irreparáveis e adotar uma solução mantida ativamente com capacidades modernas impacta significativamente tanto a postura de segurança quanto a velocidade de desenvolvimento. As equipes que necessitam de geração segura de PDF, renderização moderna ou implantação simplificada encontrarão que o IronPDF atende a esses requisitos de forma eficaz.

Comece a avaliar o IronPDF com um teste gratuito e explore a documentação completa para verificar se ele atende às suas necessidades específicas.

Observe: DinkToPdf e wkhtmltopdf são marcas registradas de seus respectivos proprietários. Este site não é afiliado, endossado ou patrocinado por DinkToPdf ou wkhtmltopdf. Todos os nomes de produtos, logotipos e marcas são propriedade de seus respectivos proprietários. As comparações são apenas para fins informativos e refletem informações disponíveis publicamente no momento da redação.
Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

OR
bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.