Migración de Foxit PDF SDK a IronPDF: (Guía .NET)
Migrar de Foxit PDF SDKa IronPDF: Guía completa de migración a C
La migración de Foxit PDF SDKaIronPDFagiliza el flujo de trabajo de generación de PDF .NET sustituyendo las complejas API orientadas a la empresa por patrones modernos y fáciles de usar para los desarrolladores. Esta guía proporciona una ruta de migración completa y paso a paso que elimina el código repetitivo y simplifica las operaciones de PDF en toda su base de código.
Por qué migrar de Foxit PDF SDKa IronPDF
Los desafíos de Foxit PDF
Foxit PDF SDK es una potente biblioteca de nivel empresarial, pero conlleva una complejidad significativa que puede ralentizar el desarrollo:
Sistema de licencias complejo: Los múltiples productos, SKU y tipos de licencia (por desarrollador, por servidor, OEM, etc.) dificultan la elección de la opción adecuada para su proyecto.
Precios para empresas: Los precios están adaptados a grandes organizaciones y pueden resultar prohibitivos para equipos más pequeños o desarrolladores individuales.
Instalación manual: Foxit PDF SDKrequiere referencias DLL manuales o fuentes NuGet privadas; no hay ningún paquete NuGet público sencillo disponible.
API Verbosa: La inicialización de bibliotecas con
Library.Initialize(), la comprobación de códigos de error y las llamadas explícitas aLibrary.Release()añaden una gran cantidad de repeticiones a cada operación.Add-on de conversión HTML independiente: la conversión de HTML a PDF requiere la compra de un add-on adicional, no está incluido en el SDK base.
Configuración compleja: Las configuraciones requieren una configuración detallada de objetos (por ejemplo,
HTML2PDFSettingData) con múltiples propiedades.- Herencia de C#: Los patrones de API reflejan los orígenes de C++, sintiéndose menos naturales en las aplicaciones modernas de C#.
Comparación entre Foxit PDF e IronPDF
| Aspecto | Foxit PDF SDK | IronPDF |
|---|---|---|
| Instalación | DLLs/private feeds manuales | Paquete NuGet simple |
| Licencias | Complejo, centrado en la empresa | Transparente, apto para todos los tamaños |
| Inicialización | <código>Library.Initialize(sn, key)</código | Establezca la clave de licencia una vez |
| Tratamiento de errores | Enumeraciones ErrorCode | Excepciones de .NET Standard |
| HTML a PDF | Compra adicional por separado | Motor Chromium integrado |
| Estilo API | Herencia de C++, verborrea | Patrones modernos de .NET |
| Limpieza de recursos | Manual Close()/Release() | Desechable/automático |
| Documentación | Portal de documentación empresarial | Tutoriales públicos |
Análisis coste-beneficio
El cambio de Foxit PDF aIronPDFofrece ventajas tangibles para el desarrollo: menor complejidad gracias a API más sencillas, desarrollo más rápido con métodos intuitivos, compatibilidad moderna con .NET, incluida la compatibilidad con async/await y LINQ, un enfoque basado en HTML que aprovecha los conocimientos web existentes y funciones todo incluido sin necesidad de adquirir complementos por separado. Mientras planifica la adopción de .NET 10 y C# 14 hasta 2025 y 2026,IronPDFproporciona una base a prueba de futuro para la generación de PDF.
Antes de empezar
Prerrequisitos
- Entorno .NET:IronPDFes compatible con .NET Framework 4.6.2+, .NET Core 3.1+, .NET 5/6/7/8/9+
- Acceso a NuGet: asegúrese de que puede instalar paquetes desde NuGet
- Clave de licencia: Obtenga su clave de licenciaIronPDFpara uso en producción en ironpdf.com
Haga una copia de seguridad de su proyecto
# Create a backup branch
git checkout -b pre-ironpdf-migration
git add .
git commit -m "Backup before Foxit PDF SDKtoIronPDFmigration"# Create a backup branch
git checkout -b pre-ironpdf-migration
git add .
git commit -m "Backup before Foxit PDF SDKtoIronPDFmigration"Identificar todos los usos de Foxit PDF
# Find all Foxit PDF SDKreferences
grep -r "foxit\|PDFDoc\|PDFPage\|Library.Initialize\|Library.Release" --include="*.cs" --include="*.csproj" .
# Find Foxit DLL references
find . -name "*.csproj" | xargs grep -l "Foxit\|fsdk"# Find all Foxit PDF SDKreferences
grep -r "foxit\|PDFDoc\|PDFPage\|Library.Initialize\|Library.Release" --include="*.cs" --include="*.csproj" .
# Find Foxit DLL references
find . -name "*.csproj" | xargs grep -l "Foxit\|fsdk"Documentar la funcionalidad actual
Antes de la migración, catálogo:
- Qué funciones de Foxit PDF utiliza (conversión HTML, anotaciones, formularios, seguridad)
- Ubicación de las claves de licencia y código de inicialización
- Configuraciones y ajustes personalizados
- Patrones de gestión de errores mediante enums ErrorCode
Inicio rápido de la migración
Paso 1: Actualizar paquetes NuGet
# Foxit PDF SDKtypically requires manual removal of DLL references
# Check your .csproj for Foxit references and remove them
# Install IronPDF
dotnet add package IronPdf# Foxit PDF SDKtypically requires manual removal of DLL references
# Check your .csproj for Foxit references and remove them
# Install IronPDF
dotnet add package IronPdfSi tiene referencias Foxit PDF en .csproj, elimínelas manualmente:
<!-- Remove these manually -->
<Reference Include="fsdk_dotnet">
<HintPath>..\libs\Foxit\fsdk_dotnet.dll</HintPath>
</Reference><!-- Remove these manually -->
<Reference Include="fsdk_dotnet">
<HintPath>..\libs\Foxit\fsdk_dotnet.dll</HintPath>
</Reference>Paso 2: Actualizar los espacios de nombres
// Before (Foxit PDF)
using foxit;
using foxit.common;
using foxit.common.fxcrt;
using foxit.pdf;
using foxit.pdf.annots;
using foxit.addon.conversion;
// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;// Before (Foxit PDF)
using foxit;
using foxit.common;
using foxit.common.fxcrt;
using foxit.pdf;
using foxit.pdf.annots;
using foxit.addon.conversion;
// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;IRON VB CONVERTER ERROR developers@ironsoftware.comPaso 3: Inicializar IronPDF
Una de las mejoras más significativas en esta migración de Foxit PDF es la eliminación del complejo patrón de inicialización y limpieza:
// Before (Foxit PDF)
string sn = "YOUR_SERIAL_NUMBER";
string key = "YOUR_LICENSE_KEY";
ErrorCode error_code = Library.Initialize(sn, key);
if (error_code != ErrorCode.e_ErrSuccess)
{
throw new Exception("Failed to initialize Foxit PDF SDK");
}
// ... your code ...
Library.Release(); // Don't forget this!
// After (IronPDF)
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
// That's it! No Release() needed// Before (Foxit PDF)
string sn = "YOUR_SERIAL_NUMBER";
string key = "YOUR_LICENSE_KEY";
ErrorCode error_code = Library.Initialize(sn, key);
if (error_code != ErrorCode.e_ErrSuccess)
{
throw new Exception("Failed to initialize Foxit PDF SDK");
}
// ... your code ...
Library.Release(); // Don't forget this!
// After (IronPDF)
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
// That's it! No Release() neededIRON VB CONVERTER ERROR developers@ironsoftware.comPaso 4: Patrón básico de conversión
// Before (Foxit PDF)
Library.Initialize(sn, key);
HTML2PDFSettingData settings = new HTML2PDFSettingData();
settings.page_width = 612.0f;
settings.page_height = 792.0f;
using (HTML2PDF html2pdf = new HTML2PDF(settings))
{
html2pdf.Convert(htmlContent, "output.pdf");
}
Library.Release();
// After (IronPDF)
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");// Before (Foxit PDF)
Library.Initialize(sn, key);
HTML2PDFSettingData settings = new HTML2PDFSettingData();
settings.page_width = 612.0f;
settings.page_height = 792.0f;
using (HTML2PDF html2pdf = new HTML2PDF(settings))
{
html2pdf.Convert(htmlContent, "output.pdf");
}
Library.Release();
// After (IronPDF)
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.comReferencia completa de la API
Mapeo de espacios de nombres
| Espacio de nombres Foxit PDF | Equivalente de IronPDF | Notas |
|---|---|---|
foxit | <código>IronPDF</código | Espacio de nombres principal |
foxit.common | <código>IronPDF</código | Tipos comunes |
foxit.common.fxcrt | N/A | Bajo nivel (no es necesario) |
foxit.pdf | <código>IronPDF</código | Operaciones del documento PDF |
foxit.pdf.annots | <código>IronPdf.Editing</código> | Anotaciones |
foxit.addon.conversion | <código>IronPdf.Rendering</código | Conversión de HTML/imágenes |
Mapeo de clases principales
| Clase PDF SDK de Foxit | Equivalente de IronPDF | Notas |
|---|---|---|
Biblioteca | N/A | IronPDFautogestiona |
| <código>PDFDoc</código | Documento PDF | Clase de documento principal |
Página PDF | <código>PdfDocument.Pages[i]</código> | Acceso a la página |
| <código>HTML2PDF</código | <código>ChromePdfRenderer</código | Conversión de HTML |
Página de texto | <código>pdf.ExtractTextFromPage(i)</código | Extracción de texto |
Watermark | TextStamper / ImageStamper | Marcas de agua |
Seguridad | Configuración de seguridad | Seguridad PDF |
| <código>Formulario</código | <código>pdf.Form</código | Campos de formulario |
Metadatos | <código>pdf.MetaData</código | Metadatos del documento |
Métodos PDFDoc
| Foxit PDFDoc | IronPDFDocumentoPdf | Notas |
|---|---|---|
nuevo PDFDoc(ruta) | <código>PdfDocument.FromFile(path)</código | Cargar desde archivo |
| <código>doc.LoadW(contraseña)</código | <código>PdfDocument.FromFile(path, password)</código | Protegido por contraseña |
doc.GetPageCount() | <código>pdf.PageCount</código | Propiedad del recuento de páginas |
| <código>doc.GetPage(index)</código | pdf.Pages[index] | Obtener página por índice |
doc.SaveAs(ruta, banderas) | <código>pdf.SaveAs(ruta)</código | Guardar documento |
doc.Close() | pdf.Dispose() o sentencia using | Limpieza |
doc.InsertDocument() | PdfDocument.Merge() | Fusionar documentos |
HTML2PDF / Conversión
| Foxit HTML2PDF | Equivalente de IronPDF | Notas |
|---|---|---|
| <código>new HTML2PDFSettingData()</código | <código>new ChromePdfRenderer()</código | Crear renderizador |
| <código>settings.page_width</código | <código>RenderingOptions.PaperSize</código | Tamaños estándar |
| <código>settings.page_height</código | <código>RenderingOptions.SetCustomPaperSize()</código | Tamaño personalizado |
| <código>html2pdf.Convert(html, ruta)</código | renderer.RenderHtmlAsPdf(html) | Cadena HTML |
| <código>html2pdf.ConvertFromURL(url, path)</código | <código>renderer.RenderUrlAsPdf(url)</código | Conversión de URL |
Configuración de marcas de agua
| Marca de agua de Foxit | Equivalente de IronPDF | Notas |
|---|---|---|
| <código>new Marca de agua(doc, texto, fuente, tamaño, color)</código | nuevo TextStamper() | Marca de agua de texto |
| <código>WatermarkSettings.position</código | AlineaciónVertical + AlineaciónHorizontal | Puesto |
| <código>WatermarkSettings.rotation</código | Rotación | Ángulo de rotación |
| <código>WatermarkSettings.opacity</código | Opacidad | porcentaje 0-100 |
| <código>watermark.InsertToAllPages()</código | <código>pdf.ApplyStamp(stamper)</código | Aplicar a todos |
Ejemplos de código
Ejemplo 1: Conversión de HTML a PDF
Antes (Foxit PDF SDK):
// NuGet: Install-Package Foxit.SDK
using Foxit.SDK;
using Foxit.SDK.Common;
using Foxit.SDK.PDFConversion;
using System;
class Program
{
static void Main()
{
Library.Initialize("sn", "key");
HTML2PDFSettingData settingData = new HTML2PDFSettingData();
settingData.page_width = 612.0f;
settingData.page_height = 792.0f;
settingData.page_mode = HTML2PDFPageMode.e_HTML2PDFPageModeSinglePage;
using (HTML2PDF html2pdf = new HTML2PDF(settingData))
{
html2pdf.Convert("<html><body><h1>Hello World</h1></body></html>", "output.pdf");
}
Library.Release();
}
}// NuGet: Install-Package Foxit.SDK
using Foxit.SDK;
using Foxit.SDK.Common;
using Foxit.SDK.PDFConversion;
using System;
class Program
{
static void Main()
{
Library.Initialize("sn", "key");
HTML2PDFSettingData settingData = new HTML2PDFSettingData();
settingData.page_width = 612.0f;
settingData.page_height = 792.0f;
settingData.page_mode = HTML2PDFPageMode.e_HTML2PDFPageModeSinglePage;
using (HTML2PDF html2pdf = new HTML2PDF(settingData))
{
html2pdf.Convert("<html><body><h1>Hello World</h1></body></html>", "output.pdf");
}
Library.Release();
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comDespués (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");
pdf.SaveAs("output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");
pdf.SaveAs("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comEl enfoque deIronPDFreduce más de 15 líneas de código de configuración a sólo 4 líneas. Sin inicialización de bibliotecas, sin limpieza explícita, sin objetos de configuración complejos. Para obtener más opciones de conversión de HTML, consulte la documentación HTML a PDF.
Ejemplo 2: Conversión de URL a PDF
Antes (Foxit PDF SDK):
// NuGet: Install-Package Foxit.SDK
using Foxit.SDK;
using Foxit.SDK.Common;
using Foxit.SDK.PDFConversion;
using System;
class Program
{
static void Main()
{
Library.Initialize("sn", "key");
HTML2PDFSettingData settingData = new HTML2PDFSettingData();
settingData.page_width = 612.0f;
settingData.page_height = 792.0f;
settingData.page_mode = HTML2PDFPageMode.e_HTML2PDFPageModeSinglePage;
using (HTML2PDF html2pdf = new HTML2PDF(settingData))
{
html2pdf.ConvertFromURL("https://www.example.com", "output.pdf");
}
Library.Release();
}
}// NuGet: Install-Package Foxit.SDK
using Foxit.SDK;
using Foxit.SDK.Common;
using Foxit.SDK.PDFConversion;
using System;
class Program
{
static void Main()
{
Library.Initialize("sn", "key");
HTML2PDFSettingData settingData = new HTML2PDFSettingData();
settingData.page_width = 612.0f;
settingData.page_height = 792.0f;
settingData.page_mode = HTML2PDFPageMode.e_HTML2PDFPageModeSinglePage;
using (HTML2PDF html2pdf = new HTML2PDF(settingData))
{
html2pdf.ConvertFromURL("https://www.example.com", "output.pdf");
}
Library.Release();
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comDespués (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comEl motor Chromium integrado enIronPDFgestiona automáticamente la ejecución de JavaScript, el renderizado de CSS y el contenido dinámico. Más información sobre Conversión de URL a PDF.
Ejemplo 3: Añadir marcas de agua
Antes (Foxit PDF SDK):
// NuGet: Install-Package Foxit.SDK
using Foxit.SDK;
using Foxit.SDK.Common;
using Foxit.SDK.PDFDoc;
using System;
class Program
{
static void Main()
{
Library.Initialize("sn", "key");
using (PDFDoc doc = new PDFDoc("input.pdf"))
{
doc.Load("");
Watermark watermark = new Watermark(doc, "Confidential",
new Font(Font.StandardID.e_StdIDHelvetica), 48.0f, 0xFF0000FF);
WatermarkSettings settings = new WatermarkSettings();
settings.flags = Watermark.e_WatermarkFlagASPageContents;
settings.position = Watermark.Position.e_PosCenter;
settings.rotation = -45.0f;
settings.opacity = 0.5f;
watermark.SetSettings(settings);
watermark.InsertToAllPages();
doc.SaveAs("output.pdf", PDFDoc.SaveFlags.e_SaveFlagNoOriginal);
}
Library.Release();
}
}// NuGet: Install-Package Foxit.SDK
using Foxit.SDK;
using Foxit.SDK.Common;
using Foxit.SDK.PDFDoc;
using System;
class Program
{
static void Main()
{
Library.Initialize("sn", "key");
using (PDFDoc doc = new PDFDoc("input.pdf"))
{
doc.Load("");
Watermark watermark = new Watermark(doc, "Confidential",
new Font(Font.StandardID.e_StdIDHelvetica), 48.0f, 0xFF0000FF);
WatermarkSettings settings = new WatermarkSettings();
settings.flags = Watermark.e_WatermarkFlagASPageContents;
settings.position = Watermark.Position.e_PosCenter;
settings.rotation = -45.0f;
settings.opacity = 0.5f;
watermark.SetSettings(settings);
watermark.InsertToAllPages();
doc.SaveAs("output.pdf", PDFDoc.SaveFlags.e_SaveFlagNoOriginal);
}
Library.Release();
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comDespués (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
pdf.ApplyWatermark(new TextStamper()
{
Text = "Confidential",
FontSize = 48,
Opacity = 50,
Rotation = -45,
VerticalAlignment = VerticalAlignment.Middle,
HorizontalAlignment = HorizontalAlignment.Center
});
pdf.SaveAs("output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
pdf.ApplyWatermark(new TextStamper()
{
Text = "Confidential",
FontSize = 48,
Opacity = 50,
Rotation = -45,
VerticalAlignment = VerticalAlignment.Middle,
HorizontalAlignment = HorizontalAlignment.Center
});
pdf.SaveAs("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comEl TextStamper deIronPDFproporciona una configuración intuitiva basada en propiedades en lugar de objetos de configuración independientes y la iteración manual de páginas. Consulte la documentación completa de marcas de agua para obtener más opciones.
Ejemplo 4: URL a PDF con encabezados y pies de página
Antes (Foxit PDF SDK):
using foxit;
using foxit.addon.conversion;
class Program
{
static void Main()
{
Library.Initialize("sn", "key");
try
{
HTML2PDFSettingData settings = new HTML2PDFSettingData();
settings.page_width = 595.0f; // A4
settings.page_height = 842.0f;
settings.page_margin_top = 100.0f;
settings.page_margin_bottom = 100.0f;
// Foxit PDF SDKhas limited header/footer support
// Often requires post-processing or additional code
using (HTML2PDF html2pdf = new HTML2PDF(settings))
{
html2pdf.ConvertFromURL("https://www.example.com", "webpage.pdf");
}
}
finally
{
Library.Release();
}
}
}using foxit;
using foxit.addon.conversion;
class Program
{
static void Main()
{
Library.Initialize("sn", "key");
try
{
HTML2PDFSettingData settings = new HTML2PDFSettingData();
settings.page_width = 595.0f; // A4
settings.page_height = 842.0f;
settings.page_margin_top = 100.0f;
settings.page_margin_bottom = 100.0f;
// Foxit PDF SDKhas limited header/footer support
// Often requires post-processing or additional code
using (HTML2PDF html2pdf = new HTML2PDF(settings))
{
html2pdf.ConvertFromURL("https://www.example.com", "webpage.pdf");
}
}
finally
{
Library.Release();
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comDespués (IronPDF):
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.WaitFor.RenderDelay(3000); // Wait for JS
// Built-in header/footer support
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:center; font-size:12pt;'>Company Report</div>",
DrawDividerLine = true
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:right; font-size:10pt;'>Page {page} of {total-pages}</div>",
DrawDividerLine = true
};
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.WaitFor.RenderDelay(3000); // Wait for JS
// Built-in header/footer support
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:center; font-size:12pt;'>Company Report</div>",
DrawDividerLine = true
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:right; font-size:10pt;'>Page {page} of {total-pages}</div>",
DrawDividerLine = true
};
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDF ofrece soporte nativo para encabezados y pies de página con estilo HTML y marcadores de posición dinámicos para el número de página.
Ejemplo 5: Seguridad y cifrado de PDF
Antes (Foxit PDF SDK):
using foxit;
using foxit.pdf;
class Program
{
static void Main()
{
Library.Initialize("sn", "key");
try
{
using (PDFDoc doc = new PDFDoc("input.pdf"))
{
doc.LoadW("");
StdSecurityHandler securityHandler = new StdSecurityHandler();
securityHandler.Initialize(
StdSecurityHandler.EncryptAlgorithm.e_CipherAES,
"user_password",
"owner_password",
PDFDoc.Permission.e_PermPrint | PDFDoc.Permission.e_PermModify,
128);
doc.SetSecurityHandler(securityHandler);
doc.SaveAs("encrypted.pdf", (int)PDFDoc.SaveFlags.e_SaveFlagNoOriginal);
}
}
finally
{
Library.Release();
}
}
}using foxit;
using foxit.pdf;
class Program
{
static void Main()
{
Library.Initialize("sn", "key");
try
{
using (PDFDoc doc = new PDFDoc("input.pdf"))
{
doc.LoadW("");
StdSecurityHandler securityHandler = new StdSecurityHandler();
securityHandler.Initialize(
StdSecurityHandler.EncryptAlgorithm.e_CipherAES,
"user_password",
"owner_password",
PDFDoc.Permission.e_PermPrint | PDFDoc.Permission.e_PermModify,
128);
doc.SetSecurityHandler(securityHandler);
doc.SaveAs("encrypted.pdf", (int)PDFDoc.SaveFlags.e_SaveFlagNoOriginal);
}
}
finally
{
Library.Release();
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comDespués (IronPDF):
using IronPdf;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
// Set passwords
pdf.SecuritySettings.OwnerPassword = "owner_password";
pdf.SecuritySettings.UserPassword = "user_password";
// Set permissions
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserEdits = IronPdf.Security.PdfEditSecurity.EditAll;
pdf.SecuritySettings.AllowUserCopyPasteContent = true;
pdf.SecuritySettings.AllowUserAnnotations = true;
pdf.SaveAs("encrypted.pdf");
}
}using IronPdf;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
// Set passwords
pdf.SecuritySettings.OwnerPassword = "owner_password";
pdf.SecuritySettings.UserPassword = "user_password";
// Set permissions
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserEdits = IronPdf.Security.PdfEditSecurity.EditAll;
pdf.SecuritySettings.AllowUserCopyPasteContent = true;
pdf.SecuritySettings.AllowUserAnnotations = true;
pdf.SaveAs("encrypted.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comConsideraciones sobre el rendimiento
Reutilizar ChromePdfRenderer
Para obtener un rendimiento óptimo durante la migración a Foxit PDF, reutilice la instancia ChromePdfRenderer: es segura para subprocesos:
// GOOD - Reuse renderer (thread-safe)
public class PdfService
{
private static readonly ChromePdfRenderer _renderer = new ChromePdfRenderer();
public byte[] Generate(string html) => _renderer.RenderHtmlAsPdf(html).BinaryData;
}
// BAD - Creates new instance each time
public byte[] GenerateBad(string html)
{
var renderer = new ChromePdfRenderer(); // Wasteful
return renderer.RenderHtmlAsPdf(html).BinaryData;
}// GOOD - Reuse renderer (thread-safe)
public class PdfService
{
private static readonly ChromePdfRenderer _renderer = new ChromePdfRenderer();
public byte[] Generate(string html) => _renderer.RenderHtmlAsPdf(html).BinaryData;
}
// BAD - Creates new instance each time
public byte[] GenerateBad(string html)
{
var renderer = new ChromePdfRenderer(); // Wasteful
return renderer.RenderHtmlAsPdf(html).BinaryData;
}IRON VB CONVERTER ERROR developers@ironsoftware.comAyudante de conversión de unidades
Foxit PDF SDK utiliza puntos;IronPDFutiliza milímetros. Utilice esta ayuda durante la migración:
public static class UnitConverter
{
public static double PointsToMm(double points) => points * 0.352778;
public static double MmToPoints(double mm) => mm / 0.352778;
public static double InchesToMm(double inches) => inches * 25.4;
}
// Usage: Convert Foxit's 72 points (1 inch) toIronPDFmillimeters
renderer.RenderingOptions.MarginTop = UnitConverter.PointsToMm(72); // ~25.4mmpublic static class UnitConverter
{
public static double PointsToMm(double points) => points * 0.352778;
public static double MmToPoints(double mm) => mm / 0.352778;
public static double InchesToMm(double inches) => inches * 25.4;
}
// Usage: Convert Foxit's 72 points (1 inch) toIronPDFmillimeters
renderer.RenderingOptions.MarginTop = UnitConverter.PointsToMm(72); // ~25.4mmIRON VB CONVERTER ERROR developers@ironsoftware.comDisposición adecuada de recursos
// GOOD - Using statement for automatic cleanup
using (var pdf = PdfDocument.FromFile("large.pdf"))
{
string text = pdf.ExtractAllText();
} // pdf is disposed automatically// GOOD - Using statement for automatic cleanup
using (var pdf = PdfDocument.FromFile("large.pdf"))
{
string text = pdf.ExtractAllText();
} // pdf is disposed automaticallyIRON VB CONVERTER ERROR developers@ironsoftware.comSolución de problemas
Asunto 1: Library.Initialize() no se encuentra
Problema: Library.Initialize() no existe en IronPDF.
Solución:IronPDFutiliza un patrón de inicialización más sencillo:
// Foxit PDF
Library.Initialize(sn, key);
//IronPDF- just set license key once at startup
IronPdf.License.LicenseKey = "YOUR-KEY";// Foxit PDF
Library.Initialize(sn, key);
//IronPDF- just set license key once at startup
IronPdf.License.LicenseKey = "YOUR-KEY";IRON VB CONVERTER ERROR developers@ironsoftware.comNúmero 2: Tratamiento de códigos de error
Problema: El código comprueba ErrorCode.e_ErrSuccess peroIronPDFno tiene esto.
Solución: Utilizar el manejo de excepciones estándar de .NET:
// Foxit PDF
ErrorCode err = doc.LoadW("");
if (err != ErrorCode.e_ErrSuccess) { /* handle error */ }
// IronPDF
try
{
var pdf = PdfDocument.FromFile("input.pdf");
}
catch (IOException ex)
{
Console.WriteLine($"Failed to load PDF: {ex.Message}");
}// Foxit PDF
ErrorCode err = doc.LoadW("");
if (err != ErrorCode.e_ErrSuccess) { /* handle error */ }
// IronPDF
try
{
var pdf = PdfDocument.FromFile("input.pdf");
}
catch (IOException ex)
{
Console.WriteLine($"Failed to load PDF: {ex.Message}");
}IRON VB CONVERTER ERROR developers@ironsoftware.comAsunto 3: PDFDoc.Close() no se encuentra
Problema: el método doc.Close()no existe en IronPDF.
Solución: Utiliza las sentencias Dispose() o using:
// Foxit PDF
doc.Close();
// IronPDF
pdf.Dispose();
// or better: wrap in using statement// Foxit PDF
doc.Close();
// IronPDF
pdf.Dispose();
// or better: wrap in using statementIRON VB CONVERTER ERROR developers@ironsoftware.comLista de comprobación de la migración
Pre-Migración
- [ ] Inventario de todas las funciones de Foxit PDF SDKutilizadas
- [ ] Ubicación de las claves de licencia de los documentos
- [ ] Tenga en cuenta todas las llamadas a
Library.Initialize()yLibrary.Release() - [ ] Enumerar ajustes personalizados (tamaños de página, márgenes, etc.)
- [ ] Identificar patrones de gestión de errores mediante ErrorCode
- [ ] Copia de seguridad del proyecto en el control de versiones
- [ ] Obtener la clave de licencia de IronPDF
Migración de paquetes
- [ ] Eliminar referencias a Foxit PDF SDKDLL de .csproj
- [ ] Eliminar cualquier configuración privada de NuGet
- [ ] Instalar el paquete NuGet IronPdf:
dotnet add package IronPdf - [ ] Actualizar las importaciones de espacios de nombres
- [ ] Establecer la clave de licencia deIronPDFal inicio
Migración de código
- [ ] Eliminar las llamadas
Library.Initialize()yLibrary.Release() - [ ] Sustituir
ErrorCodepor try/catch - [ ] Sustituir <código>PDFDoc</códigopor
PdfDocument - [Reemplace <código>HTML2PDF</códigopor
ChromePdfRenderer - [Actualizar el acceso a páginas de
GetPage(i)aPages[i] - [Reemplace
SaveAs(path, flags)porSaveAs(path) - [ ] Sustituir
Close()porDispose()o usar sentencias - [Actualizar el código de la marca de agua para utilizar
TextStamper - [ ] Convertir unidades de puntos a milímetros
Pruebas
- [ ] Comprobar que el resultado de HTML a PDF se ajusta a las expectativas
- [ ] Prueba de carga de PDF y extracción de texto
- [ ] Verificar la funcionalidad de la fusión
- [ ] Comprobar el aspecto de la marca de agua
- [ ] Probar las funciones de seguridad/cifrado
- [Validar operaciones de campos de formulario
- [Pruebas de rendimiento
Posmigración
- [ ] Eliminar DLL de Foxit PDF SDK
- [ ] Eliminar archivos de configuración relacionados con Foxit
- [ ] Actualización de la documentación
- [ ] Limpiar el código de ayuda no utilizado
Conclusión
La migración de Foxit PDF SDKaIronPDFelimina patrones de inicialización complejos, objetos de configuración prolijos y limpieza manual de recursos. El resultado es un código más limpio y fácil de mantener que aprovecha los modernos patrones de .NET y las funciones integradas de representación HTML/CSS.
La API simplificada deIronPDFreduce el tiempo de desarrollo al tiempo que proporciona una funcionalidad PDF completa, todo ello accesible a través de un único paquete NuGet sin necesidad de adquirir complementos por separado. Para los equipos que planifican migraciones a .NET 10 y posteriores,IronPDFofrece una base a prueba de futuro para la generación de PDF.
Explore la documentación completa de IronPDF, tutoriales y referencia de API para acelerar su migración a Foxit PDF.






