IRONSOFTWAREHOME
VÍDEOS

Como converter imagens em PDF em C#

Curtis Chau
Curtis Chau
Updated: 18 de maio de 2026

Por que migrar doCraftMyPDFpara o IronPDF?

APIs de PDF baseadas em nuvem, como o CraftMyPDF, apresentam problemas fundamentais que as tornam inadequadas para muitos ambientes de produção.

O problema com as APIs de PDF baseadas na nuvem

  1. Seus dados saem do seu sistema: Cada modelo HTML e carga útil de dados JSON é transmitida para os servidores da CraftMyPDF. Para faturas, contratos, registros médicos ou quaisquer dados comerciais sensíveis, isso cria riscos de não conformidade com as normas HIPAA, GDPR e SOC2.

  2. Latência da Rede: Cada geração de PDF envolve uma ida e volta de rede, além de tempo de fila e renderização (normalmente segundos). O IronPDF é gerado localmente em milissegundos.

  3. Custos Por-PDF Acumulam: Preços baseados em créditos acumulam com o volume — cargas de trabalho de alto rendimento criam custos recorrentes significativos em comparação com uma licença perpétua única.

  4. Saída otimizada para impressão: APIs na nuvem geralmente otimizam para impressão, reduzindo planos de fundo e simplificando cores para economizar "tinta". O resultado nunca se parece com o seu HTML na tela.

  5. Dependência de modelo: oCraftMyPDFexige seu editor proprietário de arrastar e soltar. Você não pode usar HTML/CSS padrão livremente.

Comparação de arquitetura

AspectoCraftMyPDFIronPDF
Localização dos dadosNuvem (seus dados saem do seu sistema)Local (os dados nunca saem)
LatênciaIda e volta de rede + renderização (normalmente segundos)Milissegundos
PreçosAssinatura baseada em créditoLicença perpétua única
Sistema de modelosSomente com recurso proprietário de arrastar e soltar.Qualquer HTML/CSS/JavaScript
Qualidade da produçãoOtimizado para impressãoRenderização de tela perfeita em cada pixel
Funciona offlineNão (requer internet)Sim
ConformidadeOs dados saem da organização.Compatível com SOC2/HIPAA

Comparação de recursos

RecursoCraftMyPDFIronPDF
HTML para PDFPor meio de modelos de API✅Nativo
URL para PDFVia API✅Nativo
Modelos personalizadosEditor proprietário apenas✅Qualquer HTML
Suporte a CSS3Limitado✅Completo
Renderização em JavaScriptLimitado✅Completo
Unir/Dividir PDFsVia API✅Nativo
Marcas d'águaVia API✅Nativo
Funciona offline
autohospedado

Preparação pré-migratória

Pré-requisitos

Certifique-se de que seu ambiente atenda a estes requisitos:

  • .NET Framework 4.6.2 ou superior ou .NET Core 3.1 / .NET 5-9
  • Visual Studio 2019 ou superior ou VS Code com extensão C#
  • Acesso ao Gerenciador de Pacotes NuGet
  • Chave de licença do IronPDF(teste gratuito disponível em IronPDF )

Auditoria de uso do CraftMyPDF

Execute estes comandos no diretório da sua solução para identificar todas as referências ao CraftMyPDF:

# Find allCraftMyPDFusages in your codebase
grep -r "CraftMyPdf\|craftmypdf\|api.craftmypdf.com" --include="*.cs" .
grep -r "X-API-KEY" --include="*.cs" .

# Find API key references
grep -r "your-api-key\|template-id\|template_id" --include="*.cs" .

# Find NuGet package references
grep -r "CraftMyPdf\|RestSharp" --include="*.csproj" .
SHELL

Mudanças significativas a serem previstas

MudarCraftMyPDFIronPDFImpacto
ArquiteturaAPI REST na nuvemBiblioteca .NET localRemover chamadas HTTP
ModelosEditor proprietárioHTML padrãoConverter modelos em HTML
Chave de APIObrigatório para todas as chamadasLicença na inicializaçãoRemover o gerenciamento de chaves de API
Padrão assíncronoObrigatório (HTTP)OpcionalRemova o await se preferir.
Tratamento de erroscódigos de status HTTPExceçõesAlterar padrões try/catch
Vinculação de dadosModelos JSONInterpolação de stringsSimplifique a vinculação de dados.

Processo de migração passo a passo

Passo 1: Atualizar pacotes NuGet

Remova a biblioteca cliente HTTP e instale o IronPDF:

# Remove RestSharp HTTP client
dotnet remove package RestSharp

# Install IronPDF
dotnet add package IronPdf
SHELL

Etapa 2: Atualizar referências de namespace

Substitua os namespaces do cliente HTTP pelo IronPDF:

// Remove these
using RestSharp;
using System.IO;

// Add this
using IronPdf;

Etapa 3: Configurar a licença (uma vez na inicialização)

Substitua os cabeçalhos de chave de API por solicitação por uma configuração de licença única:

// Add at application startup (Program.cs or Global.asax)
// This replaces all X-API-KEY headers
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Referência completa para migração de API

Mapeamento de endpoints de API

CraftMyPDFIronPDF
POST /v1/createrenderer.RenderHtmlAsPdf(html)
X-API-KEY cabeçalhoLicense.LicenseKey = "..."
template_idString HTML padrão
{%name%} espaços reservados$"{name}" interpolação C#
POST /v1/mergePdfDocument.Merge(pdfs)
POST /v1/add-watermarkpdf.ApplyWatermark(html)
Retornos de chamada do WebhookNão é necessário
Limitação de taxaNão aplicável

Mapeamento de Configuração

OpçãoCraftMyPDFEquivalente ao IronPDF
template_idstring HTML
data JSONInterpolação em C#
page_size: "A4"PaperSize = PdfPaperSize.A4
orientation: "landscape"PaperOrientation = Landscape
margin_top: 20MarginTop = 20
headerHtmlHeader
footerHtmlFooter

Exemplos de migração de código

Conversão de HTML para PDF

A operação mais comum demonstra a mudança fundamental na arquitetura, passando da API em nuvem para a renderização local.

Implementação do CraftMyPDF:

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

class Program
{
    static void Main()
    {
        var client = new RestClient("https://api.craftmypdf.com/v1/create");
        var request = new RestRequest(Method.POST);
        request.AddHeader("X-API-KEY", "your-api-key");
        request.AddJsonBody(new
        {
            template_id = "your-template-id",
            data = new
            {
                html = "<h1>Hello World</h1><p>This is a PDF from HTML</p>"
            }
        });
        
        var response = client.Execute(request);
        File.WriteAllBytes("output.pdf", response.RawBytes);
    }
}

Implementação do IronPDF:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>");
        pdf.SaveAs("output.pdf");
    }
}

O IronPDF elimina a configuração do RestClient, os cabeçalhos da chave de API, os IDs de modelo e o tratamento da resposta HTTP, reduzindo uma operação na nuvem de 15 linhas para apenas 4 linhas de código local. Para mais opções, consulte a documentação de conversão de HTML para PDF .

Conversão de URL para PDF

Implementação do CraftMyPDF:

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

class Program
{
    static void Main()
    {
        var client = new RestClient("https://api.craftmypdf.com/v1/create");
        var request = new RestRequest(Method.POST);
        request.AddHeader("X-API-KEY", "your-api-key");
        request.AddJsonBody(new
        {
            template_id = "your-template-id",
            data = new
            {
                url = "https://example.com"
            },
            export_type = "file" // "file" returns binary PDF; "json" returns a CDN URL
        });

        var response = client.Execute(request);
        File.WriteAllBytes("webpage.pdf", response.RawBytes);
    }
}

Implementação do IronPDF:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}

O método RenderUrlAsPdf do IronPDF captura a página completa, incluindo conteúdo renderizado por JavaScript. Para mais opções, consulte o link para a documentação em PDF .

Cabeçalhos e rodapés

Implementação do CraftMyPDF:

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

class Program
{
    static void Main()
    {
        var client = new RestClient("https://api.craftmypdf.com/v1/create");
        var request = new RestRequest(Method.POST);
        request.AddHeader("X-API-KEY", "your-api-key");
        request.AddJsonBody(new
        {
            template_id = "your-template-id",
            data = new
            {
                html = "<h1>Document Content</h1>",
                header = "<div>Page Header</div>",
                footer = "<div>Page {page} of {total_pages}</div>"
            }
        });
        
        var response = client.Execute(request);
        File.WriteAllBytes("document.pdf", response.RawBytes);
    }
}

Implementação do IronPDF:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Page Header"
        };
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page} of {total-pages}"
        };
        
        var pdf = renderer.RenderHtmlAsPdf("<h1>Document Content</h1>");
        pdf.SaveAs("document.pdf");
    }
}

IronPDF suporta tokens de espaço reservado como {page} e {total-pages} para numeração de páginas dinâmica. Para mais opções, consulte a documentação sobre cabeçalhos e rodapés .

Conversão de variáveis ​​de modelo

OCraftMyPDFutiliza marcadores de posição proprietários que precisam ser convertidos em interpolação de strings em C#:

Padrão CraftMyPDF:

//CraftMyPDFtemplate variables
request.AddJsonBody(new
{
    template_id = "invoice-template",
    data = new
    {
        customer = "John Doe",
        amount = "$1,000",
        items = invoiceItems
    }
});

Padrão IronPDF:

// C# string interpolation
var html = $@"
<html>
<body>
    <h1>Invoice</h1>
    <p>Customer: {customerName}</p>
    <p>Amount: {amount}</p>
    {GenerateItemsTable(invoiceItems)}
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(html);

Notas críticas sobre migração

Remover todo o código HTTP

A mudança mais significativa é a eliminação das dependências de rede. O IronPDF é executado localmente — sem RestClient, sem chamadas de API, sem tratamento de respostas:

//CraftMyPDF- HTTP required
var client = new RestClient("https://api.craftmypdf.com/v1/create");
var request = new RestRequest(Method.POST);
request.AddHeader("X-API-KEY", "your-api-key");
var response = await client.ExecuteAsync(request);

//IronPDF- no HTTP
var pdf = renderer.RenderHtmlAsPdf(html);

Remover código de limitação de taxa

OCraftMyPDFimpõe limites de taxa de API, exigindo lógica de repetição.IronPDF não tem limites:

//CraftMyPDF- needed to avoid 429 errors
await Task.Delay(100);
if (response.StatusCode == TooManyRequests) { /* retry */ }

//IronPDF- no limits, just generate
var pdf = renderer.RenderHtmlAsPdf(html);
// Remove all rate limit code!

Remover manipuladores de webhook

OCraftMyPDFutiliza webhooks assíncronos para o preenchimento automático de PDFs. O IronPDF é síncrono — o PDF fica pronto imediatamente:

//CraftMyPDF- webhook callback required
// POST with webhook_url, wait for callback

//IronPDF- PDF ready immediately
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// No callback needed!

Sincronizar por padrão

Remova os padrões async/await se eles forem necessários apenas para chamadas HTTP:

//CraftMyPDF- async required
var response = await client.ExecuteAsync(request);

//IronPDF- sync by default (async available if needed)
var pdf = renderer.RenderHtmlAsPdf(html);

Lista de verificação pós-migração

Após concluir a migração do código, verifique o seguinte:

  • Execute todos os testes de geração de PDF
  • Compare a qualidade da saída (o mecanismo Chromium do IronPDF renderiza com perfeição de pixels)
  • Medir a melhoria de desempenho (milissegundos vs. segundos)
  • Verifique se todos os modelos foram convertidos corretamente.
  • Teste o processamento em lote sem limites de taxa
  • Testar em todos os ambientes-alvo
  • Atualizar pipelines de CI/CD
  • Cancelar assinatura do CraftMyPDF
  • Remover a chave da API de secrets/config

Recursos adicionais


A migração doCraftMyPDFpara o IronPDF elimina dependências da nuvem, latência de rede, custos por PDF e aprisionamento a modelos específicos, ao mesmo tempo que oferece renderização Chromium perfeita em pixels e funciona offline. A transição de chamadas à API REST para invocações de métodos locais simplifica seu código e mantém os dados confidenciais dos documentos dentro da sua infraestrutura.

Observe: CraftMyPDF é uma marca registrada de seu respectivo proprietário. Este site não é afiliado, endossado ou patrocinado pelo CraftMyPDF. 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.
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 bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

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.

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 demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
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.