IRONSOFTWAREHOME
VIDÉOS

Comment aplatir les images PDF en C# avec IronPDF

Curtis Chau
Curtis Chau
Updated: 19 juillet 2026

La migration de Gnostice PDFOnevers IronPDF transforme 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. Le package NuGet hérité PDFOne.NET est également maintenant obsolète (dernière version 24.1.60, 1 juillet 2024), le vendeur dirigeant les nouveaux travaux vers les packages Gnostice.DocumentStudio.* :

  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

AspectGnostice PDFOneIronPDF
CSS externeNon pris en chargePrise en charge
Exécution JavaScriptNon pris en chargeMoteur Chromium complet
Langues RTLNon pris en chargePrise en charge complète de l'Unicode
Signatures numériquesLimité/manquantPrise en charge complète de X509
PlateformeProduits fragmentésBibliothèque unique et unifiée
Stabilité de la mémoireProblèmes signalésStable, bien géré
HTML vers PDFBasique, nécessite des solutions de contournementRendu de qualité Chrome
Courbe d'apprentissageAPI complexeAPI simple et intuitive
CSS modernes (Flexbox, Grid)Non pris en chargePrise en charge complète de CSS3
Traitement des imagesProblèmes connusFiable

Pour les équipes planifiant l'adoption de .NET 10 et C# 14,IronPDF fournit 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é

FonctionComplexité de la migration
Charger/Enregistrer des PDFTrès faible
Fusionner des PDFTrès faible
Diviser les PDFFaible
Extraction de texteFaible
FiligranesFaible
En-têtes/Pieds de pageFaible
HTML vers PDFFaible
ChiffrementMoyen
Champs de formulaireMoyen
Signatures numériquesFaible

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 :**IronPDF prend 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 licence IronPDF sur 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" .
SHELL

Modifications du paquet NuGet

# Remove Gnostice packages (PDFOne.NET is the legacy, deprecated package)
dotnet remove package PDFOne.NET
dotnet remove package Gnostice.DocumentStudio.WinForms
dotnet remove package Gnostice.DocumentStudio.WPF
dotnet remove package Gnostice.DocumentStudio.ASP
dotnet remove package Gnostice.DocumentStudio.ASP.Core
dotnet remove package Gnostice.DocumentStudio.Xamarin

# Install IronPDF
dotnet add package IronPdf
SHELL

Migration rapide

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

Avant (Gnostice PDFOne):

// Gnostice PDFOnelicense is set via the static PDFOne class
Gnostice.PDFOne.PDFOne.LicenseKey = "YOUR-GNOSTICE-LICENSE";
C#

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" }

É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;

Référence API complète

Mappage des classes de base

Gnostice PDFOneIronPDFDescription du projet
PDFDocumentPdfDocumentClasse du document PDF principal
PDFPagePdfDocument.Pages[i]Représentation des pages
PDFFontStyle CSSSpécification des polices de caractères
PDFTextElementContenu HTMLContenu du texte
PDFImageElementbalises HTML <img>Contenu de l'image
DocExporterChromePdfRendererConversion HTML/URL en PDF

Opérations documentaires

Gnostice PDFOneIronPDF
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.Countpdf.PageCount
doc.Pages.Add()Rendre HTML ou fusionner

Opérations de fusion

Gnostice PDFOneIronPDF
doc.Append(otherDoc)PdfDocument.Merge(pdf1, pdf2)
Appels multiples Append()PdfDocument.Merge(list)

Exemples de migration de code

Exemple 1 : Conversion HTML vers PDF

Avant (Gnostice PDFOne):

// NuGet: Install-Package PDFOne.NET (deprecated; vendor recommends Gnostice.DocumentStudio.WinForms)
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 vers 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();
    }
}
C#

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");
    }
}

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. ChromePdfRenderer d'IronPDF 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 PDFOne.NET (deprecated; vendor recommends Gnostice.DocumentStudio.WinForms)
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();
    }
}
C#

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");
    }
}

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 PDFOne.NET (deprecated; vendor recommends Gnostice.DocumentStudio.WinForms)
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();
    }
}
C#

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");
    }
}

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. TextStamper d'IronPDF fournit une configuration déclarative avec un centrage automatique et une application de la page — aucun calcul de coordonnées n'est 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;

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>";

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

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);

Numéro 2 : Objets PDFFont

Problem: Gnostice PDFOneuses PDFFont objects;IronPDF utilise 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>";

Édition 3 : DocExporter introuvable

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

Solution : Use 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");

Edition 4 : Améliorations de la mémoire

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

**Solution :**IronPDF assure 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

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
  • Mettre à jour PDFFont pour le style CSS
  • 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

Veuillez noter: Gnostice est une marque déposée de son propriétaire respectif. Ce site n'est pas affilié, approuvé ou parrainé par Gnostice Information Technologies. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont à titre informatif uniquement et reflètent les informations publiquement disponibles au moment de l'écriture.
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 et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise