Passer au contenu du pied de page
GUIDES DE MIGRATION

Comment migrer de GemBox PDF vers IronPDF en C#

Migrer de GemBox PDFversIronPDF: Guide de migration complet en C

La migration de GemBox PDFversIronPDFtransforme votre flux de travail PDF .NET, qui passe d'une construction de document programmatique basée sur les coordonnées à un rendu moderne basé sur HTML/CSS. Ce guide propose un chemin de migration complet, étape par étape, qui élimine les limites de paragraphes et simplifie la création de documents pour les développeurs .NET professionnels.

Pourquoi migrer de GemBox PDFvers IronPDF

Les défis PDF de GemBox

GemBox PDF est un composant PDF .NET performant, mais il présente des limites importantes qui affectent le développement dans le monde réel :

  1. Limite de 20 paragraphes dans la version gratuite : La version gratuite vous limite à 20 paragraphes, et les cellules des tableaux comptent dans cette limite. Un simple tableau de 10 lignes et 5 colonnes utilise 50 "paragraphes", ce qui rend la version gratuite inutilisable même pour des documents commerciaux de base.

  2. <Pas de conversion HTML-PDF : GemBox PDFnécessite une construction programmatique du document. Vous devez calculer les coordonnées et positionner manuellement chaque élément - il n'y a pas de simple capacité de "rendre ce HTML".

  3. Mise en page basée sur les coordonnées : Contrairement à HTML/CSS où la mise en page se fait naturellement, GemBox PDFvous oblige à calculer les positions X/Y exactes de chaque élément de texte, image et forme.

  4. Ensemble limité de fonctionnalités : Par rapport aux bibliothèques PDF complètes, GemBox PDFse concentre sur les opérations de base - lecture, écriture, fusion, division - sans fonctionnalités avancées telles que le rendu HTML ou la prise en charge des feuilles de style CSS modernes.

  5. Programmatique uniquement : Toute modification de la conception nécessite des changements de code. Vous souhaitez modifier l'espacement ? Recalculer les coordonnées. Vous souhaitez une taille de police différente ? Ajustez toutes les positions Y en dessous.

  6. Comptage des cellules de tableau : la limite de paragraphe compte les cellules de tableau, et pas seulement les paragraphes visibles. Cela rend la version gratuite pratiquement inutile pour les documents contenant des tableaux.

  7. Courbe d'apprentissage pour la conception : Les développeurs doivent penser en termes de coordonnées plutôt qu'en termes de flux de documents, ce qui rend des tâches simples comme "ajouter un paragraphe" étonnamment complexes.

Comparaison GemBox PDFvs IronPDF

Aspect GemBox PDF IronPDF
Limites de la version gratuite 20 paragraphes (y compris les cellules de tableau) Filigrane uniquement, aucune limite de contenu
HTML vers PDF Non pris en charge Moteur Chromium complet
Approche de la mise en page Basé sur les coordonnées, manuel Mise en page HTML/CSS
Tableaux Compter dans la limite des paragraphes Illimité, utiliser des tableaux HTML
CSS moderne Sans objet Flexbox, grille, animations CSS3
Support JavaScript Sans objet Exécution complète de JavaScript
Modifications de la conception Recalculer les coordonnées Édition de HTML/CSS
Courbe d'apprentissage Système de coordonnées PDF HTML/CSS (familier du web)

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 qui s'appuie sur des technologies web familières pour la génération de PDF.


Évaluation de la complexité de la migration

Estimation de l'effort par fonctionnalité

Fonction Complexité de la migration Notes
Charger/Enregistrer des PDF Très faible Mappage direct des méthodes
Fusionner des PDF Très faible Mappage direct des méthodes
Diviser les PDF Faible Gestion de l'index des pages
Extraction de texte Très faible Mappage direct des méthodes
Ajouter du texte Moyen Coordinate → HTML
Tableaux Faible Manuel → Tableaux HTML
Images Faible Coordinate → HTML
Filigranes Faible Différentes API
Protection par mot de passe Moyen Structure différente
Champs de formulaire Moyen Différences entre les API

Changement de paradigme

Le changement le plus important dans cette migration PDF GemBox est le passage d'une mise en page basée sur les coordonnées à une mise en page HTML/CSS :

GemBox PDF :  "Dessiner un texte à la position (100, 700)"
IronPDF :     "Rendre ce HTML avec un style CSS"

Ce changement de paradigme est généralement plus facile pour les développeurs familiarisés avec les technologies web, mais il nécessite de penser les PDF différemment.


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 licenceIronPDFà partir de ironpdf.com
  3. Sauvegarde : Créer une branche pour le travail de migration
  4. Connaissances en HTML/CSS : Une connaissance de base est utile mais pas obligatoire

Identifier toutes les utilisations de GemBox PDF

# Find all GemBox PDFreferences
grep -r "GemBox\.Pdf\|PdfDocument\|PdfPage\|PdfFormattedText\|ComponentInfo\.SetLicense" --include="*.cs" .

# Find package references
grep -r "GemBox\.Pdf" --include="*.csproj" .
# Find all GemBox PDFreferences
grep -r "GemBox\.Pdf\|PdfDocument\|PdfPage\|PdfFormattedText\|ComponentInfo\.SetLicense" --include="*.cs" .

# Find package references
grep -r "GemBox\.Pdf" --include="*.csproj" .
SHELL

Modifications du paquet NuGet

# Remove GemBox PDF
dotnet remove package GemBox.Pdf

# Install IronPDF
dotnet add package IronPdf
# Remove GemBox PDF
dotnet remove package GemBox.Pdf

# Install IronPDF
dotnet add package IronPdf
SHELL

Migration rapide

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

Avant (GemBox PDF):

// Must call before any GemBox PDFoperations
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
// Or for professional:
ComponentInfo.SetLicense("YOUR-PROFESSIONAL-LICENSE");
// Must call before any GemBox PDFoperations
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
// Or for professional:
ComponentInfo.SetLicense("YOUR-PROFESSIONAL-LICENSE");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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" }
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

// Before (GemBox PDF)
using GemBox.Pdf;
using GemBox.Pdf.Content;

// After (IronPDF)
using IronPdf;
using IronPdf.Editing;
// Before (GemBox PDF)
using GemBox.Pdf;
using GemBox.Pdf.Content;

// After (IronPDF)
using IronPdf;
using IronPdf.Editing;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Étape 3 : Modèle de conversion de base

Avant (GemBox PDF):

using GemBox.Pdf;
using GemBox.Pdf.Content;

ComponentInfo.SetLicense("FREE-LIMITED-KEY");

using (var document = new PdfDocument())
{
    var page = document.Pages.Add();
    var formattedText = new PdfFormattedText()
    {
        Text = "Hello World",
        FontSize = 24
    };

    page.Content.DrawText(formattedText, new PdfPoint(100, 700));
    document.Save("output.pdf");
}
using GemBox.Pdf;
using GemBox.Pdf.Content;

ComponentInfo.SetLicense("FREE-LIMITED-KEY");

using (var document = new PdfDocument())
{
    var page = document.Pages.Add();
    var formattedText = new PdfFormattedText()
    {
        Text = "Hello World",
        FontSize = 24
    };

    page.Content.DrawText(formattedText, new PdfPoint(100, 700));
    document.Save("output.pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Après (IronPDF):

using IronPdf;

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1 style='font-size:24px;'>Hello World</h1>");
pdf.SaveAs("output.pdf");
using IronPdf;

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1 style='font-size:24px;'>Hello World</h1>");
pdf.SaveAs("output.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Différences Clés :

  • Aucun calcul de coordonnées n'est nécessaire
  • HTML/CSS au lieu de la mise en page programmatique
  • Aucune limite de paragraphe
  • Un code plus simple et plus lisible

Référence API complète

Cartographie des espaces de noms

GemBox PDF IronPDF
GemBox.Pdf IronPDF
GemBox.Pdf.Content IronPDF(le contenu est en HTML)
GemBox.Pdf.Security IronPDF(SecuritySettings)
GemBox.Pdf.Forms IronPdf.Forms

Mappage des classes de base

GemBox PDF IronPDF Description du projet
Document PDF Document PDF Classe du document PDF principal
PdfPage PdfDocument.Pages[i] Représentation des pages
PdfContent N/A (utiliser HTML) Contenu de la page
PdfFormattedText N/A (utiliser HTML) Texte formaté
PdfPoint N/A (utiliser le positionnement CSS) Coordonner le positionnement
ComponentInfo.SetLicense() IronPdf.License.LicenseKey Gestion des licences

Opérations documentaires

GemBox PDF IronPDF Notes
new PdfDocument() new PdfDocument() Créer un nouveau document
PdfDocument.Load(path) PdfDocument.FromFile(path) Charger à partir d'un fichier
PdfDocument.Load(stream) PdfDocument.FromStream(stream) Charger à partir du flux
document.Save(path) pdf.SaveAs(path) Enregistrer dans un fichier
document.Save(stream) pdf.Stream ou pdf.BinaryData Obtenir en flux/octets

Opérations de la page

GemBox PDF IronPDF Notes
document.Pages.Add() Création via le rendu HTML Ajouter une nouvelle page
document.Pages.Count pdf.PageCount Nombre de pages
document.Pages[index] pdf.Pages[index] Page d'accès (toutes deux indexées à 0)
document.Pages.AddClone(pages) PdfDocument.Merge() Cloner/fusionner des pages

Opérations de texte et de contenu

GemBox PDF IronPDF Notes
new PdfFormattedText() Chaîne HTML Contenu du texte
formattedText.FontSize = 12 CSS font-size : 12pt Taille des caractères
formattedText.Font = ... CSS font-family : ... Famille de polices
page.Content.DrawText(text, point) renderer.RenderHtmlAsPdf(html) Rendu du texte
page.Content.GetText() pdf.ExtractTextFromPage(i) Extraire le texte

Exemples de migration de code

Exemple 1 : Conversion HTML vers PDF

Avant (GemBox PDF):

// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using GemBox.Pdf.Content;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        var document = PdfDocument.Load("input.html");
        document.Save("output.pdf");
    }
}
// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using GemBox.Pdf.Content;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        var document = PdfDocument.Load("input.html");
        document.Save("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Le ChromePdfRenderer d'IronPDF utilise un moteur Chromium moderne pour un rendu HTML/CSS/JavaScript précis. Contrairement à la prise en charge limitée du HTML par GemBox PDF,IronPDFpeut rendre n'importe quel contenu HTML avec une prise en charge complète de CSS3 et de JavaScript. Voir la documentation HTML vers PDF pour plus d'options de rendu.

Exemple 2 : Fusionner des fichiers PDF

Avant (GemBox PDF):

// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using System.Linq;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        using (var document = new PdfDocument())
        {
            var source1 = PdfDocument.Load("document1.pdf");
            var source2 = PdfDocument.Load("document2.pdf");

            document.Pages.AddClone(source1.Pages);
            document.Pages.AddClone(source2.Pages);

            document.Save("merged.pdf");
        }
    }
}
// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using System.Linq;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        using (var document = new PdfDocument())
        {
            var source1 = PdfDocument.Load("document1.pdf");
            var source2 = PdfDocument.Load("document2.pdf");

            document.Pages.AddClone(source1.Pages);
            document.Pages.AddClone(source2.Pages);

            document.Save("merged.pdf");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

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;

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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

La méthode statique Merge d'IronPDF simplifie l'opération - plus besoin de créer un document vide et de cloner les pages individuellement. En savoir plus sur la fusion et la division de PDF.

Exemple 3 : ajouter du texte à un PDF

Avant (GemBox PDF):

// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using GemBox.Pdf.Content;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        using (var document = new PdfDocument())
        {
            var page = document.Pages.Add();
            var formattedText = new PdfFormattedText()
            {
                Text = "Hello World",
                FontSize = 24
            };

            page.Content.DrawText(formattedText, new PdfPoint(100, 700));
            document.Save("output.pdf");
        }
    }
}
// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using GemBox.Pdf.Content;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        using (var document = new PdfDocument())
        {
            var page = document.Pages.Add();
            var formattedText = new PdfFormattedText()
            {
                Text = "Hello World",
                FontSize = 24
            };

            page.Content.DrawText(formattedText, new PdfPoint(100, 700));
            document.Save("output.pdf");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Après (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<p>Original Content</p>");

        var stamper = new TextStamper()
        {
            Text = "Hello World",
            FontSize = 24,
            HorizontalOffset = 100,
            VerticalOffset = 700
        };

        pdf.ApplyStamp(stamper);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<p>Original Content</p>");

        var stamper = new TextStamper()
        {
            Text = "Hello World",
            FontSize = 24,
            HorizontalOffset = 100,
            VerticalOffset = 700
        };

        pdf.ApplyStamp(stamper);
        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Pour l'ajout de texte aux PDF existants,IronPDFfournit la classe TextStamper qui offre un contrôle précis du positionnement. Pour les nouveaux documents, il suffit d'inclure le texte dans votre modèle HTML. Consultez la documentation sur l'estampillage pour des options supplémentaires.

Exemple 4 : Création de tableaux (la plus grande amélioration !)

Avant (GemBox PDF) - Chaque cellule compte pour la limite de 20 paragraphes:

using GemBox.Pdf;
using GemBox.Pdf.Content;

ComponentInfo.SetLicense("FREE-LIMITED-KEY");

using (var document = new PdfDocument())
{
    var page = document.Pages.Add();
    double y = 700;
    double[] xPositions = { 50, 200, 300, 400 };

    // Headers (4 paragraphs)
    var headers = new[] { "Product", "Price", "Qty", "Total" };
    for (int i = 0; i < headers.Length; i++)
    {
        var text = new PdfFormattedText { Text = headers[i], FontSize = 12 };
        page.Content.DrawText(text, new PdfPoint(xPositions[i], y));
    }
    y -= 20;

    // Data rows (4 paragraphs per row!)
    // Can only add a few rows before hitting 20-paragraph limit!

    document.Save("products.pdf");
}
using GemBox.Pdf;
using GemBox.Pdf.Content;

ComponentInfo.SetLicense("FREE-LIMITED-KEY");

using (var document = new PdfDocument())
{
    var page = document.Pages.Add();
    double y = 700;
    double[] xPositions = { 50, 200, 300, 400 };

    // Headers (4 paragraphs)
    var headers = new[] { "Product", "Price", "Qty", "Total" };
    for (int i = 0; i < headers.Length; i++)
    {
        var text = new PdfFormattedText { Text = headers[i], FontSize = 12 };
        page.Content.DrawText(text, new PdfPoint(xPositions[i], y));
    }
    y -= 20;

    // Data rows (4 paragraphs per row!)
    // Can only add a few rows before hitting 20-paragraph limit!

    document.Save("products.pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Après (IronPDF) - Pas de limites, des tableaux HTML corrects:

using IronPdf;

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

var html = @"
    <html>
    <head>
        <style>
            table { border-collapse: collapse; width: 100%; }
            th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
            th { background-color: #4CAF50; color: white; }
            tr:nth-child(even) { background-color: #f2f2f2; }
        </style>
    </head>
    <body>
        <table>
            <thead>
                <tr>
                    <th>Product</th>
                    <th>Price</th>
                    <th>Qty</th>
                    <th>Total</th>
                </tr>
            </thead>
            <tbody>
                <tr><td>Widget A</td><td>$19.99</td><td>5</td><td>$99.95</td></tr>
                <tr><td>Widget B</td><td>$29.99</td><td>3</td><td>$89.97</td></tr>
                <!-- Add hundreds or thousands of rows - no limit! -->
            </tbody>
        </table>
    </body>
    </html>";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("products.pdf");
using IronPdf;

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

var html = @"
    <html>
    <head>
        <style>
            table { border-collapse: collapse; width: 100%; }
            th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
            th { background-color: #4CAF50; color: white; }
            tr:nth-child(even) { background-color: #f2f2f2; }
        </style>
    </head>
    <body>
        <table>
            <thead>
                <tr>
                    <th>Product</th>
                    <th>Price</th>
                    <th>Qty</th>
                    <th>Total</th>
                </tr>
            </thead>
            <tbody>
                <tr><td>Widget A</td><td>$19.99</td><td>5</td><td>$99.95</td></tr>
                <tr><td>Widget B</td><td>$29.99</td><td>3</td><td>$89.97</td></tr>
                <!-- Add hundreds or thousands of rows - no limit! -->
            </tbody>
        </table>
    </body>
    </html>";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("products.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Il s'agit de l'amélioration la plus significative de la migration PDF de GemBox. Les tableaux qui étaient impossibles dans la version gratuite de GemBox PDFfonctionnent parfaitement dansIronPDFavec une prise en charge complète du style CSS.


Notesde migration essentielles

Coordonner au positionnement CSS

Si vous avez besoin d'un positionnement parfait au pixel près (similaire au système de coordonnées de GemBox PDF), utilisez le positionnement absolu CSS :

<div style="position:absolute; left:50px; top:750px; font-size:24px;">
    Text positioned at specific coordinates
</div>
<div style="position:absolute; left:50px; top:750px; font-size:24px;">
    Text positioned at specific coordinates
</div>
HTML

Indexation des pages

GemBox PDF etIronPDFutilisent tous deux des pages indexées à 0, ce qui rend cet aspect de la migration simple :

// GemBox PDF
var page = document.Pages[0];

// IronPDF
var page = pdf.Pages[0];
// GemBox PDF
var page = document.Pages[0];

// IronPDF
var page = pdf.Pages[0];
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Paramètres de sécurité

// GemBox PDF
document.SaveOptions.SetPasswordEncryption(userPassword, ownerPassword);

// IronPDF
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
// GemBox PDF
document.SaveOptions.SetPasswordEncryption(userPassword, ownerPassword);

// IronPDF
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Dépannage

Édition 1 : PdfFormattedText introuvable

Problème : PdfFormattedTextn'existe pas dans IronPDF.

Solution : Utilisez HTML avec un style CSS :

// GemBox PDF
var text = new PdfFormattedText { Text = "Hello", FontSize = 24 };

// IronPDF
var html = "<p style='font-size:24px;'>Hello</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
// GemBox PDF
var text = new PdfFormattedText { Text = "Hello", FontSize = 24 };

// IronPDF
var html = "<p style='font-size:24px;'>Hello</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Sujet 2 : Méthode DrawText introuvable

Problème : page.Content.DrawText() non disponible.

Solution : Créez du contenu via le rendu HTML ou utilisez des tampons :

// For new documents - render HTML
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Content</h1>");

// 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("<h1>Content</h1>");

// For existing documents - use stampers
var stamper = new TextStamper() { Text = "Added Text" };
pdf.ApplyStamp(stamper);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Enjeu 3 : Différences de chargement des documents

Problème : PdfDocument.Load() introuvable.

Solution : Utilisez PdfDocument.FromFile() ou FromStream() :

// GemBox PDF
var doc = PdfDocument.Load("input.pdf");

// IronPDF
var pdf = PdfDocument.FromFile("input.pdf");
// GemBox PDF
var doc = PdfDocument.Load("input.pdf");

// IronPDF
var pdf = PdfDocument.FromFile("input.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Edition 4 : Différences entre les méthodes d'enregistrement

Problème : la signature de la méthode document.Save() diffère.

Solution : Utilisez SaveAs() :

// GemBox PDF
document.Save("output.pdf");

// IronPDF
pdf.SaveAs("output.pdf");
// GemBox PDF
document.Save("output.pdf");

// IronPDF
pdf.SaveAs("output.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Liste de contrôle de la migration

Pré-migration

  • [Inventaire de toutes les utilisations de GemBox PDFdans la base de code
  • [Identifier les mises en page basées sur les coordonnées qui nécessitent une conversion HTML
  • [Évaluer les limites de paragraphe actuelles affectant votre code
  • [Obtenir la clé de licence IronPDF
  • [Créer une branche de migration dans le contrôle de version

Migration de code

  • [Supprimer le paquet NuGet de GemBox PDF: dotnet remove package GemBox.Pdf
  • [Installer le paquet NuGet IronPdf : dotnet add package IronPdf
  • [Mise à jour des importations d'espaces de noms
  • [Remplacer ComponentInfo.SetLicense()par IronPdf.License.LicenseKey
  • [Convertissez PdfDocument.Load() en PdfDocument.FromFile()
  • [Convertissez document.Save() en pdf.SaveAs()
  • [ ] Remplacer le texte basé sur les coordonnées par du contenu HTML
  • [Le projet est en cours d'élaboration, mais il n'est pas encore terminé
  • [Mise à jour des opérations de fusion pour utiliser PdfDocument.Merge()

Testing

  • [Vérifier que tous les documents sont générés correctement
  • [Valider l'apparence du document pour qu'il corresponde aux attentes
  • [Génération de tableaux de test (auparavant limitée par la règle des 20 paragraphes)
  • [Vérifier que l'extraction de texte fonctionne correctement
  • [Tester les opérations de fusion et de scission
  • [Valider les fonctionnalités de sécurité/encryptage

Post-Migration

  • [Supprimer les clés de licence GemBox PDF
  • [Mise à jour de la documentation
  • [Former l'équipe à l'approche HTML/CSS pour les PDF
  • [ ] Profitez d'un contenu illimité sans limite de paragraphes !

Conclusion

La migration de GemBox PDFversIronPDFélimine la limite frustrante de 20 paragraphes qui compte les cellules des tableaux, remplace le positionnement basé sur les coordonnées par une mise en page HTML/CSS intuitive, et fournit un moteur de rendu moderne basé sur Chromium pour une génération de documents précise.

Le changement de paradigme, de la construction programmatique de documents au rendu basé sur HTML, exploite les compétences que la plupart des développeurs possèdent déjà, réduisant le temps de développement et rendant les changements de conception aussi simples que l'édition de HTML et de CSS. Pour les équipes qui conçoivent des applications à forte densité documentaire, cette migration PDF de GemBox supprime les limites artificielles de contenu et ouvre des possibilités de génération de PDF complexes et professionnels.

Explorez la documentation complète IronPDF, tutoriel, et référence API pour accélérer votre migration.

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