Cómo migrar de PDFBolt a IronPDF en C#
Migrar de PDFBolta IronPDF: Guía completa de migración a C
La migración de PDFBoltaIronPDFtraslada su flujo de trabajo PDF .NET de un servicio SaaS sólo en la nube con procesamiento externo de documentos a una biblioteca autoalojada con total privacidad de datos y generación local ilimitada. Esta guía proporciona una ruta de migración completa, paso a paso, que elimina las dependencias de la red, los límites de uso y la transmisión externa de datos, a la vez que se obtiene acceso a las funciones de manipulación de PDF que PDFBoltno puede proporcionar.
Por qué migrar de PDFBolta IronPDF
El problema de la nube
PDFBolt es una plataforma SaaS en la nube que procesa sus documentos en servidores externos. Aunque resulta práctica para prototipos rápidos, esta arquitectura plantea retos importantes para las aplicaciones de producción:
Procesamiento solo en la nube: Todos los documentos pasan por servidores externos; no hay ninguna opción de autoalojamiento disponible, lo que podría disuadir a las empresas que necesitan más control sobre sus datos y procesos.
Riesgos relacionados con la privacidad de los datos: Los documentos confidenciales (contratos, historiales médicos, datos financieros) deben transmitirse al exterior. Las empresas que trabajan con información sensible tendrán preocupaciones legítimas.
Límites de uso: El nivel gratuito tiene un límite de 100 documentos al mes, lo que podría no ser suficiente para las grandes empresas. Los precios de pago por documento se acumulan rápidamente para las cargas de trabajo de producción.
Dependencia de la red: Los cortes de Internet o la inactividad de PDFBoltsuponen la interrupción total de la generación de PDF.
Latencia: La ida y vuelta en red añade segundos a cada conversión en comparación con el procesamiento local.
Cumplimiento de normativas: Las auditorías GDPR, HIPAA y SOC2 se complican por el procesamiento externo de documentos.
Seguridad de las claves de API: Las claves de API filtradas pueden dar lugar a un uso no autorizado facturado a su cuenta.
- Vendor Lock-in: Su aplicación falla si PDFBoltcambia los términos o cierra.
Comparación entre PDFBolte IronPDF
| Consulte | PDFBolt | IronPDF |
|---|---|---|
| Ubicación de los datos | Servidores externos | Sólo sus servidores |
| Límites de uso | 100 gratis, luego por documento | Ilimitado |
| Se requiere Internet | Sí, siempre | No |
| Latencia | Red de ida y vuelta | Milisegundos |
| Cumplimiento | Complejo (procesamiento externo) | Simple (procesamiento local) |
| Modelo de costes | Por documento | Una sola vez o anual |
| Funcionamiento sin conexión | Imposible | Totalmente compatible |
| Riesgos clave de la API | Filtrado = facturado | Clave de licencia, sin riesgo de facturación |
Para los equipos que planean la adopción de .NET 10 y C# 14 hasta 2025 y 2026,IronPDFproporciona una base autoalojada que garantiza la total privacidad de los datos y elimina la dependencia de servicios externos en la nube.
Antes de empezar
Prerrequisitos
- <Entorno .NET: .NET Framework 4.6.2+ o .NET Core 3.1+ / .NET 5/6/7/8/9+
- Acceso a NuGet: Capacidad para instalar paquetes NuGet
- Licencia IronPDF: Obtenga su clave de licencia en ironpdf.com
Cambios en el paquete NuGet
# Remove PDFBolt
dotnet remove package PDFBolt
# Install IronPDF
dotnet add package IronPdf# Remove PDFBolt
dotnet remove package PDFBolt
# Install IronPDF
dotnet add package IronPdfConfiguración de licencias
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";IRON VB CONVERTER ERROR developers@ironsoftware.comIdentificar el uso de PDFBolt
# Find all PDFBoltreferences
grep -r "PDFBolt\|HtmlToPdfConverter\|ConvertHtmlString\|ConvertUrl" --include="*.cs" .
# Find API key references
grep -r "PDFBOLT\|ApiKey" --include="*.cs" --include="*.json" --include="*.config" .# Find all PDFBoltreferences
grep -r "PDFBolt\|HtmlToPdfConverter\|ConvertHtmlString\|ConvertUrl" --include="*.cs" .
# Find API key references
grep -r "PDFBOLT\|ApiKey" --include="*.cs" --include="*.json" --include="*.config" .Referencia completa de la API
Core Class Mappings
| PDFBolt | IronPDF | Notas |
|---|---|---|
nuevo HtmlToPdfConverter() | <código>new ChromePdfRenderer()</código | Renderizador principal |
| <código>TamañoDePágina</código | <código>TamañoDelPapel</código | Enum para tamaños de papel |
| (devuelve byte[])_ | Documento PDF | Documento objeto enriquecido |
Métodos de conversión
| PDFBolt | IronPDF | Notas |
|---|---|---|
converter.ConvertHtmlString(html) | renderer.RenderHtmlAsPdf(html) | Devuelve PdfDocument |
| <código>converter.ConvertUrl(url)</código | <código>renderer.RenderUrlAsPdf(url)</código | Devuelve PdfDocument |
Métodos de salida
| PDFBolt | IronPDF | Notas |
|---|---|---|
| <código>File.WriteAllBytes(path, pdf)</código | <código>pdf.SaveAs(ruta)</código | Método de guardado directo |
| (el pdf es byte[])(pdf is byte[]) | <código>pdf.BinaryData</código | Obtener matriz de bytes |
| (flujo manual)_ | <código>pdf.Stream</código | Propiedad |
Configuración de páginas
| PDFBolt | IronPDF | Notas |
|---|---|---|
converter.PageSize = PageSize.A4 | renderer.RenderingOptions.PaperSize = PdfPaperSize.A4 | Enumeración del tamaño del papel |
converter.MarginTop = 20 | renderer.RenderingOptions.MarginTop = 20 | En milímetros |
converter.MarginBottom = 20 | renderer.RenderingOptions.MarginBottom = 20 | En milímetros |
converter.MarginLeft = 15 | renderer.RenderingOptions.MarginLeft = 15 | En milímetros |
converter.MarginRight = 15 | <código>renderer.RenderingOptions.MarginRight = 15</código | En milímetros |
Mapas de marcador de posición de encabezado/pie
| PDFBolt | IronPDF | Notas |
|---|---|---|
| <código>{númeroDePágina}</código | {page} | Página actual |
{totalPáginas} | {total de páginas} | Total de páginas |
{fecha} | {fecha} | En |
{title} | {html-title} | Título del documento |
Ejemplos de migración de código
Ejemplo 1: HTML básico a PDF
Antes (PDFBolt):
// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);
}
}// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comDespués (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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comLa diferencia fundamental en este caso es el tipo de retorno y el patrón de guardado. PDFBolt's HtmlToPdfConverter.ConvertHtmlString() devuelve un byte[] que debe escribir manualmente en el disco mediante File.WriteAllBytes(). Esto requiere importar System.IO y manejar la operación de archivo uno mismo.
IronPDF's ChromePdfRenderer.RenderHtmlAsPdf() devuelve un objeto Documento PDFcon un método SaveAs() incorporado. Este enfoque orientado a objetos ofrece ventajas adicionales: se puede manipular el PDF (añadir marcas de agua, fusionar documentos, añadir seguridad) antes de guardarlo. Si necesita los bytes sin procesar por compatibilidad con el código existente, utilice pdf.BinaryData. Consulte la documentación HTML a PDF para obtener más opciones de conversión.
Ejemplo 2: Conversión de URL a PDF
Antes (PDFBolt):
// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var pdf = converter.ConvertUrl("https://www.example.com");
File.WriteAllBytes("webpage.pdf", pdf);
}
}// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var pdf = converter.ConvertUrl("https://www.example.com");
File.WriteAllBytes("webpage.pdf", pdf);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comDespués (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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comEl patrón PDFBoltpara la conversión de URL sigue el mismo enfoque que la conversión HTML: ConvertUrl() devuelve byte[], lo que requiere File.WriteAllBytes() para guardar. Tenga en cuenta que PDFBoltsigue requiriendo un viaje de ida y vuelta a sus servidores, aunque ya se esté obteniendo desde una URL.
El método RenderUrlAsPdf() deIronPDFdevuelve un Documento PDFcon el método incorporado SaveAs(). La ventaja clave aquí es queIronPDFrealiza la obtención de URL y la renderización de PDF localmente, sin que los datos salgan de su infraestructura. Observe que la versiónIronPDFni siquiera necesita utilizar System.IO; para este sencillo caso. Más información sobre Conversión de URL a PDF.
Ejemplo 3: Archivo HTML con configuración de página personalizada
Antes (PDFBolt):
// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
converter.PageSize = PageSize.A4;
converter.MarginTop = 20;
converter.MarginBottom = 20;
var html = File.ReadAllText("input.html");
var pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);
}
}// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
converter.PageSize = PageSize.A4;
converter.MarginTop = 20;
converter.MarginBottom = 20;
var html = File.ReadAllText("input.html");
var pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comDespués (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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comEste ejemplo muestra las diferencias de configuración de las páginas. PDFBoltestablece propiedades directamente en el objeto conversor (converter.PageSize, converter.MarginTop).IronPDFutiliza un objeto RenderingOptions en el renderizador (renderer.RenderingOptions.PaperSize, renderer.RenderingOptions.MarginTop).
Las correspondencias clave:
PageSize.A4→PdfPaperSize.A4(nombre de enum diferente)MarginTop = 20→RenderingOptions.MarginTop = 20(mediante RenderingOptions)
Ambos utilizan milímetros para los valores de margen, por lo que los valores de margen existentes deberían transferirse directamente. El espacio de nombres IronPdf.Rendering es necesario para acceder al enum PdfPaperSize. Para conocer otras opciones de configuración de páginas, consulte la documentación sobre opciones de renderización.
Notas de migración críticas
Cambio de tipo de retorno
PDFBolt devuelve byte[] directamente;IronPDFdevuelve PdfDocument:
// PDFBoltpattern:
byte[] pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);
//IronPDFpattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or if you need bytes:
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;// PDFBoltpattern:
byte[] pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);
//IronPDFpattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or if you need bytes:
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;IRON VB CONVERTER ERROR developers@ironsoftware.comCambio de denominación de clases
El nombre de la clase principal cambia de convertidor a renderizador:
// PDFBolt
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();// PDFBolt
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();IRON VB CONVERTER ERROR developers@ironsoftware.comCambio de patrón de configuración
PDFBolt utiliza propiedades directas;IronPDFutiliza RenderingOptions:
// PDFBolt: Direct properties
converter.PageSize = PageSize.A4;
converter.MarginTop = 20;
// IronPDF: Via RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;// PDFBolt: Direct properties
converter.PageSize = PageSize.A4;
converter.MarginTop = 20;
// IronPDF: Via RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;IRON VB CONVERTER ERROR developers@ironsoftware.comEliminación de claves de API
PDFBolt requiere la gestión de claves API por solicitud;IronPDFutiliza una clave de licencia de un solo uso:
// PDFBolt: API key per client (security risk if leaked)
var apiKey = config["PDFBolt:ApiKey"];
var client = new Client(apiKey);
// IronPDF: License key once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();// PDFBolt: API key per client (security risk if leaked)
var apiKey = config["PDFBolt:ApiKey"];
var client = new Client(apiKey);
// IronPDF: License key once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();IRON VB CONVERTER ERROR developers@ironsoftware.comQuitar la gestión de errores de red
El procesamiento local significa que no hay que gestionar errores de red:
// PDFBolt: Network error handling required
catch (HttpRequestException ex)
catch (TaskCanceledException)
catch (TimeoutException)
// IronPDF: Remove network-specific catches entirely// PDFBolt: Network error handling required
catch (HttpRequestException ex)
catch (TaskCanceledException)
catch (TimeoutException)
// IronPDF: Remove network-specific catches entirelyIRON VB CONVERTER ERROR developers@ironsoftware.comNuevas funciones disponibles
Tras migrar a IronPDF, obtendrá funciones que PDFBoltno puede ofrecerle:
// PDF Merging (not available in PDFBolt)
var merged = PdfDocument.Merge(pdf1, pdf2);
// Watermarks (not available in PDFBolt)
pdf.ApplyWatermark("<h1 style='opacity:0.3;'>DRAFT</h1>");
// Password Protection (not available in PDFBolt)
pdf.SecuritySettings.UserPassword = "secret";
// Text Extraction (not available in PDFBolt)
string text = pdf.ExtractAllText();
// PDF to Images (not available in PDFBolt)
pdf.RasterizeToImageFiles("page_*.png");// PDF Merging (not available in PDFBolt)
var merged = PdfDocument.Merge(pdf1, pdf2);
// Watermarks (not available in PDFBolt)
pdf.ApplyWatermark("<h1 style='opacity:0.3;'>DRAFT</h1>");
// Password Protection (not available in PDFBolt)
pdf.SecuritySettings.UserPassword = "secret";
// Text Extraction (not available in PDFBolt)
string text = pdf.ExtractAllText();
// PDF to Images (not available in PDFBolt)
pdf.RasterizeToImageFiles("page_*.png");IRON VB CONVERTER ERROR developers@ironsoftware.comSolución de problemas
Asunto 1: HtmlToPdfConverter no encontrado
Problema: la clase HtmlToPdfConverter no existe en IronPDF.
Solución: Utilizar ChromePdfRenderer:
// PDFBolt
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();// PDFBolt
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();IRON VB CONVERTER ERROR developers@ironsoftware.comEdición 2: ConvertHtmlString no encontrado
Problema: el método ConvertHtmlString() no existe.
Solución: Utilice RenderHtmlAsPdf():
// PDFBolt
var pdf = converter.ConvertHtmlString(html);
// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);// PDFBolt
var pdf = converter.ConvertHtmlString(html);
// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);IRON VB CONVERTER ERROR developers@ironsoftware.comNúmero 3: ConvertUrl Not Found
Problema: El método ConvertirUrl() no existe.
Solución: Utilice RenderUrlAsPdf():
// PDFBolt
var pdf = converter.ConvertUrl(url);
// IronPDF
var pdf = renderer.RenderUrlAsPdf(url);// PDFBolt
var pdf = converter.ConvertUrl(url);
// IronPDF
var pdf = renderer.RenderUrlAsPdf(url);IRON VB CONVERTER ERROR developers@ironsoftware.comEdición 4: Enum PageSize no encontrado
Problema: <código>TamañoDePágina</códigoenum no existe.
Solución: Utilice <código>TamañoDelPapel</códigode IronPDF.Rendering:
// PDFBolt
converter.PageSize = PageSize.A4;
// IronPDF
using IronPdf.Rendering;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;// PDFBolt
converter.PageSize = PageSize.A4;
// IronPDF
using IronPdf.Rendering;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;IRON VB CONVERTER ERROR developers@ironsoftware.comEdición 5: La primera generación de PDF es lenta
Problema: El renderizado inicial tarda más de lo esperado.
Solución: El motor Chromium se inicializa en el primer uso. Precalentamiento si es necesario:
// Warm up during application startup
var renderer = new ChromePdfRenderer();
renderer.RenderHtmlAsPdf("<html><body></body></html>");// Warm up during application startup
var renderer = new ChromePdfRenderer();
renderer.RenderHtmlAsPdf("<html><body></body></html>");IRON VB CONVERTER ERROR developers@ironsoftware.comLista de comprobación de la migración
Pre-Migración
- [ ] Inventario de todos los usos de PDFBolten el código base
- [ ] Documentar la configuración actual de la página (PageSize, márgenes)
- [ ] Identificar el código de gestión de claves API que hay que eliminar
- [ ] Enumere cualquier límite de tarifa o gestión de errores de red que deba eliminarse
- [ ] Obtener la clave de licencia de IronPDF
Cambios en el paquete
- [ ] Eliminar el paquete NuGet
PDFBolt - [Instale el paquete NuGet
IronPdf:dotnet add package IronPdf - [ ] Añadir
usando IronPdf;espacio de nombres - [ ] Añadir
usando IronPdf.Rendering;para enums de tamaño de papel
Cambios de código
- [ ] Añadir configuración de clave de licencia al inicio
- [Reemplace
HtmlToPdfConverterporChromePdfRenderer - [ ] Sustituya
ConvertHtmlString()porRenderHtmlAsPdf() - [ ] Sustituya
ConvertUrl()porRenderUrlAsPdf() - [Reemplace
File.WriteAllBytes()porpdf.SaveAs() - [ ] Actualizar <código>TamañoDePágina</códigoa
RenderingOptions.PaperSize - [ ] Actualizar las propiedades de margen a
RenderingOptions.MarginTop, etc. - [ ] Eliminar el código de gestión de claves API
- [ ] Eliminar el código de gestión del límite de tarifa
- [ ] Eliminar la gestión de errores de red
Posmigración
- [ ] Borrar la clave API de los archivos de configuración
- [ ] Eliminar la clave API de los gestores secretos
- [ ] Ejecutar todas las pruebas comparando la salida PDF
- [ ] Comprobar que el tamaño de las páginas y los márgenes son correctos
- [ ] Considere la posibilidad de añadir nuevas funciones (marcas de agua, seguridad, fusión)
Conclusión
La migración de PDFBoltaIronPDFtraslada la generación de PDF de un servicio externo en la nube al procesamiento local, eliminando las preocupaciones sobre la privacidad de los datos, los límites de uso y las dependencias de la red. La migración sustituye el modelo de pago por documento por la generación local ilimitada, al tiempo que añade funciones de manipulación de PDF que PDFBoltno puede ofrecer.
Los cambios clave en esta migración son:
- Ubicación de los datos: Servidores externos → Sólo sus servidores
- Uso: Límites por documento → Ilimitado
- Clase:
HtmlToPdfConverter→ChromePdfRenderer - Métodos:
ConvertHtmlString()/ConvertUrl()→RenderHtmlAsPdf()/RenderUrlAsPdf() - Salida:
byte[]+File.WriteAllBytes()→PdfDocument.SaveAs() - Config: Propiedades directas → propiedades
RenderingOptions - Autenticación: Clave API por solicitud → Clave de licencia una vez al inicio
Explore la documentación completa de IronPDF, tutoriales y referencia de API para acelerar su migración a PDFBolt.






