COMPARAISON

VectSharp vs IronPDF : Guide de comparaison technique

Lorsque les développeurs .NET doivent créer des documents PDF, ils sont confrontés à des bibliothèques dont les philosophies de conception sont fondamentalement différentes. VectSharpetIronPDFreprésentent deux approches distinctes de la génération de PDF : l'une axée sur les graphiques vectoriels et la visualisation scientifique, l'autre sur la création de documents à partir de contenu HTML. Cette comparaison technique examine les deux bibliothèques afin d'aider les architectes et les développeurs à choisir l'outil approprié à leurs besoins spécifiques.

Comprendre VectSharp

VectSharp est une bibliothèque de graphiques vectoriels conçue pour permettre aux développeurs de créer des dessins vectoriels complexes et de les exporter au format PDF. Contrairement aux bibliothèques PDF traditionnelles axées sur la création de documents, VectSharpest spécialisé dans le traitement des graphiques vectoriels, ce qui le rend particulièrement adapté aux applications nécessitant des dessins de haute précision tels que les visualisations scientifiques, les graphiques et les illustrations techniques.

La bibliothèque aborde la génération de PDF par le biais d'une API basée sur les coordonnées où les développeurs positionnent chaque élément avec des coordonnées X,Y exactes :

  • Orientation scientifique : Conçu principalement pour la visualisation, la représentation graphique et la création de diagrammes de données
  • Dessin basé sur les coordonnées : Tous les éléments nécessitent un positionnement explicite à l'aide de points à partir d'une origine située en haut à gauche
  • Approche axée sur le graphique : conçue pour les scientifiques créant des figures et des graphiques plutôt que des documents commerciaux
  • Logiciel libre : distribué sous licence LGPL, permettant la personnalisation sans licence commerciale

Limitations de VectSharp

La spécialisation de VectSharpintroduit des contraintes pour la génération de documents généraux :

  • Prise en charge HTML inexistante : impossible de convertir du HTML ou du CSS en PDF ; un dessin vectoriel manuel est nécessaire pour tout le contenu.
  • Pas de style CSS : tout le style doit être implémenté par programmation.
  • Exécution JavaScript impossible : impossible d'afficher le contenu Web dynamique
  • Aucune mise en page automatique : pas de retour à la ligne automatique, de pagination ni de mise en page dynamique ; les développeurs doivent tout gérer manuellement.
  • Gestion manuelle des pages : Chaque page doit être créée et gérée explicitement.

Comprendre IronPDF

IronPDF adopte une approche centrée sur le document, en utilisant HTML comme format de document universel pour la génération de PDF. Plutôt que d'exiger un positionnement basé sur les coordonnées, IronPDF rend le contenu HTML par le biais d'un moteur moderne basé sur Chromium avec une prise en charge complète de CSS3 et de JavaScript.

Les principales caractéristiques sont les suivantes

  • Architecture axée sur les documents : conçue pour une génération de documents robuste, notamment les factures, les rapports et les documents riches en contenu.
  • Approche HTML-First : utilise des technologies web que les développeurs connaissent déjà — HTML, CSS et JavaScript Moteur de rendu Chromium : compatible avec CSS3, Flexbox, Grid et JavaScript ES6+.
  • Mise en page automatique : gère automatiquement le retour à la ligne, la pagination et la mise en page.
  • Support commercial : mises à jour régulières, assistance et fonctionnalités de niveau entreprise

Comparaison des fonctionnalités

Le tableau suivant met en évidence les différences fondamentales entre VectSharpetIronPDF:

Fonction VectSharp IronPDF
Utilisation principale Graphiques vectoriels Création de documents
Sortie PDF Oui Oui
Support HTML Non Oui
Licence LGPL (Open Source) Commercial
Parfait pour Visualisations scientifiques Documents PDF généraux
Personnalisation Limité aux graphiques Documentations approfondies
Support CSS Non CSS3 complet
JavaScript Non ES6+ complet
Mise en page automatique Non Oui
Sauts de page automatiques Non Oui
Enveloppe de texte Manuel Automatique
Tables Dessin manuel HTML <table>
Fusionner des PDF Non Oui
Diviser les PDF Non Oui
Marqueurs d'eau Manuel Intégré
En-têtes/Pieds de page Manuel par page Automatique
Protection des mots de passe Non Oui
Signatures numériques Non Oui
Courbe d'apprentissage Haut (coordonnées) Faible (HTML/CSS)
Verbosité du code Très élevé Faible

Différences d'architecture des API

Les différences architecturales entre VectSharpetIronPDFapparaissent immédiatement lorsqu'on examine la manière dont chaque bibliothèque crée du contenu PDF.

VectSharpApproche basée sur les coordonnées

VectSharp exige des développeurs qu'ils créent des objets Document et Page, puis qu'ils dessinent chaque élément à l'aide des méthodes Graphics avec des coordonnées explicites :

// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using VectSharp.SVG;
using System.IO;

class Program
{
    static void Main()
    {
        // VectSharpdoesn't directly support HTML to PDF
        // It requires manual creation of graphics objects
        Document doc = new Document();
        Page page = new Page(595, 842); // A4 size
        Graphics graphics = page.Graphics;

        graphics.FillText(100, 100, "Hello from VectSharp", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));

        doc.Pages.Add(page);
        doc.SaveAsPDF("output.pdf");
    }
}
// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using VectSharp.SVG;
using System.IO;

class Program
{
    static void Main()
    {
        // VectSharpdoesn't directly support HTML to PDF
        // It requires manual creation of graphics objects
        Document doc = new Document();
        Page page = new Page(595, 842); // A4 size
        Graphics graphics = page.Graphics;

        graphics.FillText(100, 100, "Hello from VectSharp", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));

        doc.Pages.Add(page);
        doc.SaveAsPDF("output.pdf");
    }
}
$vbLabelText   $csharpLabel

Cette approche nécessite de comprendre les systèmes de coordonnées, les mesures de points et le positionnement explicite de chaque élément de texte, forme et graphique.

Approche HTML d'IronPDF

IronPDF utilise les langages HTML et CSS familiers, ce qui permet aux développeurs de créer des documents à l'aide des technologies web qu'ils connaissent déjà :

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF</h1><p>This is HTML content.</p>");
        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 from IronPDF</h1><p>This is HTML content.</p>");
        pdf.SaveAs("output.pdf");
    }
}
$vbLabelText   $csharpLabel

La classe ChromePdfRenderer gère automatiquement toute la mise en page, le positionnement et la pagination. Pour obtenir des conseils complets sur la conversion HTML, consultez le tutoriel HTML au PDF.

Dessiner des formes et du texte

La création de contenu visuel révèle les différences de paradigme entre la programmation de graphiques vectoriels et la génération de documents.

Dessin de formes avec VectSharp

VectSharp fournit des primitives graphiques de bas niveau pour dessiner des formes à l'aide de coordonnées explicites et d'objets GraphicsPath :

// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using System;

class Program
{
    static void Main()
    {
        Document doc = new Document();
        Page page = new Page(595, 842);
        Graphics graphics = page.Graphics;

        // Draw rectangle
        graphics.FillRectangle(50, 50, 200, 100, Colour.FromRgb(0, 0, 255));

        // Draw circle
        GraphicsPath circle = new GraphicsPath();
        circle.Arc(400, 100, 50, 0, 2 * Math.PI);
        graphics.FillPath(circle, Colour.FromRgb(255, 0, 0));

        // Add text
        graphics.FillText(50, 200, "VectSharp Graphics", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 20));

        doc.Pages.Add(page);
        doc.SaveAsPDF("shapes.pdf");
    }
}
// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using System;

class Program
{
    static void Main()
    {
        Document doc = new Document();
        Page page = new Page(595, 842);
        Graphics graphics = page.Graphics;

        // Draw rectangle
        graphics.FillRectangle(50, 50, 200, 100, Colour.FromRgb(0, 0, 255));

        // Draw circle
        GraphicsPath circle = new GraphicsPath();
        circle.Arc(400, 100, 50, 0, 2 * Math.PI);
        graphics.FillPath(circle, Colour.FromRgb(255, 0, 0));

        // Add text
        graphics.FillText(50, 200, "VectSharp Graphics", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 20));

        doc.Pages.Add(page);
        doc.SaveAsPDF("shapes.pdf");
    }
}
$vbLabelText   $csharpLabel

Ce code démontre la force de VectSharpdans les graphiques vectoriels précis - chaque élément est positionné en utilisant les coordonnées exactes des pixels, les couleurs sont créées par programme, et les formes telles que les cercles nécessitent la construction d'objets GraphicsPath avec des définitions d'arcs.

Formes HTML/CSSd'IronPDF

IronPDF obtient des résultats visuels similaires à l'aide de HTML et CSS standard :

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

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

        string html = @"
            <div style='width: 200px; height: 100px; background-color: blue; margin: 50px;'></div>
            <div style='width: 100px; height: 100px; background-color: red; 
                        border-radius: 50%; margin-left: 350px; margin-top: -50px;'></div>
            <h2 style='margin-left: 50px;'>IronPDF Graphics</h2>
        ";

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

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

        string html = @"
            <div style='width: 200px; height: 100px; background-color: blue; margin: 50px;'></div>
            <div style='width: 100px; height: 100px; background-color: red; 
                        border-radius: 50%; margin-left: 350px; margin-top: -50px;'></div>
            <h2 style='margin-left: 50px;'>IronPDF Graphics</h2>
        ";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("shapes.pdf");
    }
}
$vbLabelText   $csharpLabel

Les propriétés CSS telles que border-radius : 50% créent des cercles, tandis que le positionnement HTML/CSSstandard gère la mise en page. Pour les graphiques vectoriels complexes,IronPDFprend en charge les éléments SVG en ligne directement dans HTML.

Création de documents multi-pages

La création de documents comportant plusieurs pages montre comment chaque bibliothèque gère la pagination.

Manuel VectSharpGestion des pages

VectSharp nécessite une création et une gestion explicites de chaque page :

// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using System;

class Program
{
    static void Main()
    {
        Document doc = new Document();

        // Page 1
        Page page1 = new Page(595, 842);
        Graphics g1 = page1.Graphics;
        g1.FillText(50, 50, "Page 1", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));
        g1.FillText(50, 100, "First page content", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 14));
        doc.Pages.Add(page1);

        // Page 2
        Page page2 = new Page(595, 842);
        Graphics g2 = page2.Graphics;
        g2.FillText(50, 50, "Page 2", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));
        g2.FillText(50, 100, "Second page content", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 14));
        doc.Pages.Add(page2);

        doc.SaveAsPDF("multipage.pdf");
    }
}
// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using System;

class Program
{
    static void Main()
    {
        Document doc = new Document();

        // Page 1
        Page page1 = new Page(595, 842);
        Graphics g1 = page1.Graphics;
        g1.FillText(50, 50, "Page 1", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));
        g1.FillText(50, 100, "First page content", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 14));
        doc.Pages.Add(page1);

        // Page 2
        Page page2 = new Page(595, 842);
        Graphics g2 = page2.Graphics;
        g2.FillText(50, 50, "Page 2", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));
        g2.FillText(50, 100, "Second page content", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 14));
        doc.Pages.Add(page2);

        doc.SaveAsPDF("multipage.pdf");
    }
}
$vbLabelText   $csharpLabel

Chaque page nécessite son propre objet Page, son contexte graphique et des appels FillText distincts pour chaque élément de texte. La verbosité du code augmente linéairement avec le nombre de pages et la complexité du contenu.

IronPDFPagination Automatique

IronPDF gère automatiquement la pagination à l'aide de règles de rupture de page CSS :

// NuGet: Install-Package IronPdf
using IronPdf;

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

        string html = @"
            <h1>Page 1</h1>
            <p>First page content</p>
            <div style='page-break-after: always;'></div>
            <h1>Page 2</h1>
            <p>Second page content</p>
        ";

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

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

        string html = @"
            <h1>Page 1</h1>
            <p>First page content</p>
            <div style='page-break-after: always;'></div>
            <h1>Page 2</h1>
            <p>Second page content</p>
        ";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("multipage.pdf");
    }
}
$vbLabelText   $csharpLabel

La directive CSS page-break-after : always indique au moteur de rendu Chromium de créer une nouvelle page.IronPDFprend également en charge les sauts de page automatiques lorsque le contenu dépasse les limites de la page, une fonctionnalité qui fait totalement défaut à VectSharp.

Référence de mappage d'API

Les équipes qui évaluent une transition de VectSharpàIronPDFtrouveront cette cartographie utile pour comprendre les équivalences de concepts :

VectSharp IronPDF
Document ChromePdfRenderer
Page Automatique
Graphiques HTML/CSS
graphics.FillRectangle() CSS background-color sur <div>
graphics.StrokeRectangle() CSS border sur <div>
graphics.FillText() Éléments de texte HTML
graphics.StrokePath() Bordures SVG ou CSS
Trajectoire graphique Élément SVG <chemin>
Color.FromRgb() Valeurs des couleurs CSS
Font / FontFamily CSS font-family
doc.SaveAsPDF() pdf.SaveAs()
Dimensionnement manuel des pages RenderingOptions.PaperSize

Quand les équipes envisagent de passer de VectSharpà IronPDF

Plusieurs scénarios incitent couramment les équipes de développement à évaluerIronPDFcomme alternative à VectSharp:

Exigences en matière de génération de documents

VectSharp excelle dans la visualisation scientifique mais devient peu pratique pour la création de documents généraux. Les équipes qui conçoivent des systèmes de facturation, des générateurs de rapports ou des plateformes de gestion de contenu constatent que le positionnement manuel de chaque élément de texte et de chaque forme crée des charges de maintenance que les approches basées sur le HTML permettent d'éviter totalement.

Intégration de contenu HTML

Les applications qui doivent convertir des modèles HTML existants, du contenu de courrier électronique ou des pages web en PDF ne peuvent pas utiliser VectSharp. La bibliothèque n'a aucune capacité d'analyse ou de rendu HTML, ce qui la rend inadaptée aux flux de travail dont le contenu provient du HTML.

Vélocité de développement

L'API basée sur les coordonnées dans VectSharpnécessite beaucoup plus de code que les implémentationsIronPDFéquivalentes. Un simple document de 5 lignes HTML peut nécessiter plus de 50 lignes de code de dessin VectSharp, chacune spécifiant des coordonnées, des couleurs et des polices exactes.

Soutien aux technologies web modernes

VectSharp ne peut pas rendre les mises en page CSS3 (Flexbox, Grid), exécuter JavaScript ou prendre en charge les polices web modernes. Les équipes qui travaillent sur des sites web contemporains estiment qu'il n'est pas pratique de recréer ces mises en page à l'aide de dessins manuels.

Exigences en matière de fonctionnalités du PDF

VectSharp se concentre uniquement sur la création de PDF à l'aide de graphiques vectoriels. Les équipes qui ont besoin de manipuler des PDF (fusion, division), de signatures numériques, de protection par mot de passe ou d'en-têtes/pieds de page automatiques doivent ajouter des bibliothèques supplémentaires ou envisager des alternatives telles qu'IronPDF qui fournissent ces fonctionnalités de manière native.

Forces uniques de VectSharp

VectSharp présente des avantages dans des scénarios spécifiques :

Précision de la visualisation scientifique

Pour les applications générant des figures scientifiques, des diagrammes techniques ou des tracés mathématiques, l'approche basée sur les coordonnées de VectSharpoffre un contrôle parfait au pixel près que le positionnement HTML/CSSne peut pas toujours égaler.

Licences Open Source

Publié sous LGPL, VectSharppermet l'intégration sans coût de licence commerciale - une considération importante pour les projets open source ou les organisations ayant des politiques de licence strictes.

Dépendance légère

VectSharp a des dépendances minimales par rapport au moteur de rendu basé sur Chromium d'IronPDF, ce qui le rend potentiellement plus adapté aux environnements de déploiement à ressources limitées.

Capacités supplémentaires d'IronPDF

Au-delà de la génération basique de PDF,IronPDFoffre des fonctionnalités de manipulation de documents que VectSharpne peut pas proposer :

Compatibilité .NET et préparation à l'avenir

Les deux bibliothèques prennent en charge les implémentations .NET actuelles.IronPDFmaintient un développement actif avec des mises à jour régulières, garantissant la compatibilité avec .NET 8, .NET 9 et les futures versions, notamment .NET 10 prévue en 2026. La prise en charge de l'asynchronisme et de l'attente dans l'ensemble de l'API de la bibliothèque s'aligne sur les pratiques de développement C# modernes, y compris les fonctionnalités prévues dans C# 14.

Conclusion

VectSharp etIronPDFont des objectifs fondamentalement différents, bien qu'ils produisent tous deux des documents PDF. VectSharpexcelle en tant que bibliothèque de graphiques vectoriels pour les visualisations scientifiques, les diagrammes techniques et les applications nécessitant des dessins basés sur des coordonnées parfaites au pixel près. Sa licence LGPL et sa légèreté le rendent intéressant pour des cas d'utilisation spécifiques où un contrôle graphique précis importe plus que la complexité du document.

IronPDF se concentre sur la génération de documents à partir de contenu HTML, fournissant une solution rationalisée pour les développeurs qui ont besoin de convertir du contenu web, des modèles ou du HTML généré dynamiquement en PDF. Son rendu basé sur Chromium garantit une reproduction fidèle des conceptions web modernes, tandis que la conception de son API privilégie la simplicité et l'intégration avec les flux de travail de développement web standard.

Le choix entre eux dépend des exigences du projet : la visualisation scientifique et les graphiques de précision favorisent VectSharp, tandis que la génération de documents à partir de contenus web s'aligne sur les points forts d'IronPDF. Pour les équipes qui utilisent actuellement VectSharpmais qui se débattent avec la complexité de la génération de documents, l'évaluation d'IronPDF peut révéler des opportunités de réduction significative du code et d'amélioration de la maintenabilité.

Pour des conseils de mise en œuvre supplémentaires, explorez la documentation IronPDF et les tutoriels couvrant des cas d'utilisation spécifiques et des fonctionnalités avancées.