Comparação entre IronPDF e ComPDFKit
IronPDF oferece conversão de HTML para PDF de código-fonte com suporte completo a CSS/JavaScript e licenciamento perpétuo a partir de $999, enquanto CraftMyPDF fornece design de modelo baseado em nuvem com integração JSON, mas requer inscrições contínuas e dependências de API.
CraftMyPDF oferece um designer de modelo baseado em nuvem e interface de arrastar e soltar com integração de dados JSON, enquanto IronPDF proporciona conversão de HTML para PDF baseando-se em código, com suporte total a CSS/JavaScript para desenvolvedores .NET que buscam controle total sobre a geração de documentos.
O PDF , ou Portable Document Format (Formato de Documento Portátil), é um formato de arquivo desenvolvido pela Adobe para troca de documentos. Ele preserva a formatação, as fontes e as imagens em todos os dispositivos, garantindo uma aparência consistente. Os PDFs oferecem recursos de segurança , interatividade e compressão , tornando-os ideais para o compartilhamento confiável de documentos .
As bibliotecas C# para PDF permitem que os desenvolvedores criem , modifiquem e extraiam conteúdo de PDFs programaticamente. Essas ferramentas oferecem suporte ao processamento de formulários , assinaturas digitais e implantação multiplataforma . Ao integrar bibliotecas de PDF, os desenvolvedores podem adicionar recursos de geração de documentos diretamente aos seus aplicativos, simplificando os fluxos de trabalho para criação , edição e gerenciamento de PDFs .
Este artigo compara duas abordagens diferentes para geração de PDFs: a biblioteca IronPDF em C# e a API Craftmypdf . A comparação examina funcionalidades, fornece exemplos de código e discute opções de licenciamento .
Qual é a Solução Baseada em API CraftMyPDF?

CraftMyPDF é uma API baseada na nuvem para criar PDFs através de modelos. Oferece um editor online do tipo "arrastar e soltar" para criar modelos reutilizáveis sem precisar programar. A plataforma gera PDFs combinando esses modelos com dados JSON, permitindo a geração de conteúdo dinâmico para documentos como faturas , relatórios e certificados.
Quais São as Principais Funcionalidades de CraftMyPDF?
-
Editor de arrastar e soltar: Designer visual de modelos que não requer conhecimento de programação.
-
Reutilização de modelos: Crie um design e utilize-o repetidamente com diferentes conjuntos de dados.
-
Integração de dados JSON: Combine dados dinâmicos com modelos por meio de JSON.
-
Formatação e expressões avançadas: Formate datas, números e moedas dinamicamente.
-
Integrações de API: A API REST é compatível com Zapier, Make.com e aplicativos personalizados.
-
Componentes preenchíveis: Crie formulários interativos com campos de texto e caixas de seleção.
- Segurança e Conformidade: Acesso seguro a PDFs com endpoints de API regionais e conformidade com o GDPR.
O que é o IronPDF?
IronPDF PDF Library para desenvolvedores .NET é uma biblioteca PDF completa para aplicações .NET . Escrito em C#, ele gera PDFs com qualidade de pixel perfeita a partir de HTML , CSS , JavaScript e imagens . O IronPDF simplifica os fluxos de trabalho em PDF, fornecendo amplas funcionalidades para criação, edição e gerenciamento em ambientes .NET .
Quais são os principais recursos do IronPDF?
-
Conversão de HTML para PDF: Converta HTML, CSS e JavaScript em PDFs com precisão perfeita em cada pixel .
-
URL para PDF: Gere PDFs a partir de qualquer URL , preservando o conteúdo e o estilo responsivo .
-
Imagem para PDF: Converta JPG, PNG, GIF, BMP e SVG em documentos PDF com suporte a TIFF de múltiplos quadros .
-
Preenchimento de formulários e extração de dados: Crie e preencha formulários PDF programaticamente com validação personalizada .
-
Assinaturas digitais e segurança: Adicione assinaturas digitais , senhas e permissões com suporte a HSM .
-
Edição de PDF: Adicionar, copiar ou excluir páginas . Mescle e divida PDFs com recursos de rotação de páginas .
-
Anotações e anexos: Adicione notas adesivas e incorpore anexos com metadados personalizados .
-
Cabeçalhos, rodapés e marcas d'água: Aplique cabeçalhos, rodapés e marcas d'água personalizados com modelos HTML .
-
Compatibilidade multiplataforma: Funciona no Windows , macOS , Linux , Docker , Azure e AWS .
-
Otimização de desempenho: suporte a multithreading e processamento assíncrono para geração de alto volume com processamento paralelo .
-
Documentação completa: Guias abrangentes , tutoriais e suporte técnico 24 horas por dia, 5 dias por semana .
- Sem dependências externas: Implantação de DLL única sem requisitos de software adicionais usando mecanismo de renderização nativo .
Como Faço para Criar um Aplicativo C# no Visual Studio?
Para criar um aplicativo de console em C#, é necessário ter o Visual Studio instalado no computador. Siga estes passos para configurar o projeto:
Como faço para abrir o Visual Studio?
Inicie o Visual Studio a partir do menu Iniciar ou do ícone na área de trabalho.
Como faço para criar um novo projeto?
- Clique em "Criar um novo projeto" na página inicial.
- Pesquise por "Aplicativo de console" ou selecione na lista de modelos.
Como escolho o modelo de projeto?
Selecione "Aplicativo de console (.NET Core)" ou "Aplicativo de console (.NET Framework)" de acordo com os requisitos. Para suporte ao .NET MAUI , escolha os modelos MAUI apropriados.
Como configuro meu projeto?
- Nome do projeto: Insira o nome do projeto
- Local: Escolha o diretório de salvamento
- Nome da solução: Normalmente corresponde ao nome do projeto.
- Clique em "Criar" para prosseguir.
Como faço para instalar o IronPDF?
O IronPDF oferece três métodos de instalação: Gerenciador de Pacotes NuGet , Console do Gerenciador de Pacotes e download direto. A biblioteca oferece suporte a implantações em Windows , macOS , Linux e na nuvem .
Como faço para usar o gerenciador de pacotes NuGet ?
No Visual Studio, clique com o botão direito do mouse em "Referências" ou "Dependências" no Explorador de Soluções. Selecione "Gerenciar Pacotes NuGet ", procure por "IronPDF" e clique em "Instalar".

Como faço para usar o console do Gerenciador de Pacotes NuGet ?
Abra Ferramentas > Gerenciador de Pacotes NuGet > Console do Gerenciador de Pacotes e execute:
Install-Package IronPdf
Como faço para baixar do site do NuGet ?
Acesse o site do NuGet , baixe o arquivo do pacote e adicione-o como uma fonte de pacote no Visual Studio. Para implantações em Docker , utilize configurações de contêiner específicas.
Para obter orientações detalhadas, consulte a visão geral da instalação e a configuração avançada do NuGet .
Como Faço para Usar CraftMyPDF?
Para integrar CraftMyPDF, crie uma conta, selecione um plano e obtenha credenciais de API.
Como faço para criar uma conta e selecionar o plano gratuito?
- Cadastre-se: Registre-se no site CraftMyPDF.
- Selecione o Plano Gratuito: Escolha o plano gratuito para desenvolvimento e testes.
- Obtenha a chave da API: Acesse a chave da API no painel de controle da sua conta.

Que bibliotecas preciso instalar?
Install System.Net.Http, RestSharp, and Newtonsoft.Json packages:
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using RestSharp;
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using RestSharp;
Imports System
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks
Imports RestSharp
Inicialize o cliente da API:
var client = new RestClient("___PROTECTED_URL_51___");
var request = new RestRequest(Method.Post);
string apiKey = "API Key"; // Replace with your actual API key
string templateId = "Template ID"; // Replace with your actual template ID
request.AddHeader("X-API-KEY", apiKey);
request.AddHeader("Content-Type", "application/json");
var client = new RestClient("___PROTECTED_URL_51___");
var request = new RestRequest(Method.Post);
string apiKey = "API Key"; // Replace with your actual API key
string templateId = "Template ID"; // Replace with your actual template ID
request.AddHeader("X-API-KEY", apiKey);
request.AddHeader("Content-Type", "application/json");
Dim client As New RestClient("___PROTECTED_URL_51___")
Dim request As New RestRequest(Method.Post)
Dim apiKey As String = "API Key" ' Replace with your actual API key
Dim templateId As String = "Template ID" ' Replace with your actual template ID
request.AddHeader("X-API-KEY", apiKey)
request.AddHeader("Content-Type", "application/json")
Como faço para criar PDFs?
Ambas as bibliotecas oferecem abordagens diferentes para a geração de PDFs. O IronPDF usa renderização HTML baseada em código, enquanto CraftMyPDF usa modelos visuais com vinculação de dados. O IronPDF também suporta conversões de Markdown para PDF e de XML para PDF .
Como faço para criar PDFs com o IronPDF?
Como faço para converter HTML em PDF?
Converta strings HTML diretamente para PDF com suporte completo a CSS e renderização em JavaScript :
using IronPdf;
public class PDFCreator
{
public void CreatePdfFromHtml()
{
var renderer = new ChromePdfRenderer();
// Define your HTML string
string htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a sample PDF document created from an HTML string.</p>";
// Render the HTML as a PDF document
var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
// Save the PDF document
pdfDocument.SaveAs("html_output.pdf");
}
}
using IronPdf;
public class PDFCreator
{
public void CreatePdfFromHtml()
{
var renderer = new ChromePdfRenderer();
// Define your HTML string
string htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a sample PDF document created from an HTML string.</p>";
// Render the HTML as a PDF document
var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
// Save the PDF document
pdfDocument.SaveAs("html_output.pdf");
}
}
Imports IronPdf
Public Class PDFCreator
Public Sub CreatePdfFromHtml()
Dim renderer = New ChromePdfRenderer()
' Define your HTML string
Dim htmlContent As String = "<h1>Hello, IronPDF!</h1><p>This is a sample PDF document created from an HTML string.</p>"
' Render the HTML as a PDF document
Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
' Save the PDF document
pdfDocument.SaveAs("html_output.pdf")
End Sub
End Class

Para mais exemplos, visite a página de exemplos de HTML para PDF . Os desenvolvedores também podem definir margens personalizadas , adicionar quebras de página e configurar o tamanho do papel .
Como faço para converter um URL em PDF?
Converter páginas web em PDFs preservando todo o estilo, incluindo conteúdo WebGL e CSS responsivo :
using IronPdf;
public class PDFCreator
{
public void CreatePdfFromUrl(string url)
{
// Initialize the ChromePdfRenderer
var renderer = new ChromePdfRenderer();
// Render the URL as a PDF document
var pdfDocument = renderer.RenderUrlAsPdf(url);
// Save the PDF document
pdfDocument.SaveAs("url_output.pdf");
}
}
using IronPdf;
public class PDFCreator
{
public void CreatePdfFromUrl(string url)
{
// Initialize the ChromePdfRenderer
var renderer = new ChromePdfRenderer();
// Render the URL as a PDF document
var pdfDocument = renderer.RenderUrlAsPdf(url);
// Save the PDF document
pdfDocument.SaveAs("url_output.pdf");
}
}
Imports IronPdf
Public Class PDFCreator
Public Sub CreatePdfFromUrl(url As String)
' Initialize the ChromePdfRenderer
Dim renderer = New ChromePdfRenderer()
' Render the URL as a PDF document
Dim pdfDocument = renderer.RenderUrlAsPdf(url)
' Save the PDF document
pdfDocument.SaveAs("url_output.pdf")
End Sub
End Class

Saiba mais sobre a conversão de URL para PDF . Para páginas autenticadas, consulte Logins de sites TLS e cabeçalhos de solicitação HTTP .
Como faço para converter um arquivo HTML em PDF?
Converta arquivos HTML locais em PDFs com suporte para tipos de mídia CSS e URLs base :
using IronPdf;
public class PDFCreator
{
public void CreatePdfFromHtmlFile(string filePath)
{
// Initialize the ChromePdfRenderer
var renderer = new ChromePdfRenderer();
// Render the HTML file as a PDF document
var pdfDocument = renderer.RenderHtmlFileAsPdf(filePath);
// Save the PDF document
pdfDocument.SaveAs("html_file_output.pdf");
}
}
using IronPdf;
public class PDFCreator
{
public void CreatePdfFromHtmlFile(string filePath)
{
// Initialize the ChromePdfRenderer
var renderer = new ChromePdfRenderer();
// Render the HTML file as a PDF document
var pdfDocument = renderer.RenderHtmlFileAsPdf(filePath);
// Save the PDF document
pdfDocument.SaveAs("html_file_output.pdf");
}
}
Imports IronPdf
Public Class PDFCreator
Public Sub CreatePdfFromHtmlFile(filePath As String)
' Initialize the ChromePdfRenderer
Dim renderer As New ChromePdfRenderer()
' Render the HTML file as a PDF document
Dim pdfDocument = renderer.RenderHtmlFileAsPdf(filePath)
' Save the PDF document
pdfDocument.SaveAs("html_file_output.pdf")
End Sub
End Class
Consulte o guia de conversão de arquivo HTML para PDF para obter detalhes. Para arquivos HTML ZIP , o IronPDF realiza a extração automaticamente.
Como Faço para Criar PDFs com a API CraftMyPDF?
CraftMyPDF requer a criação de modelos primeiro, depois a geração de PDFs fundindo dados.
Como faço para criar um modelo?
- Faça login no Dashboard: Acesse a conta
CraftMyPDF - Criar novo modelo: Use o editor de arrastar e soltar para criar o design.
- Salvar modelo: Obtenha o ID do modelo para chamadas de API.

Como faço para enviar uma solicitação para gerar um PDF?
Gere PDFs enviando dados JSON para o modelo:
using System;
using System.Net;
using System.Threading.Tasks;
using RestSharp;
class Program
{
static async Task Main(string[] args)
{
var client = new RestClient("___PROTECTED_URL_52___");
var request = new RestRequest(Method.Post);
string apiKey = "API-Key"; // Replace with your actual API key
string templateId = "Template-ID"; // Replace with your actual template ID
request.AddHeader("X-API-KEY", apiKey);
request.AddHeader("Content-Type", "application/json");
var body = new
{
data = new
{
invoice_number = "INV48321",
date = "2024-05-27",
due_date = "2024-06-27",
currency = "EUR",
discount = 10,
tax = 5,
company_name = "Tech Innovations Ltd",
email = "contact@techinnovations.com",
client = "Future Solutions GmbH",
client_address = "1234 Innovation Drive",
client_address2 = "Berlin",
client_address3 = "10115",
items = new[]
{
new { description = "Cloud Hosting Services", quantity = 12, unit_price = 75, total = 900 },
new { description = "Custom Web Application", quantity = 3, unit_price = 150, total = 450 },
new { description = "Technical Support", quantity = 15, unit_price = 30, total = 450 },
new { description = "Digital Marketing Campaign", quantity = 2, unit_price = 500, total = 1000 },
new { description = "SEO Optimization", quantity = 5, unit_price = 120, total = 600 }
},
gross_total = 3400
},
load_data_from = (string)null,
template_id = templateId,
version = 8,
export_type = "json",
expiration = 60,
output_file = "output.pdf",
is_cmyk = false,
image_resample_res = 600,
direct_download = 0,
cloud_storage = 1
};
request.AddJsonBody(body);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
if (response.IsSuccessful)
{
var content = response.Content;
dynamic result = Newtonsoft.Json.JsonConvert.DeserializeObject(content);
string fileUrl = result.file;
string localPath = "f:\\downloaded_output.pdf";
using (WebClient webClient = new WebClient())
{
webClient.DownloadFile(fileUrl, localPath);
}
Console.WriteLine($"PDF downloaded successfully to {localPath}");
}
else
{
Console.WriteLine($"Error: {response.Content}");
}
}
}
using System;
using System.Net;
using System.Threading.Tasks;
using RestSharp;
class Program
{
static async Task Main(string[] args)
{
var client = new RestClient("___PROTECTED_URL_52___");
var request = new RestRequest(Method.Post);
string apiKey = "API-Key"; // Replace with your actual API key
string templateId = "Template-ID"; // Replace with your actual template ID
request.AddHeader("X-API-KEY", apiKey);
request.AddHeader("Content-Type", "application/json");
var body = new
{
data = new
{
invoice_number = "INV48321",
date = "2024-05-27",
due_date = "2024-06-27",
currency = "EUR",
discount = 10,
tax = 5,
company_name = "Tech Innovations Ltd",
email = "contact@techinnovations.com",
client = "Future Solutions GmbH",
client_address = "1234 Innovation Drive",
client_address2 = "Berlin",
client_address3 = "10115",
items = new[]
{
new { description = "Cloud Hosting Services", quantity = 12, unit_price = 75, total = 900 },
new { description = "Custom Web Application", quantity = 3, unit_price = 150, total = 450 },
new { description = "Technical Support", quantity = 15, unit_price = 30, total = 450 },
new { description = "Digital Marketing Campaign", quantity = 2, unit_price = 500, total = 1000 },
new { description = "SEO Optimization", quantity = 5, unit_price = 120, total = 600 }
},
gross_total = 3400
},
load_data_from = (string)null,
template_id = templateId,
version = 8,
export_type = "json",
expiration = 60,
output_file = "output.pdf",
is_cmyk = false,
image_resample_res = 600,
direct_download = 0,
cloud_storage = 1
};
request.AddJsonBody(body);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
if (response.IsSuccessful)
{
var content = response.Content;
dynamic result = Newtonsoft.Json.JsonConvert.DeserializeObject(content);
string fileUrl = result.file;
string localPath = "f:\\downloaded_output.pdf";
using (WebClient webClient = new WebClient())
{
webClient.DownloadFile(fileUrl, localPath);
}
Console.WriteLine($"PDF downloaded successfully to {localPath}");
}
else
{
Console.WriteLine($"Error: {response.Content}");
}
}
}
Imports System
Imports System.Net
Imports System.Threading.Tasks
Imports RestSharp
Module Program
Async Function Main(args As String()) As Task
Dim client As New RestClient("___PROTECTED_URL_52___")
Dim request As New RestRequest(Method.Post)
Dim apiKey As String = "API-Key" ' Replace with your actual API key
Dim templateId As String = "Template-ID" ' Replace with your actual template ID
request.AddHeader("X-API-KEY", apiKey)
request.AddHeader("Content-Type", "application/json")
Dim body = New With {
.data = New With {
.invoice_number = "INV48321",
.date = "2024-05-27",
.due_date = "2024-06-27",
.currency = "EUR",
.discount = 10,
.tax = 5,
.company_name = "Tech Innovations Ltd",
.email = "contact@techinnovations.com",
.client = "Future Solutions GmbH",
.client_address = "1234 Innovation Drive",
.client_address2 = "Berlin",
.client_address3 = "10115",
.items = New Object() {
New With {.description = "Cloud Hosting Services", .quantity = 12, .unit_price = 75, .total = 900},
New With {.description = "Custom Web Application", .quantity = 3, .unit_price = 150, .total = 450},
New With {.description = "Technical Support", .quantity = 15, .unit_price = 30, .total = 450},
New With {.description = "Digital Marketing Campaign", .quantity = 2, .unit_price = 500, .total = 1000},
New With {.description = "SEO Optimization", .quantity = 5, .unit_price = 120, .total = 600}
},
.gross_total = 3400
},
.load_data_from = CType(Nothing, String),
.template_id = templateId,
.version = 8,
.export_type = "json",
.expiration = 60,
.output_file = "output.pdf",
.is_cmyk = False,
.image_resample_res = 600,
.direct_download = 0,
.cloud_storage = 1
}
request.AddJsonBody(body)
Dim response As RestResponse = Await client.ExecuteAsync(request)
Console.WriteLine(response.Content)
If response.IsSuccessful Then
Dim content = response.Content
Dim result = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Object)(content)
Dim fileUrl As String = result.file
Dim localPath As String = "f:\downloaded_output.pdf"
Using webClient As New WebClient()
webClient.DownloadFile(fileUrl, localPath)
End Using
Console.WriteLine($"PDF downloaded successfully to {localPath}")
Else
Console.WriteLine($"Error: {response.Content}")
End If
End Function
End Module

Saída em PDF gerada:

Como posso gerar faturas profissionais com Bootstrap?
O IronPDF renderiza frameworks modernos sem dependências externas. Este exemplo com Bootstrap 5 demonstra a geração profissional de faturas com design responsivo e CSS para impressão :
using IronPdf;
var renderer = new ChromePdfRenderer();
string professionalInvoice = @"
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<link href='___PROTECTED_URL_53___ rel='stylesheet'>
<style>
.invoice-header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; }
.invoice-table th { background: #f8f9fa; }
@media print { .invoice-box { page-break-inside: avoid; } }
</style>
</head>
<body>
<div class='container my-4'>
<div class='card shadow-lg invoice-box'>
<div class='invoice-header p-4'>
<div class='row align-items-center'>
<div class='col-md-8'>
<h1 class='mb-0'>INVOICE</h1>
<p class='mb-0 opacity-75'>Invoice #INV-2024-0427</p>
</div>
<div class='col-md-4 text-md-end'>
<h3 class='mb-0'>$3,400.00</h3>
<small class='opacity-75'>Due: June 27, 2024</small>
</div>
</div>
</div>
<div class='card-body p-4'>
<div class='row mb-4'>
<div class='col-md-6'>
<h6 class='text-primary text-uppercase mb-2'>From</h6>
<strong>Tech Innovations Ltd</strong><br>
contact@techinnovations.com
</div>
<div class='col-md-6 text-md-end'>
<h6 class='text-primary text-uppercase mb-2'>Bill To</h6>
<strong>Future Solutions GmbH</strong><br>
1234 Innovation Drive<br>
Berlin, 10115
</div>
</div>
<table class='table invoice-table'>
<thead>
<tr>
<th>Description</th>
<th class='text-center'>Qty</th>
<th class='text-end'>Unit Price</th>
<th class='text-end'>Total</th>
</tr>
</thead>
<tbody>
<tr>
<td>Cloud Hosting Services</td>
<td class='text-center'>12</td>
<td class='text-end'>€75.00</td>
<td class='text-end'>€900.00</td>
</tr>
<tr>
<td>Custom Web Application</td>
<td class='text-center'>3</td>
<td class='text-end'>€150.00</td>
<td class='text-end'>€450.00</td>
</tr>
<tr>
<td>Technical Support</td>
<td class='text-center'>15</td>
<td class='text-end'>€30.00</td>
<td class='text-end'>€450.00</td>
</tr>
<tr>
<td>Digital Marketing Campaign</td>
<td class='text-center'>2</td>
<td class='text-end'>€500.00</td>
<td class='text-end'>€1,000.00</td>
</tr>
<tr>
<td>SEO Optimization</td>
<td class='text-center'>5</td>
<td class='text-end'>€120.00</td>
<td class='text-end'>€600.00</td>
</tr>
</tbody>
</table>
<div class='row justify-content-end'>
<div class='col-md-4'>
<table class='table table-sm'>
<tr>
<td>Subtotal:</td>
<td class='text-end'><strong>€3,400.00</strong></td>
</tr>
<tr>
<td>Discount (10%):</td>
<td class='text-end text-success'>-€340.00</td>
</tr>
<tr>
<td>Tax (5%):</td>
<td class='text-end'>€153.00</td>
</tr>
<tr class='table-primary'>
<td><strong>Total Due:</strong></td>
<td class='text-end'><strong>€3,213.00</strong></td>
</tr>
</table>
</div>
</div>
<div class='alert alert-info mt-4'>
<strong>Payment Terms:</strong> Payment due within 30 days. Late payments may incur additional charges.
</div>
<div class='row mt-4 pt-3 border-top'>
<div class='col-md-6'>
<small class='text-muted'>Generated with IronPDF - No external APIs required</small>
</div>
<div class='col-md-6 text-md-end'>
<span class='badge bg-success'>PAID</span>
</div>
</div>
</div>
</div>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(professionalInvoice);
pdf.SaveAs("professional-invoice.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
string professionalInvoice = @"
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<link href='___PROTECTED_URL_53___ rel='stylesheet'>
<style>
.invoice-header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; }
.invoice-table th { background: #f8f9fa; }
@media print { .invoice-box { page-break-inside: avoid; } }
</style>
</head>
<body>
<div class='container my-4'>
<div class='card shadow-lg invoice-box'>
<div class='invoice-header p-4'>
<div class='row align-items-center'>
<div class='col-md-8'>
<h1 class='mb-0'>INVOICE</h1>
<p class='mb-0 opacity-75'>Invoice #INV-2024-0427</p>
</div>
<div class='col-md-4 text-md-end'>
<h3 class='mb-0'>$3,400.00</h3>
<small class='opacity-75'>Due: June 27, 2024</small>
</div>
</div>
</div>
<div class='card-body p-4'>
<div class='row mb-4'>
<div class='col-md-6'>
<h6 class='text-primary text-uppercase mb-2'>From</h6>
<strong>Tech Innovations Ltd</strong><br>
contact@techinnovations.com
</div>
<div class='col-md-6 text-md-end'>
<h6 class='text-primary text-uppercase mb-2'>Bill To</h6>
<strong>Future Solutions GmbH</strong><br>
1234 Innovation Drive<br>
Berlin, 10115
</div>
</div>
<table class='table invoice-table'>
<thead>
<tr>
<th>Description</th>
<th class='text-center'>Qty</th>
<th class='text-end'>Unit Price</th>
<th class='text-end'>Total</th>
</tr>
</thead>
<tbody>
<tr>
<td>Cloud Hosting Services</td>
<td class='text-center'>12</td>
<td class='text-end'>€75.00</td>
<td class='text-end'>€900.00</td>
</tr>
<tr>
<td>Custom Web Application</td>
<td class='text-center'>3</td>
<td class='text-end'>€150.00</td>
<td class='text-end'>€450.00</td>
</tr>
<tr>
<td>Technical Support</td>
<td class='text-center'>15</td>
<td class='text-end'>€30.00</td>
<td class='text-end'>€450.00</td>
</tr>
<tr>
<td>Digital Marketing Campaign</td>
<td class='text-center'>2</td>
<td class='text-end'>€500.00</td>
<td class='text-end'>€1,000.00</td>
</tr>
<tr>
<td>SEO Optimization</td>
<td class='text-center'>5</td>
<td class='text-end'>€120.00</td>
<td class='text-end'>€600.00</td>
</tr>
</tbody>
</table>
<div class='row justify-content-end'>
<div class='col-md-4'>
<table class='table table-sm'>
<tr>
<td>Subtotal:</td>
<td class='text-end'><strong>€3,400.00</strong></td>
</tr>
<tr>
<td>Discount (10%):</td>
<td class='text-end text-success'>-€340.00</td>
</tr>
<tr>
<td>Tax (5%):</td>
<td class='text-end'>€153.00</td>
</tr>
<tr class='table-primary'>
<td><strong>Total Due:</strong></td>
<td class='text-end'><strong>€3,213.00</strong></td>
</tr>
</table>
</div>
</div>
<div class='alert alert-info mt-4'>
<strong>Payment Terms:</strong> Payment due within 30 days. Late payments may incur additional charges.
</div>
<div class='row mt-4 pt-3 border-top'>
<div class='col-md-6'>
<small class='text-muted'>Generated with IronPDF - No external APIs required</small>
</div>
<div class='col-md-6 text-md-end'>
<span class='badge bg-success'>PAID</span>
</div>
</div>
</div>
</div>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(professionalInvoice);
pdf.SaveAs("professional-invoice.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim professionalInvoice As String = "
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<link href='___PROTECTED_URL_53___ rel='stylesheet'>
<style>
.invoice-header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; }
.invoice-table th { background: #f8f9fa; }
@media print { .invoice-box { page-break-inside: avoid; } }
</style>
</head>
<body>
<div class='container my-4'>
<div class='card shadow-lg invoice-box'>
<div class='invoice-header p-4'>
<div class='row align-items-center'>
<div class='col-md-8'>
<h1 class='mb-0'>INVOICE</h1>
<p class='mb-0 opacity-75'>Invoice #INV-2024-0427</p>
</div>
<div class='col-md-4 text-md-end'>
<h3 class='mb-0'>$3,400.00</h3>
<small class='opacity-75'>Due: June 27, 2024</small>
</div>
</div>
</div>
<div class='card-body p-4'>
<div class='row mb-4'>
<div class='col-md-6'>
<h6 class='text-primary text-uppercase mb-2'>From</h6>
<strong>Tech Innovations Ltd</strong><br>
contact@techinnovations.com
</div>
<div class='col-md-6 text-md-end'>
<h6 class='text-primary text-uppercase mb-2'>Bill To</h6>
<strong>Future Solutions GmbH</strong><br>
1234 Innovation Drive<br>
Berlin, 10115
</div>
</div>
<table class='table invoice-table'>
<thead>
<tr>
<th>Description</th>
<th class='text-center'>Qty</th>
<th class='text-end'>Unit Price</th>
<th class='text-end'>Total</th>
</tr>
</thead>
<tbody>
<tr>
<td>Cloud Hosting Services</td>
<td class='text-center'>12</td>
<td class='text-end'>€75.00</td>
<td class='text-end'>€900.00</td>
</tr>
<tr>
<td>Custom Web Application</td>
<td class='text-center'>3</td>
<td class='text-end'>€150.00</td>
<td class='text-end'>€450.00</td>
</tr>
<tr>
<td>Technical Support</td>
<td class='text-center'>15</td>
<td class='text-end'>€30.00</td>
<td class='text-end'>€450.00</td>
</tr>
<tr>
<td>Digital Marketing Campaign</td>
<td class='text-center'>2</td>
<td class='text-end'>€500.00</td>
<td class='text-end'>€1,000.00</td>
</tr>
<tr>
<td>SEO Optimization</td>
<td class='text-center'>5</td>
<td class='text-end'>€120.00</td>
<td class='text-end'>€600.00</td>
</tr>
</tbody>
</table>
<div class='row justify-content-end'>
<div class='col-md-4'>
<table class='table table-sm'>
<tr>
<td>Subtotal:</td>
<td class='text-end'><strong>€3,400.00</strong></td>
</tr>
<tr>
<td>Discount (10%):</td>
<td class='text-end text-success'>-€340.00</td>
</tr>
<tr>
<td>Tax (5%):</td>
<td class='text-end'>€153.00</td>
</tr>
<tr class='table-primary'>
<td><strong>Total Due:</strong></td>
<td class='text-end'><strong>€3,213.00</strong></td>
</tr>
</table>
</div>
</div>
<div class='alert alert-info mt-4'>
<strong>Payment Terms:</strong> Payment due within 30 days. Late payments may incur additional charges.
</div>
<div class='row mt-4 pt-3 border-top'>
<div class='col-md-6'>
<small class='text-muted'>Generated with IronPDF - No external APIs required</small>
</div>
<div class='col-md-6 text-md-end'>
<span class='badge bg-success'>PAID</span>
</div>
</div>
</div>
</div>
</div>
</body>
</html>"
Dim pdf = renderer.RenderHtmlAsPdf(professionalInvoice)
pdf.SaveAs("professional-invoice.pdf")
Resultado: Uma fatura em PDF profissional com cabeçalhos em gradiente Bootstrap 5, tabelas responsivas e resumos de cálculos. O IronPDF renderiza todos os gradientes CSS, estilos de tabela e classes utilitárias com precisão perfeita — sem chamadas de API externas, sem modelos, sem necessidade de conexão com a internet. Diferentemente da abordagem baseada em nuvem do CraftMyPDF, o IronPDF gera faturas instantaneamente em seu servidor, com controle total.
O que o código faz?
- Configure
RestClient: Inicialize o cliente com o endpoint de APICraftMyPDF - Adicionar cabeçalhos: Inclua a chave da API e o tipo de conteúdo para autenticação.
- Preparar o corpo da requisição: Criar um objeto JSON com dados de modelo e opções.
- Enviar solicitação: Executar chamada de API para gerar PDF
- Lidar com a resposta: Baixar o PDF gerado ou exibir mensagem de erro.
Quais são as principais diferenças para fundadores com perfil técnico?
Como se comparam as abordagens baseadas em templates e as abordagens "code-first"?
Baseado em Modelos (CraftMyPDF):
- Membros da equipe sem conhecimento técnico podem criar e modificar modelos.
- Os modelos são gerenciados centralmente no painel de controle na nuvem.
- Alterações nos modelos não exigem implantação de código.
- Limitado por restrições de design do modelo
- Ideal para documentos padronizados com layouts previsíveis.
Orientado por Código (IronPDF):
- Controle total sobre o layout do documento usando HTML e CSS
- O suporte a JavaScript permite gráficos e cálculos dinâmicos .
- Os modelos fazem parte da base de código com controle de versão.
- Flexibilidade de design ilimitada com qualquer tecnologia web
- Ideal para documentos complexos e dinâmicos que exigem lógica programática.
Para modelos Razor , o IronPDF oferece suporte nativo ao MVC Core , ao MVC Framework e ao Razor Pages .
Quais são as implicações de custo em diferentes escalas?
Estrutura de Custos CraftMyPDF:
- Plano gratuito: 50 chamadas de API por mês com limite de 3 modelos.
- Os planos pagos começam com taxas mensais mais altas.
- Os custos por PDF aumentam linearmente com o volume.
- Taxas de assinatura mensais/anuais recorrentes
- Custos adicionais para recursos premium
Estrutura de custos do IronPDF :
- Teste grátis para avaliação completa
- Licença perpétua uma única vez a partir de $999
- Sem custos por PDF nem limites de uso
- Inclui um ano de atualizações e suporte
- Opções de redistribuição OEM para produtos SaaS
Para aplicações que processam mais de 1.000 PDFs por mês, a licença perpétua do IronPDF oferece custos previsíveis sem taxas recorrentes. A calculadora de licenciamento ajuda a estimar os custos totais de propriedade. Considere atualizações e expansões para equipes em crescimento.
Quais são as diferenças nos fluxos de trabalho de desenvolvimento?
Fluxo de Trabalho CraftMyPDF:
- O designer cria um modelo na interface web.
- O desenvolvedor mapeia os campos JSON para o modelo.
- A integração da API requer configuração de autenticação.
- Os testes exigem chamadas à API e uso de créditos.
- As atualizações de modelos ocorrem fora da implantação do código.
Fluxo de trabalho do IronPDF :
- O desenvolvedor escreve o modelo HTML/CSS no código.
- Testes locais sem limites de API
- Os modelos são implantados com o código do aplicativo.
- O controle de versão rastreia todas as alterações.
- Integração de CI/CD para testes automatizados
A abordagem autossuficiente do IronPDF permite ciclos de iteração mais rápidos e desenvolvimento offline, o que é crucial para o desenvolvimento ágil. A biblioteca oferece suporte a opções personalizadas de registro e renderização para depuração.
E quanto à privacidade e conformidade dos dados?
Manipulação de Dados CraftMyPDF:
- Documentos processados em servidores na nuvem
- É necessária a transmissão de dados pela internet.
- Pontos finais regionais para conformidade
- Políticas de armazenamento de arquivos temporários
- Acordos de processamento de dados com terceiros
Manipulação de dados do IronPDF :
- O processamento local mantém os dados em nível local.
- Sem necessidade de chamadas de API externas ou internet
- Controle total sobre a segurança dos documentos
- Implantações em conformidade com HIPAA e GDPR
- Opções de criptografia para dados sensíveis
Para aplicações que lidam com dados sensíveis de clientes, o processamento local do IronPDF elimina as preocupações com a privacidade de terceiros. Assinaturas digitais e proteção por senha fornecem camadas adicionais de segurança. A biblioteca também oferece suporte aos padrões PDF/A e PDF/UA para fins de conformidade.
Com que rapidez posso adicionar novos tipos de documento?
Cronograma CraftMyPDF:
- Criação do modelo: 1 a 4 horas, dependendo da complexidade.
- Mapeamento e testes de campo: 1 a 2 horas
- Dependente da disponibilidade do designer
- Os fluxos de trabalho de aprovação de modelos podem causar atrasos.
- Limitado pelas capacidades do editor
Cronologia do IronPDF :
- Criação de modelos HTML: 30 minutos a 2 horas
- Utilize frameworks web existentes como o Bootstrap
- Reutilizar folhas de estilo CSS em vários documentos
- Teste localmente com feedback imediato
- Implementar novos tipos de documentos com atualizações regulares.
A abordagem "code-first" do IronPDF normalmente reduz o tempo de lançamento de novos tipos de documentos, especialmente quando se utilizam recursos e estruturas web existentes. A biblioteca oferece suporte a conversões de RTF para PDF , DOCX para PDF e Markdown para PDF , proporcionando maior flexibilidade.
Quais são as opções de licenciamento?

A IronPDF oferece licenças perpétuas com pagamento único. A licença Lite ($999) suporta desenvolvedores individuais em um projeto. A licença Professional ($1,499) cobre múltiplos projetos e desenvolvedores. A licença Enterprise ($2,999) atende equipes maiores com grandes necessidades de implantação. Cada licença inclui um ano de suporte e atualizações. Uma Licença de Redistribuição OEM permite a distribuição comercial. Está disponível um período de teste gratuito para avaliação. Veja as opções de licenciamento completas.
CraftMyPDF usa preços baseados em assinatura. O plano gratuito é adequado para desenvolvimento e testes com um número limitado de chamadas à API. Os planos pagos aumentam os limites de uso e adicionam recursos, adaptando-se às necessidades da empresa. Assinaturas são geridas através do painel CraftMyPDF.
Que documentação e suporte estão disponíveis?
O que o IronPDF oferece em termos de documentação e suporte?
O IronPDF fornece documentação completa, incluindo guias detalhados, exemplos e uma seção de Início Rápido . Os recursos abrangem desde o uso básico até configurações avançadas. Os canais de suporte incluem uma base de conhecimento, suporte por email e solicitações de suporte de engenharia. A equipe de suporte opera 24 horas por dia, 5 dias por semana , para oferecer assistência imediata. Os guias de resolução de problemas abordam questões comuns.
A documentação inclui referências de API , tutoriais e exemplos de código para todos os recursos. Os registros de alterações acompanham as atualizações e os marcos destacam os principais lançamentos. Para obter suporte à migração, consulte os guias que comparam Aspose , iText , Syncfusion e outros concorrentes .
O que CraftMyPdf Oferece para Documentação e Suporte?
CraftMyPDF oferece documentação da API detalhando endpoints, parâmetros e exemplos. Os guias abrangem a criação de modelos, solicitações de API e tratamento de respostas. O suporte está disponível por e-mail e em fóruns da comunidade para perguntas e esclarecimentos.
Qual solução em PDF devo escolher?
Tanto o IronPDF quanto o CraftMyPDF oferecem soluções capazes de geração de PDF com abordagens distintas. CraftMyPDF se destaca com seu designer de modelos visuais e processamento baseado em nuvem, enquanto o IronPDF proporciona controle programático completo através da renderização de HTML.
O IronPDF se destaca por seu extenso conjunto de recursos para atender a requisitos complexos de documentos. Ele converte HTML , URLs e arquivos em PDFs, além de oferecer suporte a recursos avançados como assinaturas digitais , gerenciamento de formulários e edição de documentos . A implantação autônoma, sem dependências externas, garante uma operação confiável em todas as plataformas .
Os modelos de licenciamento diferem significativamente. As licenças perpétuas do IronPDF começam a partir de $999 com um teste gratuito para avaliação. O pacote Iron Suite oferece nove produtos pelo preço de dois, proporcionando uma relação custo-benefício excepcional para todas as necessidades de gerenciamento de documentos.
Para desenvolvedores que necessitam de controle total sobre a geração de PDFs com suporte avançado a HTML/CSS , manipulação de documentos e custos previsíveis, o IronPDF oferece uma solução confiável. Sua extensa documentação , suporte ágil e opções flexíveis de implantação o tornam adequado para aplicações que vão desde a simples geração de documentos até fluxos de trabalho empresariais complexos.
CraftMyPDF é uma marca registrada de seu respectivo proprietário. Este site não é afiliado ou endossado por 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.Perguntas frequentes
Quais são as vantagens de usar uma biblioteca PDF em C# em vez de uma solução baseada em API?
Uma biblioteca PDF completa como o IronPDF oferece amplos recursos, integração perfeita com ambientes de desenvolvimento .NET, suporte robusto e opções de licenciamento econômicas, tornando-a uma escolha superior para o gerenciamento de documentos complexos.
Como posso converter conteúdo HTML em um documento PDF usando C#?
Você pode usar o IronPDF para converter conteúdo HTML em documentos PDF. Ele oferece suporte a HTML5 e CSS3, garantindo que o conteúdo da web seja renderizado corretamente nos PDFs gerados.
Quais são os principais recursos do IronPDF para geração de PDFs?
O IronPDF oferece assinaturas digitais, preenchimento de formulários, edição de PDFs, anotações e compatibilidade multiplataforma. Ele se destaca na conversão de HTML, URLs e imagens em PDFs com desempenho robusto e otimização.
Como o CraftMyPDF lida com o design de modelos PDF?
O CraftMyPDF oferece um editor online com recurso de arrastar e soltar que permite aos usuários criar modelos de PDF sem a necessidade de programação. Ele suporta a integração de dados JSON, possibilitando a criação de documentos PDF personalizados.
Quais opções de licenciamento estão disponíveis para ferramentas de PDF como o IronPDF?
O IronPDF oferece opções flexíveis de licenciamento, incluindo licenças Lite, Professional e Enterprise com pagamento único. Também oferece um período de teste gratuito para novos usuários explorarem seus recursos.
Como posso integrar uma API de geração de PDF em minha aplicação C#?
Para integrar uma API de geração de PDF como o CraftMyPDF, você precisa criar uma conta, selecionar um plano adequado, obter uma chave de API e usar bibliotecas como System.Net.Http e RestSharp para fazer chamadas à API.
Que recursos de suporte estão disponíveis para desenvolvedores que utilizam o IronPDF?
O IronPDF oferece documentação completa, tutoriais e suporte técnico 24 horas por dia, 5 dias por semana. Esses recursos ajudam os desenvolvedores a implementar e solucionar problemas da biblioteca em seus projetos de forma eficaz.
Como faço para instalar o IronPDF em uma aplicação C#?
O IronPDF pode ser instalado através do Gerenciador de Pacotes NuGet no Visual Studio, usando o Console do Gerenciador de Pacotes NuGet ou baixando o pacote diretamente do site do NuGet.
Como o IronPDF aprimora a segurança e a interatividade de documentos PDF?
O IronPDF oferece suporte a recursos como assinaturas digitais e gerenciamento de formulários, que aprimoram a segurança e a interatividade dos documentos, tornando-o adequado para o gerenciamento abrangente de PDFs.


