PDFBolt frente a IronPDF: Guía de comparación técnica
Cuando los desarrolladores .NET necesitan crear documentos PDF, se enfrentan a una decisión clave: utilizar servicios basados en la nube como PDFBoltu optar por bibliotecas autoalojadas como IronPDF. Este análisis examina ambas opciones en aspectos técnicos importantes para ayudar a los desarrolladores, arquitectos y responsables de la toma de decisiones a elegir la herramienta adecuada para sus necesidades de generación de PDF.
¿Qué es PDFBolt?
PDFBolt es un servicio de API REST basado en la nube para generar PDFs a través de servidores externos. Los desarrolladores envían contenido HTML o URLs mediante solicitudes HTTP POST a los endpoints de la API de PDFBolt, que procesan el contenido usando un navegador Chromium sin cabeza y devuelven el PDF generado.
La configuración basada en la nube ofrece una integración rápida: los desarrolladores obtienen una clave de API y realizan solicitudes HTTP usando el cliente HTTP estándar de cualquier lenguaje (por ejemplo, HttpClient en C#, requests en Python, fetch en Node.js). PDFBoltgestiona la infraestructura de renderizado, eliminando la necesidad de recursos locales de generación de PDF.
Sin embargo, esta comodidad tiene sus contrapartidas. Cada documento pasa por los servidores de PDFBolten la UE (Alemania). El nivel gratuito está limitado a 100 documentos por mes, con planes de suscripción pagados disponibles para mayores volúmenes. Además, la conectividad de red es obligatoria para todas las operaciones de generación de PDF.
¿Qué es IronPDF?
IronPDF es una biblioteca .NET autoalojada que genera archivos PDF localmente en sus servidores. La clase ChromePdfRenderer utiliza un motor Chromium integrado para convertir HTML, CSS y JavaScript en documentos PDF de alta calidad sin necesidad de llamadas a redes externas.
La biblioteca procesa todos los documentos dentro de la infraestructura de su aplicación. Ningún dato sale de sus servidores, y no hay límites de uso en la generación de documentos. Una vez obtenida la licencia, podrá generar un número ilimitado de PDF sin costes por documento.
IronPDF proporciona métodos síncronos y asíncronos, junto con amplias capacidades más allá de la generación básica, incluida la fusión de PDF, marcas de agua, extracción de texto y configuraciones de seguridad que las API en la nube normalmente no pueden proporcionar.
Comparación de arquitecturas
La principal diferencia entre PDFBolteIronPDFes el lugar donde se procesan los documentos. Esta distinción afecta a todos los aspectos, desde la privacidad de los datos hasta la fiabilidad operativa.
| Característica | PDFBolt | IronPDF |
|---|---|---|
| Hosting | Solo en la nube (servidores de la UE) | Autoalojado |
| Ubicación de los datos | Servidores externos (Alemania) | Sólo sus servidores |
| Privacidad | Documentos procesados externamente | Privacidad total de los datos: procesamiento local, sin transferencia a terceros |
| Límites de uso | Basado en cuotas (100-50,000/mes según el plan) | Ilimitado |
| Se requiere Internet | Sí, siempre | No |
| Latencia | Incluye ida y vuelta de red | Procesamiento local |
| Funcionamiento sin conexión | No es posible | Totalmente compatible |
| Integración en C# | API REST a través de HttpClient | Integración directa en bibliotecas |
| Modelo de costes | Suscripción mensual con cuotas de documentos | Compra única o suscripción |
Para aplicaciones que manejan documentos sensibles—contratos, registros médicos, datos financieros—donde importa si los datos salen de su infraestructura.IronPDFprocesa todo localmente, por lo que el contenido de los documentos no se transmite externamente. Esto simplifica el cumplimiento con GDPR, HIPAA y SOC2, ya que no hay un procesador de datos de terceros involucrado ni transferencia de datos que auditar.
Conversión básica de HTML a PDF
Ambas herramientas manejan la conversión de HTML a PDF, aunque con enfoques fundamentalmente diferentes: PDFBolta través de llamadas a la API REST yIronPDFa través de una biblioteca de C#.
Enfoque de conversión de HTML a PDF de PDFBolt:
// REST API: requires an API key from pdfbolt.com
using System;
using System.Net.Http;
using System.Net.Http.Json;
using System.IO;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var client = new HttpClient();
client.DefaultRequestHeaders.Add("API-KEY", "YOUR-API-KEY");
var html = "<html><body><h1>Hello World</h1></body></html>";
var base64Html = Convert.ToBase64String(Encoding.UTF8.GetBytes(html));
var response = await client.PostAsJsonAsync(
"https://api.pdfbolt.com/v1/direct",
new { html = base64Html });
var pdfBytes = await response.Content.ReadAsByteArrayAsync();
File.WriteAllBytes("output.pdf", pdfBytes);
}
}
// REST API: requires an API key from pdfbolt.com
using System;
using System.Net.Http;
using System.Net.Http.Json;
using System.IO;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var client = new HttpClient();
client.DefaultRequestHeaders.Add("API-KEY", "YOUR-API-KEY");
var html = "<html><body><h1>Hello World</h1></body></html>";
var base64Html = Convert.ToBase64String(Encoding.UTF8.GetBytes(html));
var response = await client.PostAsJsonAsync(
"https://api.pdfbolt.com/v1/direct",
new { html = base64Html });
var pdfBytes = await response.Content.ReadAsByteArrayAsync();
File.WriteAllBytes("output.pdf", pdfBytes);
}
}
Imports System
Imports System.Net.Http
Imports System.Net.Http.Json
Imports System.IO
Imports System.Text
Imports System.Threading.Tasks
Module Program
Async Function Main() As Task
Dim client As New HttpClient()
client.DefaultRequestHeaders.Add("API-KEY", "YOUR-API-KEY")
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim base64Html As String = Convert.ToBase64String(Encoding.UTF8.GetBytes(html))
Dim response = Await client.PostAsJsonAsync(
"https://api.pdfbolt.com/v1/direct",
New With {.html = base64Html})
Dim pdfBytes = Await response.Content.ReadAsByteArrayAsync()
File.WriteAllBytes("output.pdf", pdfBytes)
End Function
End Module
Enfoque HTML a PDF de IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System.IO
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
El endpoint directo de la API de PDFBoltdevuelve datos binarios en bruto de PDF en el cuerpo de respuesta HTTP, que se pueden guardar con File.WriteAllBytes(). El RenderHtmlAsPdf() deIronPDFdevuelve un objeto PdfDocument con métodos convenientes como SaveAs(), además de propiedades como BinaryData y Stream para un manejo alternativo de la salida.
El proceso de conversión de HTML a PDF enIronPDFse ejecuta de forma totalmente local, sin que el viaje de ida y vuelta por la red añada latencia a cada conversión.
Conversión de URL a PDF
La conversión de páginas web a PDF sigue patrones similares, con diferencias notables en la denominación y el procesamiento de los métodos.
Enfoque de conversión de URL a PDF de PDFBolt:
// REST API: requires an API key from pdfbolt.com
using System.Net.Http;
using System.Net.Http.Json;
using System.IO;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var client = new HttpClient();
client.DefaultRequestHeaders.Add("API-KEY", "YOUR-API-KEY");
var response = await client.PostAsJsonAsync(
"https://api.pdfbolt.com/v1/direct",
new { url = "https://www.example.com" });
var pdfBytes = await response.Content.ReadAsByteArrayAsync();
File.WriteAllBytes("webpage.pdf", pdfBytes);
}
}
// REST API: requires an API key from pdfbolt.com
using System.Net.Http;
using System.Net.Http.Json;
using System.IO;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var client = new HttpClient();
client.DefaultRequestHeaders.Add("API-KEY", "YOUR-API-KEY");
var response = await client.PostAsJsonAsync(
"https://api.pdfbolt.com/v1/direct",
new { url = "https://www.example.com" });
var pdfBytes = await response.Content.ReadAsByteArrayAsync();
File.WriteAllBytes("webpage.pdf", pdfBytes);
}
}
Imports System.Net.Http
Imports System.Net.Http.Json
Imports System.IO
Imports System.Threading.Tasks
Module Program
Async Function Main() As Task
Dim client As New HttpClient()
client.DefaultRequestHeaders.Add("API-KEY", "YOUR-API-KEY")
Dim response = Await client.PostAsJsonAsync(
"https://api.pdfbolt.com/v1/direct",
New With {.url = "https://www.example.com"})
Dim pdfBytes = Await response.Content.ReadAsByteArrayAsync()
File.WriteAllBytes("webpage.pdf", pdfBytes)
End Function
End Module
Enfoque de URL a PDF de IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Class
IronPDF proporciona un método RenderUrlAsPdf dedicado que indica claramente la operación que se está realizando. El objeto PdfDocument resultante ofrece la misma interfaz rica para guardar, acceder a datos binarios o una mayor manipulación.
Tamaño de página y márgenes personalizados
Los documentos profesionales suelen requerir dimensiones de página y configuraciones de márgenes específicas. Ambas herramientas admiten estas personalizaciones con diferentes patrones de configuración.
Configuración de la página PDFBolt:
// REST API: requires an API key from pdfbolt.com
using System;
using System.Net.Http;
using System.Net.Http.Json;
using System.IO;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var client = new HttpClient();
client.DefaultRequestHeaders.Add("API-KEY", "YOUR-API-KEY");
var html = File.ReadAllText("input.html");
var base64Html = Convert.ToBase64String(Encoding.UTF8.GetBytes(html));
var response = await client.PostAsJsonAsync(
"https://api.pdfbolt.com/v1/direct",
new
{
html = base64Html,
format = "A4",
margin = new { top = "20mm", bottom = "20mm" }
});
var pdfBytes = await response.Content.ReadAsByteArrayAsync();
File.WriteAllBytes("output.pdf", pdfBytes);
}
}
// REST API: requires an API key from pdfbolt.com
using System;
using System.Net.Http;
using System.Net.Http.Json;
using System.IO;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var client = new HttpClient();
client.DefaultRequestHeaders.Add("API-KEY", "YOUR-API-KEY");
var html = File.ReadAllText("input.html");
var base64Html = Convert.ToBase64String(Encoding.UTF8.GetBytes(html));
var response = await client.PostAsJsonAsync(
"https://api.pdfbolt.com/v1/direct",
new
{
html = base64Html,
format = "A4",
margin = new { top = "20mm", bottom = "20mm" }
});
var pdfBytes = await response.Content.ReadAsByteArrayAsync();
File.WriteAllBytes("output.pdf", pdfBytes);
}
}
Imports System
Imports System.Net.Http
Imports System.Net.Http.Json
Imports System.IO
Imports System.Text
Imports System.Threading.Tasks
Module Program
Async Function Main() As Task
Dim client As New HttpClient()
client.DefaultRequestHeaders.Add("API-KEY", "YOUR-API-KEY")
Dim html As String = File.ReadAllText("input.html")
Dim base64Html As String = Convert.ToBase64String(Encoding.UTF8.GetBytes(html))
Dim response As HttpResponseMessage = Await client.PostAsJsonAsync(
"https://api.pdfbolt.com/v1/direct",
New With {
.html = base64Html,
.format = "A4",
.margin = New With {.top = "20mm", .bottom = "20mm"}
})
Dim pdfBytes As Byte() = Await response.Content.ReadAsByteArrayAsync()
File.WriteAllBytes("output.pdf", pdfBytes)
End Function
End Module
Configuración de páginas IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
var html = File.ReadAllText("input.html");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
var html = File.ReadAllText("input.html");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System.IO
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
Dim html = File.ReadAllText("input.html")
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
PDFBolt acepta configuraciones como parámetros JSON en el cuerpo de la solicitud API (format, margin).IronPDFcentraliza toda la configuración a través de la propiedad RenderingOptions, haciendo que los ajustes se puedan encontrar a través del autocompletado del IDE.
PDFBolt admite márgenes en múltiples unidades (px, in, cm, mm), mientras queIronPDFexpresa márgenes en milímetros. Ambos admiten tamaños de papel estándar: PDFBolta través del parámetro de cadena format (por ejemplo, "A4"), eIronPDFa través del enum PdfPaperSize.
Referencia de mapeo de API
Para equipos que consideran un cambio de PDFBolta IronPDF, entender los mapeos de API ayuda a estimar el esfuerzo. Tenga en cuenta que PDFBoltutiliza parámetros API REST (campos JSON), mientras queIronPDFutiliza clases y métodos de C#.
Mapeos de Operación Central
| PDFBolt(API REST) | IronPDF(Biblioteca C#) |
|---|---|
POST /v1/direct con {"html": "<base64>"} |
renderer.RenderHtmlAsPdf(html) |
POST /v1/direct con {"url": "... |
renderer.RenderUrlAsPdf(url) |
| Cuerpo de la respuesta (bytes de PDF en bruto) | pdf.SaveAs(path) |
"isEncoded": true (respuesta Base64) |
pdf.BinaryData |
Mapeos de Parámetros de Configuración
| PDFBolt(parámetro JSON) | IronPDF(propiedad C#) |
|---|---|
"format": "A4" |
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4 |
"margin": {"top": "20mm"} |
renderer.RenderingOptions.MarginTop = 20 |
"margin": {"bottom": "20mm"} |
renderer.RenderingOptions.MarginBottom = 20 |
"margin": {"left": "15mm"} |
renderer.RenderingOptions.MarginLeft = 15 |
"margin": {"right": "15mm"} |
renderer.RenderingOptions.MarginRight = 15 |
Mapeos de Contenido Dinámico de Encabezado/Pie
Ambas herramientas admiten encabezados y pies de página basados en HTML con contenido dinámico, utilizando diferentes sintaxis:
| PDFBolt(clase CSS en HTML) | IronPDF(placeholders) | Objetivo |
|---|---|---|
<span class="pageNumber"></span> |
{page} |
Número de página actual |
<span class="totalPages"></span> |
{total-pages} |
Número total de páginas |
<span class="date"></span> |
{date} |
Fecha actual |
<span class="title"></span> |
{html-title} |
Título del documento |
<span class="url"></span> |
{url} |
URL de la página |
Tanto PDFBoltcomoIronPDFadmiten encabezados y pies de página basados en HTML con estilo CSS. Los parámetros headerTemplate y footerTemplate de PDFBoltaceptan HTML codificado en Base64, mientras queIronPDFusa cadenas HTML directamente en sus opciones de renderización.
Comparación de disponibilidad de funciones
Más allá de la conversión básica de HTML a PDF, las herramientas difieren significativamente en las capacidades disponibles.
| Característica | PDFBolt | IronPDF |
|---|---|---|
| HTML a PDF | ✓ | ✓ |
| URL a PDF | ✓ | ✓ |
| Encabezados/pies de página | ✓(HTML) | ✓(HTML) |
| Números de página | ✓ | ✓ |
| Tamaños de página personalizados | ✓ | ✓ |
| Márgenes | ✓ | ✓ |
| Fusión de PDF | ✗ | ✓ |
| División de PDF | ✗ | ✓ |
| Marcas de agua | ✗ | ✓ |
| Protección por contraseña | ✗ | ✓ |
| Extracción de Texto | ✗ | ✓ |
| PDF a imágenes | ✗ | ✓ |
| Relleno de formularios | ✗ | ✓ |
| Firmas digitales | ✗ | ✓ |
| Operación offline | ✗ | ✓ |
| Procesamiento ilimitado | Basado en cuotas (hasta 50,000/mes) | Ilimitado |
IronPDF proporciona amplias funciones de manipulación de PDF, como la fusión, la división, marcas de agua y la configuración de seguridad, que las API en la nube no suelen ofrecer debido a la naturaleza sin estado de las solicitudes de API.
Privacidad de datos y conformidad
La diferencia arquitectónica crea características de gestión de datos fundamentalmente distintas:
Flujo de datos de PDFBolt:
- Su aplicación envía HTML/URL a los servidores de PDFBoltbasados en la UE (Alemania)
- PDFBoltprocesa el documento utilizando su infraestructura en la nube
- Devoluciones en PDF generadas a través de la red
- El contenido del documento se transmite a y se procesa en servidores externos
Flujo de datos de IronPDF:
- Su aplicación procesa HTML/URL localmente
- El motor Chromium renderiza el PDF en proceso
- Los datos PDF nunca salen de sus servidores
- No hay procesador de datos de terceros involucrado—no se requiere negociación de DPA
Con IronPDF, los documentos que contienen información personal identificable, información de salud protegida o datos comerciales confidenciales nunca abandonan su infraestructura. La biblioteca también incluye funciones de seguridad integradas que apoyan flujos de trabajo de cumplimiento: protección mediante contraseña y cifrado (hasta 256 bits AES), firmas digitales con certificados PFX/P12 y soporte HSM, redacción de texto para la eliminación permanente de PII, y cumplimiento de PDF/A para requisitos de archivo a largo plazo. Para entornos aislados,IronPDFopera sin conexión a Internet.
Cuándo los equipos consideran cambiar de PDFBolta IronPDF
Varios factores llevan a los equipos a evaluarIronPDFcomo alternativa a PDFBolt:
Requisitos de privacidad de datos: Las organizaciones sujetas a GDPR, HIPAA o políticas internas de gobernanza de datos pueden requerir que los documentos nunca abandonen su infraestructura. El modelo de procesamiento local deIronPDFsatisface esto por diseño: no se transmiten datos externamente, y las funciones de cifrado y redacción integradas apoyan flujos de trabajo de cumplimiento directamente.
Crecimiento del volumen de uso: El nivel gratuito de PDFBoltestá limitado a 100 documentos mensuales (las solicitudes más allá de eso se bloquean, no se facturan). Los planes pagos varían desde $19/mes (2,000 documentos) hasta $249/mes (50,000 documentos), con exceso optativo en los niveles pagados.IronPDFno tiene cuotas de documentos ni medición: una vez con licencia, la generación es ilimitada.
Preocupaciones de fiabilidad de la red: Las API de la nube requieren conectividad de red para cada operación. Las aplicaciones desplegadas en entornos con conectividad intermitente, o aquellas que requieren alta disponibilidad, se benefician de un procesamiento local que sigue funcionando independientemente del estado de la red.
Sensibilidad a la latencia: Cada conversión de PDFBoltincluye el tiempo de ida y vuelta de red además del tiempo de renderización.IronPDFprocesa documentos localmente, evitando completamente la sobrecarga de red.
Requisitos de características: Cuando las aplicaciones necesitan fusión de PDF, marcas de agua, extracción de texto o ajustes de seguridad, las API en la nube a menudo no pueden proporcionar estas capacidades. El amplio conjunto de funciones deIronPDFsatisface estas necesidades sin servicios adicionales.
Gestión de claves de API: Las claves de API en la nube requieren prácticas de almacenamiento y rotación seguras, ya que otorgan acceso a un servicio facturable. El modelo de clave de licencia deIronPDFautentica localmente sin implicaciones de facturación por uso.
Comparación de instalaciones
Configuración de PDFBolt: PDFBolt no requiere instalación de paquetes—es una API REST. Los desarrolladores se registran en pdfbolt.com, obtienen una clave de API y realizan solicitudes HTTP usando el cliente HTTP estándar de su lenguaje:
var client = new HttpClient();
client.DefaultRequestHeaders.Add("API-KEY", "YOUR-API-KEY");
var client = new HttpClient();
client.DefaultRequestHeaders.Add("API-KEY", "YOUR-API-KEY");
Dim client As New HttpClient()
client.DefaultRequestHeaders.Add("API-KEY", "YOUR-API-KEY")
Instalación de IronPDF:
Install-Package IronPdf
Install-Package IronPdf
IronPDF requiere la configuración de una clave de licencia al iniciar la aplicación:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
PDFBolt es una API REST independiente del lenguaje accesible desde cualquier plataforma (C#, Node.js, Python, Java, Go, PHP, Rust, y más).IronPDFes una biblioteca .NET que soporta .NET Framework y versiones modernas de .NET, compatible con aplicaciones dirigidas a .NET 10 y C# 14.
Consideraciones sobre Async vs Sync
La arquitectura basada en la nube de PDFBoltutiliza patrones HTTP asincrónicos para operaciones de red. PDFBoltofrece tres tipos de endpoints: directo (respuesta binaria síncrona), síncrono (JSON sincrónico con URL de descarga), y asíncrono (basado en webhook):
// PDFBoltREST API pattern - async HTTP call
var client = new HttpClient();
client.DefaultRequestHeaders.Add("API-KEY", "YOUR-API-KEY");
var response = await client.PostAsJsonAsync(
"https://api.pdfbolt.com/v1/direct",
new { html = base64Html });
var pdfBytes = await response.Content.ReadAsByteArrayAsync();
// PDFBoltREST API pattern - async HTTP call
var client = new HttpClient();
client.DefaultRequestHeaders.Add("API-KEY", "YOUR-API-KEY");
var response = await client.PostAsJsonAsync(
"https://api.pdfbolt.com/v1/direct",
new { html = base64Html });
var pdfBytes = await response.Content.ReadAsByteArrayAsync();
Imports System.Net.Http
Imports System.Net.Http.Headers
Imports System.Threading.Tasks
' PDFBoltREST API pattern - async HTTP call
Dim client As New HttpClient()
client.DefaultRequestHeaders.Add("API-KEY", "YOUR-API-KEY")
Dim response As HttpResponseMessage = Await client.PostAsJsonAsync(
"https://api.pdfbolt.com/v1/direct",
New With {.html = base64Html})
Dim pdfBytes As Byte() = Await response.Content.ReadAsByteArrayAsync()
IronPDF proporciona métodos síncronos por defecto, ya que el procesamiento local no requiere async:
//IronPDFlocal pattern - sync by default
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
//IronPDFlocal pattern - sync by default
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
'IronPDFlocal pattern - sync by default
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
Para las aplicaciones que se benefician de los patrones asíncronos,IronPDFtambién proporciona variantes de métodos asíncronos:
//IronPDFasync option
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
//IronPDFasync option
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
Características de rendimiento
El procesamiento local versus en la nube crea perfiles de rendimiento diferentes:
| Métrica | PDFBolt | IronPDF |
|---|---|---|
| Procesamiento | Renderización en la nube + transferencia de red | Renderización local |
| Dependencia de la red | Cada solicitud requiere conectividad | Ninguna |
| Procesamiento por lotes | Limitado por tarifa (20-150 solicitudes/minuto según el plan) | Sin límites de tarifa |
| Solicitudes concurrentes | 1-20 dependiendo del plan | Limitado por recursos del servidor |
| Operación offline | No es posible | Totalmente compatible |
El motor Chromium incrustado deIronPDFtiene sobrecarga de inicialización en el primer uso, pero las renderizaciones posteriores evitan la sobrecarga de red inherente en las llamadas a API en la nube. El rendimiento de PDFBoltdepende de las condiciones de la red, la complejidad del documento y la carga actual del servidor.
Tomar la decisión
La elección entre PDFBoltyIronPDFdepende de sus necesidades específicas:
Considere PDFBoltsi: Necesita una integración rápida para un prototipo, sus volúmenes de documentos se ajustan a los niveles de suscripción de PDFBolt, se siente cómodo con el procesamiento de documentos basado en la nube y la conectividad de red es confiable.
ConsidereIronPDFsi: Necesita procesar datos locales por motivos de privacidad o cumplimiento de normativas, genera más de 100 documentos al mes, necesita manipular PDF más allá de la generación (fusión, marca de agua, seguridad), necesita capacidad de funcionamiento sin conexión o la latencia es importante para la experiencia del usuario.
Para los equipos que creen aplicaciones de producción en 2025 y planifiquen para 2026, la arquitectura autoalojada deIronPDFofrece una independencia operativa y unas capacidades integrales que las API en la nube no pueden igualar.
Introducción a IronPDF
Para evaluarIronPDFpara sus necesidades de generación de PDF:
- Instale el paquete NuGet de IronPDF:
Install-Package IronPdf - Revise el tutorial HTML a PDF para conocer los patrones básicos de conversión
- Explorar Conversión de URL a PDF para la captura de páginas web
- Consulte la sección tutoriales para ver ejemplos completos
La documentación de IronPDF proporciona una guía detallada para escenarios comunes, y la referencia de API documenta todas las clases y métodos disponibles.