Saltar al pie de página
GUíAS DE MIGRACIóN

Cómo migrar de Gnostice PDFOne a IronPDF en C#

La migración de Gnostice PDFOneaIronPDFtransforma su flujo de trabajo PDF .NET de un enfoque basado en coordenadas y fragmentado por plataformas a una solución unificada basada en HTML/CSS con compatibilidad total con los estándares web modernos. Esta guía proporciona una ruta de migración completa y paso a paso que elimina las limitaciones documentadas en torno a CSS, JavaScript y la estabilidad de la memoria para desarrolladores profesionales de .NET.

Por qué migrar de Gnostice PDFOnea IronPDF

Desafíos de Gnostice PDFOne

Gnostice PDFOne y Document Studio .NET tienen limitaciones bien documentadas que afectan a las aplicaciones de producción:

  1. Sin compatibilidad con CSS externo: la documentación de Gnostice PDFOneindica explícitamente que no admite hojas de estilo CSS externas, un requisito fundamental para la conversión web a PDF moderna.

  2. No se puede ejecutar JavaScript : el contenido dinámico que requiere JavaScript no se puede representar, lo que hace imposible convertir aplicaciones web modernas con precisión.

  3. No hay conversión directa de HTML a PDF: Gnostice PDFOneno tiene conversión directa de HTML a PDF. Es necesario utilizar Document Studio para la conversión a HTML o analizar y renderizar manualmente los elementos HTML, lo que supone una importante sobrecarga de desarrollo.

  4. Fragmentación de la plataforma: Productos independientes para WinForms, WPF, ASP.NET y Xamarin, cada uno con diferentes conjuntos de características y API. Es posible que necesite varias licencias y bases de código.

  5. Fugas de memoria y estabilidad: los foros de usuarios y Stack Overflow informan fugas de memoria persistentes, error JPEG n.° 53 y excepciones de StackOverflow al procesar imágenes.

  6. No hay Unicode de derecha a izquierda: el árabe, el hebreo y otros idiomas RTL no están soportados explícitamente, lo que supone un factor decisivo para las aplicaciones internacionales.

  7. Soporte limitado para firmas digitales: históricamente, las firmas digitales han estado ausentes o no han sido confiables en Gnostice PDFOne.

  8. API basada en coordenadas: muchas operaciones requieren posicionamiento manual X/Y en lugar de enfoques de diseño modernos, lo que requiere cálculos precisos para la ubicación de cada elemento.

Comparación entre Gnostice PDFOnee IronPDF

Aspecto Gnostice PDFOne IronPDF
CSS externo No soportado Se admite
Ejecución de JavaScript No soportado Motor Chromium completo
Idiomas RTL No soportado Compatibilidad total con Unicode
Firmas digitales Limitado/Falta Compatibilidad total con X509
Plataforma Productos fragmentados Una sola biblioteca unificada
Estabilidad de la memoria Problemas comunicados Estable y bien gestionado
HTML a PDF Básico, requiere soluciones Renderizado de calidad Chrome
Curva de aprendizaje API complejas API sencilla e intuitiva
CSS moderno (Flexbox, Grid) No soportado Compatibilidad total con CSS3
Tratamiento de imágenes Problemas conocidos Fiable

Para los equipos que planifican la adopción de .NET 10 y C# 14 hasta 2025 y 2026,IronPDFproporciona una base preparada para el futuro con una biblioteca unificada que funciona de forma coherente en todas las plataformas .NET.


Evaluación de la complejidad de la migración

Esfuerzo estimado por función

Característica Complejidad de la migración
Cargar/guardar PDF Muy bajo
Fusionar PDF Muy bajo
Dividir PDF Bajo
Extracción de Texto Bajo
Marcas de agua Bajo
Encabezados/pies de página Bajo
HTML a PDF Bajo
Cifrado Medio
Campos de formulario Medio
Firmas digitales Bajo

Características que se obtienen

Al migrar de Gnostice PDFOnea IronPDF, estas funciones antes imposibles pasan a estar disponibles:

  • Hojas de estilo CSS externas
  • Ejecución de JavaScript
  • Compatibilidad con idiomas RTL (árabe, hebreo)
  • CSS Grid y Flexbox
  • Firmas digitales fiables
  • Mejor gestión de la memoria
  • Compatibilidad multiplataforma con una única base de código

Antes de empezar

Prerrequisitos

  1. Versión .NET :IronPDFes compatible con .NET Framework 4.6.2+ y .NET Core 2.0+ / .NET 5/6/7/8/9+
  2. Clave de licencia: Obtenga su clave de licencia deIronPDFen IronPDF
  3. Copia de seguridad: crear una rama para el trabajo de migración

Identifique todo el uso de Gnostice PDFOne

# Find all Gnostice references
grep -r "Gnostice\|PDFOne\|PDFDocument\|PDFPage\|DocExporter" --include="*.cs" .

# Find package references
grep -r "Gnostice\|PDFOne" --include="*.csproj" .
# Find all Gnostice references
grep -r "Gnostice\|PDFOne\|PDFDocument\|PDFPage\|DocExporter" --include="*.cs" .

# Find package references
grep -r "Gnostice\|PDFOne" --include="*.csproj" .
SHELL

Cambios en el paquete NuGet

# Remove Gnostice PDFOnepackages
dotnet remove package PDFOne.NET
dotnet remove package Gnostice.DocumentStudio.NET
dotnet remove package Gnostice.PDFOne.NET
dotnet remove package Gnostice.XtremeDocumentStudio.NET

# Install IronPDF
dotnet add package IronPdf
# Remove Gnostice PDFOnepackages
dotnet remove package PDFOne.NET
dotnet remove package Gnostice.DocumentStudio.NET
dotnet remove package Gnostice.PDFOne.NET
dotnet remove package Gnostice.XtremeDocumentStudio.NET

# Install IronPDF
dotnet add package IronPdf
SHELL

Inicio rápido de la migración

Paso 1: Actualizar la configuración de la licencia

Antes (Gnostice PDFOne):

// Gnostice license often set via config or property
PDFOne.License.LicenseKey = "YOUR-GNOSTICE-LICENSE";
// Gnostice license often set via config or property
PDFOne.License.LicenseKey = "YOUR-GNOSTICE-LICENSE";
' Gnostice license often set via config or property
PDFOne.License.LicenseKey = "YOUR-GNOSTICE-LICENSE"
$vbLabelText   $csharpLabel

Después (IronPDF):

// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";

// Or in appsettings.json:
// { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";

// Or in appsettings.json:
// { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }
' Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY"

' Or in appsettings.json:
' { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }
$vbLabelText   $csharpLabel

Paso 2: Actualizar las importaciones de espacios de nombres

// Before (Gnostice PDFOne)
using Gnostice.PDFOne;
using Gnostice.PDFOne.Document;
using Gnostice.PDFOne.Graphics;

// After (IronPDF)
using IronPdf;
using IronPdf.Editing;
// Before (Gnostice PDFOne)
using Gnostice.PDFOne;
using Gnostice.PDFOne.Document;
using Gnostice.PDFOne.Graphics;

// After (IronPDF)
using IronPdf;
using IronPdf.Editing;
Imports IronPdf
Imports IronPdf.Editing
$vbLabelText   $csharpLabel

Referencia completa de la API

Mapeo de clases principales

Gnostice PDFOne IronPDF Descripción
PDFDocument PdfDocument Clase de documento PDF principal
PDFPage PdfDocument.Pages[i] Representación de la página
PDFFont Estilo CSS Especificación tipográfica
PDFTextElement Contenido HTML Contenido del texto
PDFImageElement Etiquetas HTML <img> Contenido de la imagen
DocExporter ChromePdfRenderer Conversión de HTML/URL a PDF

Operaciones de documentos

Gnostice PDFOne IronPDF
new PDFDocument() new PdfDocument()
doc.Load(path) PdfDocument.FromFile(path)
doc.Open() N/A (automático)
doc.Save(path) pdf.SaveAs(path)
doc.Close() pdf.Dispose()
doc.Pages.Count pdf.PageCount
doc.Pages.Add() Renderizar HTML o fusionar

Operaciones de fusión

Gnostice PDFOne IronPDF
doc.Append(otherDoc) PdfDocument.Merge(pdf1, pdf2)
Varias llamadas Append() PdfDocument.Merge(list)

Ejemplos de migración de código

Ejemplo 1: Conversión de HTML a PDF

Antes (Gnostice PDFOne):

// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Graphics;
using System;

class Program
{
    static void Main()
    {
        PDFDocument doc = new PDFDocument();
        doc.Open();

        PDFPage page = doc.Pages.Add();

        // PDFOne doesn't have direct HTML a PDFconversion
        // You need to use Document Studio for HTML conversion
        // Or manually parse and render HTML elements

        PDFTextElement textElement = new PDFTextElement();
        textElement.Text = "Simple text conversion instead of HTML";
        textElement.Draw(page, 10, 10);

        doc.Save("output.pdf");
        doc.Close();
    }
}
// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Graphics;
using System;

class Program
{
    static void Main()
    {
        PDFDocument doc = new PDFDocument();
        doc.Open();

        PDFPage page = doc.Pages.Add();

        // PDFOne doesn't have direct HTML a PDFconversion
        // You need to use Document Studio for HTML conversion
        // Or manually parse and render HTML elements

        PDFTextElement textElement = new PDFTextElement();
        textElement.Text = "Simple text conversion instead of HTML";
        textElement.Draw(page, 10, 10);

        doc.Save("output.pdf");
        doc.Close();
    }
}
Imports Gnostice.PDFOne
Imports Gnostice.PDFOne.Graphics
Imports System

Module Program
    Sub Main()
        Dim doc As New PDFDocument()
        doc.Open()

        Dim page As PDFPage = doc.Pages.Add()

        ' PDFOne doesn't have direct HTML to PDF conversion
        ' You need to use Document Studio for HTML conversion
        ' Or manually parse and render HTML elements

        Dim textElement As New PDFTextElement()
        textElement.Text = "Simple text conversion instead of HTML"
        textElement.Draw(page, 10, 10)

        doc.Save("output.pdf")
        doc.Close()
    End Sub
End Module
$vbLabelText   $csharpLabel

Después (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = "<h1>Hello World</h1><p>This is HTML content.</p>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = "<h1>Hello World</h1><p>This is HTML content.</p>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        Dim html As String = "<h1>Hello World</h1><p>This is HTML content.</p>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

La diferencia es sustancial: Gnostice PDFOneno puede convertir directamente HTML a PDF: hay que crear manualmente elementos de texto y posicionarlos con coordenadas. ChromePdfRenderer deIronPDFproporciona representación HTML directa con soporte completo para CSS3 y JavaScript . Consulte la documentación HTML a PDF para obtener más opciones de conversión.

Ejemplo 2: Combinar archivos PDF

Antes (Gnostice PDFOne):

// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Document;
using System;

class Program
{
    static void Main()
    {
        PDFDocument doc1 = new PDFDocument();
        doc1.Load("document1.pdf");

        PDFDocument doc2 = new PDFDocument();
        doc2.Load("document2.pdf");

        PDFDocument mergedDoc = new PDFDocument();
        mergedDoc.Open();

        mergedDoc.Append(doc1);
        mergedDoc.Append(doc2);

        mergedDoc.Save("merged.pdf");

        doc1.Close();
        doc2.Close();
        mergedDoc.Close();
    }
}
// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Document;
using System;

class Program
{
    static void Main()
    {
        PDFDocument doc1 = new PDFDocument();
        doc1.Load("document1.pdf");

        PDFDocument doc2 = new PDFDocument();
        doc2.Load("document2.pdf");

        PDFDocument mergedDoc = new PDFDocument();
        mergedDoc.Open();

        mergedDoc.Append(doc1);
        mergedDoc.Append(doc2);

        mergedDoc.Save("merged.pdf");

        doc1.Close();
        doc2.Close();
        mergedDoc.Close();
    }
}
Imports Gnostice.PDFOne
Imports Gnostice.PDFOne.Document
Imports System

Module Program
    Sub Main()
        Dim doc1 As New PDFDocument()
        doc1.Load("document1.pdf")

        Dim doc2 As New PDFDocument()
        doc2.Load("document2.pdf")

        Dim mergedDoc As New PDFDocument()
        mergedDoc.Open()

        mergedDoc.Append(doc1)
        mergedDoc.Append(doc2)

        mergedDoc.Save("merged.pdf")

        doc1.Close()
        doc2.Close()
        mergedDoc.Close()
    End Sub
End Module
$vbLabelText   $csharpLabel

Después (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");

        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");

        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}
Imports IronPdf
Imports System
Imports System.Collections.Generic

Module Program
    Sub Main()
        Dim pdf1 = PdfDocument.FromFile("document1.pdf")
        Dim pdf2 = PdfDocument.FromFile("document2.pdf")

        Dim merged = PdfDocument.Merge(pdf1, pdf2)
        merged.SaveAs("merged.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

El método PDFOne de Gnostice requiere crear un nuevo documento, abrirlo, cargar los documentos fuente por separado, anexar cada uno de ellos y cerrar manualmente los tres documentos. El método estático Merge deIronPDFmaneja esto en tres líneas con una gestión de recursos adecuada. Más información sobre mezclar y dividir archivos PDF.

Ejemplo 3: Añadir una marca de agua a un PDF

Antes (Gnostice PDFOne):

// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Graphics;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        PDFDocument doc = new PDFDocument();
        doc.Load("input.pdf");

        PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48);

        foreach (PDFPage page in doc.Pages)
        {
            PDFTextElement watermark = new PDFTextElement();
            watermark.Text = "CONFIDENTIAL";
            watermark.Font = font;
            watermark.Color = Color.FromArgb(128, 255, 0, 0);
            watermark.RotationAngle = 45;

            watermark.Draw(page, 200, 400);
        }

        doc.Save("watermarked.pdf");
        doc.Close();
    }
}
// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Graphics;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        PDFDocument doc = new PDFDocument();
        doc.Load("input.pdf");

        PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48);

        foreach (PDFPage page in doc.Pages)
        {
            PDFTextElement watermark = new PDFTextElement();
            watermark.Text = "CONFIDENTIAL";
            watermark.Font = font;
            watermark.Color = Color.FromArgb(128, 255, 0, 0);
            watermark.RotationAngle = 45;

            watermark.Draw(page, 200, 400);
        }

        doc.Save("watermarked.pdf");
        doc.Close();
    }
}
Imports Gnostice.PDFOne
Imports Gnostice.PDFOne.Graphics
Imports System
Imports System.Drawing

Module Program
    Sub Main()
        Dim doc As New PDFDocument()
        doc.Load("input.pdf")

        Dim font As New PDFFont(PDFStandardFont.Helvetica, 48)

        For Each page As PDFPage In doc.Pages
            Dim watermark As New PDFTextElement()
            watermark.Text = "CONFIDENTIAL"
            watermark.Font = font
            watermark.Color = Color.FromArgb(128, 255, 0, 0)
            watermark.RotationAngle = 45

            watermark.Draw(page, 200, 400)
        Next

        doc.Save("watermarked.pdf")
        doc.Close()
    End Sub
End Module
$vbLabelText   $csharpLabel

Después (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");

        var watermark = new TextStamper()
        {
            Text = "CONFIDENTIAL",
            FontSize = 48,
            Opacity = 50,
            Rotation = 45,
            VerticalAlignment = VerticalAlignment.Middle,
            HorizontalAlignment = HorizontalAlignment.Center
        };

        pdf.ApplyStamp(watermark);
        pdf.SaveAs("watermarked.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");

        var watermark = new TextStamper()
        {
            Text = "CONFIDENTIAL",
            FontSize = 48,
            Opacity = 50,
            Rotation = 45,
            VerticalAlignment = VerticalAlignment.Middle,
            HorizontalAlignment = HorizontalAlignment.Center
        };

        pdf.ApplyStamp(watermark);
        pdf.SaveAs("watermarked.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Editing
Imports System

Module Program
    Sub Main()
        Dim pdf = PdfDocument.FromFile("input.pdf")

        Dim watermark = New TextStamper() With {
            .Text = "CONFIDENTIAL",
            .FontSize = 48,
            .Opacity = 50,
            .Rotation = 45,
            .VerticalAlignment = VerticalAlignment.Middle,
            .HorizontalAlignment = HorizontalAlignment.Center
        }

        pdf.ApplyStamp(watermark)
        pdf.SaveAs("watermarked.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

El enfoque de Gnostice PDFOnerequiere crear objetos PDFFont, iterar manualmente a través de las páginas, calcular coordenadas (200, 400) y configurar propiedades en objetos PDFTextElement. El TextStamper deIronPDFproporciona una configuración declarativa con centrado automático y aplicación de páginas, sin necesidad de cálculos de coordenadas. Consulte la documentación de marca de agua para obtener opciones adicionales.


Notas de migración críticas

Diseño basado en coordenadas a HTML/CSS

El cambio de paradigma más significativo en esta migración de Gnostice PDFOnees pasar del posicionamiento basado en coordenadas al diseño HTML/CSS:

// Gnostice PDFOne: Manual coordinate positioning
watermark.Draw(page, 200, 400);  // X=200, Y=400

// IronPDF: Declarative alignment
watermark.VerticalAlignment = VerticalAlignment.Middle;
watermark.HorizontalAlignment = HorizontalAlignment.Center;
// Gnostice PDFOne: Manual coordinate positioning
watermark.Draw(page, 200, 400);  // X=200, Y=400

// IronPDF: Declarative alignment
watermark.VerticalAlignment = VerticalAlignment.Middle;
watermark.HorizontalAlignment = HorizontalAlignment.Center;
' Gnostice PDFOne: Manual coordinate positioning
watermark.Draw(page, 200, 400)  ' X=200, Y=400

' IronPDF: Declarative alignment
watermark.VerticalAlignment = VerticalAlignment.Middle
watermark.HorizontalAlignment = HorizontalAlignment.Center
$vbLabelText   $csharpLabel

Objetos de fuente a estilos CSS

// Gnostice PDFOne
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48);
watermark.Font = font;

//IronPDF- use CSS in HTML content
var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 48pt;'>Text</span>";
// Gnostice PDFOne
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48);
watermark.Font = font;

//IronPDF- use CSS in HTML content
var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 48pt;'>Text</span>";
Imports Gnostice.PDFOne

' Gnostice PDFOne
Dim font As New PDFFont(PDFStandardFont.Helvetica, 48)
watermark.Font = font

' IronPDF- use CSS in HTML content
Dim html As String = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 48pt;'>Text</span>"
$vbLabelText   $csharpLabel

Indexación de páginas

Gnostice PDFOne suele utilizar páginas con 1 índice, mientras queIronPDFutiliza páginas con 0 índices (convención estándar de .NET):

// Gnostice PDFOne: May use 1-indexed
var page = doc.Pages[1];  // First page

// IronPDF: 0-indexed
var page = pdf.Pages[0];  // First page
// Gnostice PDFOne: May use 1-indexed
var page = doc.Pages[1];  // First page

// IronPDF: 0-indexed
var page = pdf.Pages[0];  // First page
' Gnostice PDFOne: May use 1-indexed
Dim page = doc.Pages(1)  ' First page

' IronPDF: 0-indexed
Dim page = pdf.Pages(0)  ' First page
$vbLabelText   $csharpLabel

Características que ahora funcionan

Tras migrar de Gnostice PDFOnea IronPDF, estas funciones antes problemáticas o imposibles estarán disponibles:

  • CSS externo: Las hojas de estilo que no funcionaban en Gnostice PDFOneahora se representan correctamente
  • Contenido de JavaScript : ahora aparece el contenido dinámico que faltaba
  • Idiomas RTL: el árabe, el hebreo y otros idiomas de derecha a izquierda funcionan correctamente
  • CSS Grid y Flexbox: Las técnicas de diseño modernas son totalmente compatibles
  • Firmas digitales: Firma confiable de certificados X509

Solución de problemas

Asunto 1: PDFTextElement no encontrado

Problema: PDFTextElement no existe en IronPDF.

Solución: utilice contenido HTML o TextStamper:

// For new documents - render HTML
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<p>Your text here</p>");

// For existing documents - use stampers
var stamper = new TextStamper() { Text = "Added Text" };
pdf.ApplyStamp(stamper);
// For new documents - render HTML
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<p>Your text here</p>");

// For existing documents - use stampers
var stamper = new TextStamper() { Text = "Added Text" };
pdf.ApplyStamp(stamper);
Imports IronPdf

' For new documents - render HTML
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<p>Your text here</p>")

' For existing documents - use stampers
Dim stamper As New TextStamper() With {.Text = "Added Text"}
pdf.ApplyStamp(stamper)
$vbLabelText   $csharpLabel

Número 2: Objetos PDFFont

Problema: Gnostice PDFOneutiliza objetos PDFFont;IronPDFutiliza CSS.

Solución:

// Gnostice PDFOne
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 12);

//IronPDF- use CSS
var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 12pt;'>Text</span>";
// Gnostice PDFOne
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 12);

//IronPDF- use CSS
var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 12pt;'>Text</span>";
' Gnostice PDFOne
Dim font As New PDFFont(PDFStandardFont.Helvetica, 12)

' IronPDF- use CSS
Dim html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 12pt;'>Text</span>"
$vbLabelText   $csharpLabel

Edición 3: DocExporter no encontrado

Problema: la clase DocExporter no existe en IronPDF.

Solución: Utilice ChromePdfRenderer:

// Gnostice PDFOne
DocExporter exporter = new DocExporter();
exporter.Export(doc, "output.pdf", DocumentFormat.PDF);

// IronPDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
pdf.SaveAs("output.pdf");
// Gnostice PDFOne
DocExporter exporter = new DocExporter();
exporter.Export(doc, "output.pdf", DocumentFormat.PDF);

// IronPDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
pdf.SaveAs("output.pdf");
' Gnostice PDFOne
Dim exporter As New DocExporter()
exporter.Export(doc, "output.pdf", DocumentFormat.PDF)

' IronPDF
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlFileAsPdf("input.html")
pdf.SaveAs("output.pdf")
$vbLabelText   $csharpLabel

Número 4: Mejoras de memoria

Problema: Gnostice PDFOnehabía informado fugas de memoria.

Solución:IronPDFproporciona una gestión de memoria estable. Utilice patrones de eliminación adecuados:

using (var pdf = PdfDocument.FromFile("large.pdf"))
{
    // Process PDF
    pdf.SaveAs("output.pdf");
}  // Automatically disposed
using (var pdf = PdfDocument.FromFile("large.pdf"))
{
    // Process PDF
    pdf.SaveAs("output.pdf");
}  // Automatically disposed
Imports PdfDocument

Using pdf = PdfDocument.FromFile("large.pdf")
    ' Process PDF
    pdf.SaveAs("output.pdf")
End Using
$vbLabelText   $csharpLabel

Lista de comprobación de la migración

Pre-Migración

  • Inventario de todos los usos de Gnostice PDFOneen el código base
  • Tenga en cuenta las características que no funcionaban (CSS, JS, RTL): ¡ahora funcionarán!
  • Documentar problemas de memoria para realizar pruebas de comparación
  • Obtener la clave de licencia de IronPDF
  • Crear rama de migración en el control de versiones

Migración de código

  • Eliminar paquetes NuGet de Gnostice PDFOne
  • Instalar el paquete NuGet deIronPDF: dotnet add package IronPdf
  • Actualizar las importaciones de espacios de nombres
  • Reemplazar la configuración de la clave de licencia
  • Convertir PDFDocument a PdfDocument
  • Convertir DocExporter a ChromePdfRenderer
  • Reemplazar el dibujo basado en coordenadas con estampado HTML
  • Actualización PDFFont al estilo CSS
  • Convertir doc.Append() a PdfDocument.Merge()

Pruebas

  • Prueba de conversión de HTML a PDF
  • Verificar que el CSS externo ahora funciona
  • Probar contenido dependiente de JavaScript
  • Probar idiomas RTL (si es necesario)
  • Prueba firmas digitales (¡ahora disponibles!)
  • Prueba de fusión de PDF
  • Prueba de marca de agua
  • Comparar el uso de la memoria

Posmigración

  • Eliminar la licencia de Gnostice PDFOne
  • Actualización de la documentación
  • Eliminar soluciones alternativas para las limitaciones de Gnostice PDFOne
  • Capacitar al equipo sobre la API de IronPDF

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame