COMPARAISON

VectSharp vs IronPDF : Guide de comparaison technique

VectSharpvsIronPDF: Une comparaison technique pour la génération de PDF .NET

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 :

  • Accent scientifique : Conçu principalement pour la visualisation de données, le traçage et la création de diagrammes
  • Dessin basé sur les coordonnées : Tous les éléments doivent être positionnés explicitement à l'aide de points à partir d'une origine en haut à gauche
  • Paradigme graphique d'abord : conçu pour les scientifiques qui créent des figures et des graphiques plutôt que des documents commerciaux
  • Open Source : Publié sous la licence LGPL, permettant une personnalisation sans licence commerciale

Limitations de VectSharp

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

  • Pas de support HTML : Impossible de convertir HTML ou CSS en PDF - nécessite un dessin vectoriel manuel pour tout le contenu
  • <Pas de style CSS : Tous les styles doivent être mis en œuvre par programme
  • Pas d'exécution JavaScript : Impossible de rendre un contenu web dynamique
  • Pas de mise en page automatique : pas d'habillage de texte, de pagination ou de mise en page de flux - les développeurs doivent tout gérer manuellement
  • Gestion manuelle des pages : Chaque page doit être explicitement créée et gérée

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 la génération de documents robustes, y compris les factures, les rapports et les documents à fort contenu
  • Approche HTML-First : Utilise les technologies web que les développeurs connaissent déjà : HTML, CSS et JavaScript
  • <Moteur de rendu Chromium : Prise en charge complète des technologies modernes CSS3, Flexbox, Grid et ES6+ JavaScript
  • Mise en page automatique : gère automatiquement l'habillage du texte, la pagination et la mise en page des flux
  • Support commercial : Mises à jour régulières, assistance et fonctionnalités de niveau professionnel

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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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 Notes
Document ChromePdfRenderer Créer une instance de rendu
Page Automatique Pages créées à partir de HTML
Graphiques HTML/CSS Balisage déclaratif
graphics.FillRectangle() CSS background-color sur <div> Boîtes HTML
graphics.StrokeRectangle() CSS border sur <div> Frontières
graphics.FillText() Éléments de texte HTML <p>, <h1>, <span>
graphics.StrokePath() Bordures SVG ou CSS Chemins vectoriels
Trajectoire graphique Élément SVG <chemin> Formes complexes
Color.FromRgb() Valeurs des couleurs CSS rgb(), #hex, couleurs nommées
Font / FontFamily CSS font-family Polices Web prises en charge
doc.SaveAsPDF() pdf.SaveAs() Enregistrer dans un fichier
Dimensionnement manuel des pages RenderingOptions.PaperSize Ou règle CSS @page

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.