Passer au contenu du pied de page
GUIDES DE MIGRATION

Comment migrer de Gnostice PDFOne vers IronPDF en C#

La migration de Gnostice PDFOneversIronPDFtransforme votre flux de travail PDF .NET d'une approche basée sur la coordination et fragmentée par plate-forme à une solution unifiée, alimentée par HTML/CSS, avec une prise en charge complète des normes Web modernes. Ce guide fournit un chemin de migration complet, étape par étape, qui élimine les limitations documentées autour de CSS, JavaScript et la stabilité de la mémoire pour les développeurs professionnels .NET.

Pourquoi migrer de Gnostice PDFOnevers IronPDF

Les défis PDFOne de Gnostice

Gnostice PDFOne et Document Studio .NET ont des limitations bien documentées qui affectent les applications de production :

  1. Absence de prise en charge CSS externe : la documentation de Gnostice PDFOneindique explicitement qu'il ne prend pas en charge les feuilles de style CSS externes, une exigence fondamentale pour la conversion moderne du Web vers le PDF.

  2. Absence d'exécution JavaScript : le contenu dynamique nécessitant JavaScript ne peut pas être rendu, ce qui rend impossible la conversion précise des applications Web modernes.

  3. Pas de conversion directe HTML vers PDF : Gnostice PDFOnene propose pas de conversion directe HTML vers PDF. Vous devez utiliser Document Studio pour la conversion HTML ou analyser et rendre manuellement les éléments HTML, ce qui représente un coût de développement important.

  4. Fragmentation de la plateforme : Des produits distincts pour WinForms, WPF, ASP.NET et Xamarin, chacun avec ses propres fonctionnalités et API. Plusieurs licences et bases de code peuvent être nécessaires.

  5. Fuites de mémoire et stabilité : Les forums d'utilisateurs et Stack Overflow signalent des fuites de mémoire persistantes, l'erreur JPEG n° 53 et des exceptions StackOverflow lors du traitement des images.

  6. Absence d'Unicode de droite à gauche : l'arabe, l'hébreu et les autres langues RTL ne sont pas pris en charge, ce qui constitue un obstacle majeur pour les applications internationales.

  7. Prise en charge limitée des signatures numériques : les signatures numériques ont toujours été absentes ou peu fiables dans Gnostice PDFOne.

  8. API basée sur les coordonnées : De nombreuses opérations nécessitent un positionnement manuel X/Y plutôt que des approches de mise en page modernes, ce qui exige des calculs précis pour le placement de chaque élément.

Comparaison entre Gnostice PDFOneet IronPDF

Aspect Gnostice PDFOne IronPDF
CSS externe Non pris en charge Prise en charge
Exécution JavaScript Non pris en charge Moteur Chromium complet
Langues RTL Non pris en charge Prise en charge complète de l'Unicode
Signatures numériques Limité/manquant Prise en charge complète de X509
Plateforme Produits fragmentés Bibliothèque unique et unifiée
Stabilité de la mémoire Problèmes signalés Stable, bien géré
HTML vers PDF Basique, nécessite des solutions de contournement Rendu de qualité Chrome
Courbe d'apprentissage API complexe API simple et intuitive
CSS modernes (Flexbox, Grid) Non pris en charge Prise en charge complète de CSS3
Traitement des images Problèmes connus Fiable

Pour les équipes qui prévoient l'adoption de .NET 10 et C# 14 jusqu'en 2025 et 2026,IronPDFconstitue une base à l'épreuve du temps avec une bibliothèque unifiée qui fonctionne de manière cohérente sur toutes les plateformes .NET.


Évaluation de la complexité de la migration

Estimation de l'effort par fonctionnalité

Fonction Complexité de la migration
Charger/Enregistrer des PDF Très faible
Fusionner des PDF Très faible
Diviser les PDF Faible
Extraction de texte Faible
Filigranes Faible
En-têtes/Pieds de page Faible
HTML vers PDF Faible
Chiffrement Moyen
Champs de formulaire Moyen
Signatures numériques Faible

Fonctionnalités que vous gagnez

Lors de la migration de Gnostice PDFOnevers IronPDF, ces fonctionnalités jusqu'alors impossibles deviennent disponibles :

  • Feuilles de style CSS externes
  • Exécution JavaScript
  • Prise en charge des langues RTL (arabe, hébreu)
  • Grille CSS et Flexbox
  • Signatures numériques fiables
  • Meilleure gestion de la mémoire
  • Prise en charge multiplateforme avec une base de code unique

Avant de commencer

Prérequis

  1. Version .NET :IronPDFprend en charge .NET Framework 4.6.2+ et .NET Core 2.0+ / .NET 5/6/7/8/9+.
  2. Clé de licence : Obtenez votre clé de licenceIronPDFsur IronPDF
  3. Sauvegarde : Créer une branche pour les travaux de migration

Identifier toutes les utilisations 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

Modifications du paquet 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

Migration rapide

Étape 1 : Mise à jour de la configuration de la licence

Avant (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

Aprè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

Étape 2 : mise à jour des importations de l'espace de noms

// 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

Référence API complète

Mappage des classes de base

Gnostice PDFOne IronPDF Description du projet
PDFDocument PdfDocument Classe du document PDF principal
PDFPage PdfDocument.Pages[i] Représentation des pages
PDFFont Style CSS Spécification des polices de caractères
PDFTextElement Contenu HTML Contenu du texte
PDFImageElement HTML <img> balises Contenu de l'image
DocExporter ChromePdfRenderer Conversion HTML/URL en PDF

Opérations documentaires

Gnostice PDFOne IronPDF
new PDFDocument() new PdfDocument()
doc.Load(path) PdfDocument.FromFile(path)
doc.Open() N/A (automatique)
doc.Save(path) pdf.SaveAs(path)
doc.Close() pdf.Dispose()
doc.Pages.Count pdf.PageCount
doc.Pages.Add() Rendre HTML ou fusionner

Opérations de fusion

Gnostice PDFOne IronPDF
doc.Append(otherDoc) PdfDocument.Merge(pdf1, pdf2)
Plusieurs appels Append() PdfDocument.Merge(list)

Exemples de migration de code

Exemple 1 : Conversion HTML vers PDF

Avant (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 to PDF conversion
        // 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 to PDF conversion
        // 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

Class Program
    Shared 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 Class
$vbLabelText   $csharpLabel

Aprè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 différence est de taille : Gnostice PDFOnene peut pas convertir directement HTML en PDF. Vous devez créer manuellement des éléments de texte et les positionner à l'aide de coordonnées. IronPDF's ChromePdfRenderer fournit un rendu HTML direct avec une prise en charge complète de CSS3 et JavaScript . Voir la documentation HTML vers PDF pour plus d'options de rendu.

Exemple 2 : Fusionner des fichiers PDF

Avant (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

Aprè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

L'approche PDFOne de Gnostice nécessite la création d'un nouveau document, son ouverture, le chargement séparé des documents sources, l'ajout de chacun d'entre eux et la fermeture manuelle des trois documents. La méthode statique Merge d'IronPDF gère cela en trois lignes avec une gestion appropriée des ressources. En savoir plus sur la fusion et la division de PDF.

Exemple 3 : Ajouter un filigrane au PDF

Avant (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

Aprè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

L'approche Gnostice PDFOnenécessite la création d'objets PDFFont, l'itération manuelle à travers les pages, le calcul des coordonnées (200, 400) et la définition des propriétés sur les objets PDFTextElement. IronPDF's TextStamper fournit une configuration déclarative avec centrage automatique et application de page - aucun calcul de coordonnées nécessaire. Consultez la documentation sur le tatouage numérique pour connaître les options supplémentaires.


Notes de migration essentielles

Mise en page basée sur les coordonnées vers HTML/CSS

Le changement de paradigme le plus important dans cette migration Gnostice PDFOneest le passage d'un positionnement basé sur les coordonnées à une mise en page 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

Les objets de police à la stylisation 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

Indexation des pages

Gnostice PDFOne utilise souvent des pages indexées à 1, tandis qu'IronPDF utilise des pages indexées à 0 (convention .NET standard) :

// 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

Caractéristiques qui fonctionnent maintenant

Après avoir migré de Gnostice PDFOnevers IronPDF, ces fonctionnalités auparavant problématiques ou impossibles deviennent disponibles :

  • CSS externe : les feuilles de style qui ne fonctionnaient pas dans Gnostice PDFOnes'affichent désormais correctement.
  • Contenu JavaScript : Le contenu dynamique qui manquait auparavant apparaît désormais.
  • Langues RTL : l'arabe, l'hébreu et les autres langues s'écrivant de droite à gauche fonctionnent correctement.
  • CSS Grid et Flexbox : les techniques de mise en page modernes sont entièrement prises en charge.
  • Signatures numériques : Signature de certificats X509 fiable

Dépannage

Édition 1 : PDFTextElement introuvable

Problème : PDFTextElement n'existe pas dans IronPDF.

Solution : Utilisez du contenu HTML ou 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

Numéro 2 : Objets PDFFont

Problème : Gnostice PDFOneutilise des objets PDFFont ;IronPDFutilise CSS.

Solution:

// 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

Édition 3 : DocExporter introuvable

Problème : la classe DocExporter n'existe pas dans IronPDF.

Solution : Utilisez 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

Edition 4 : Améliorations de la mémoire

Problème : Gnostice PDFOnea signalé des fuites de mémoire.

Solution :IronPDFassure une gestion stable de la mémoire. Utilisez des modèles d'élimination appropriés :

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

Liste de contrôle de la migration

Pré-migration

  • Inventorier toutes les utilisations de Gnostice PDFOnedans le code source
  • Notez les fonctionnalités qui ne fonctionnaient pas (CSS, JS, RTL) — elles fonctionneront maintenant !
  • Problèmes de mémoire du document pour les tests comparatifs
  • Obtenir une clé de licence IronPDF
  • Créer une branche de migration dans le système de contrôle de version

Migration de code

  • Supprimer les packages NuGet Gnostice PDFOne
  • Installez le package NuGet IronPDF : dotnet add package IronPdf
  • Mettre à jour les importations d'espace de noms
  • Remplacer la configuration de la clé de licence
  • Convertir PDFDocument en PdfDocument
  • Convertir DocExporter en ChromePdfRenderer
  • Remplacer le dessin basé sur les coordonnées par l'estampillage HTML
  • Mise à jour du style CSS PDFFont
  • Convertir doc.Append() en PdfDocument.Merge()

Essai

  • Tester la conversion de HTML en PDF
  • Vérifier que le CSS externe fonctionne désormais
  • Tester le contenu dépendant de JavaScript
  • Tester les langues RTL (si nécessaire)
  • Testez les signatures numériques (maintenant disponibles !)
  • Test de fusion de PDF
  • Test de tatouage numérique
  • Comparer l'utilisation de la mémoire

Après la migration

  • Supprimer la licence Gnostice PDFOne
  • Mise à jour de la documentation
  • Supprimer les solutions de contournement pour les limitations de Gnostice PDFOne
  • Former l'équipe à l'API IronPDF

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi