CraftMyPDF ou IronPDF: Qual biblioteca de geração de PDF para desenvolvedores C#?
IronPDF oferece conversão de HTML para PDF orientada por código com suporte total a CSS/JavaScript e licenciamento perpétuo a partir de $749, enquanto CraftMyPDF fornece design de template baseado em nuvem com integração JSON, mas requer assinaturas contínuas e dependências de API.
CraftMyPDF oferece um designer de template baseado em nuvem com integração de dados JSON, enquanto IronPDF oferece conversão de HTML para PDF orientada por código com suporte completo 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 .
O que é a Solução Base de 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 Características do 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 Eu Uso o 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?
Instale os pacotes System.Net.Http, RestSharp, e Newtonsoft.Json:
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. IronPDF usa renderização de HTML baseada em código, enquanto CraftMyPDF usa templates 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 Eu Crio PDFs com a API CraftMyPDF?
CraftMyPDF requer a criação de templates primeiro, depois a geração de PDFs pela fusão de dados.
Como faço para criar um modelo?
- Faça Login no Painel: 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 Templates (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 Custo 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 única a partir de $799
- 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 ($799) suporta desenvolvedores individuais em um projeto. A licença Professional ($1,199) cobre múltiplos projetos e desenvolvedores. A licença Enterprise ($2,399) atende equipes maiores com necessidades extensivas 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 utiliza 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. As assinaturas são gerenciadas 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 o CraftMyPdf oferece para Documentação e Suporte?
CraftMyPDF oferece documentação de 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 CraftMyPDF oferecem soluções de geração de PDF capazes com abordagens distintas. CraftMyPDF se destaca com seu designer de template visual e processamento baseado em nuvem, enquanto o IronPDF fornece 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 em $799 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, endossado ou patrocinado 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.



