Comment migrer de VectSharp à IronPDF en C#
VectSharp s'est imposé comme une bibliothèque de graphiques vectoriels performante dans l'écosystème .NET, particulièrement appréciée pour la visualisation scientifique et les illustrations techniques. Cependant, lorsque les équipes de développement doivent générer des documents commerciaux, des rapports, des factures ou tout autre contenu HTML, le paradigme graphique de VectSharpcrée d'importantes frictions. La bibliothèque est conçue pour les scientifiques qui créent des figures et des graphiques, et non pour les développeurs qui produisent des documents.
Ce guide fournit un chemin de migration complet de VectSharpà IronPDF, avec des instructions étape par étape, des comparaisons de code et des exemples pratiques pour les développeurs .NET professionnels qui évaluent cette transition.
Pourquoi migrer de VectSharp
VectSharp est une bibliothèque de visualisation scientifique et de graphiques vectoriels conçue pour créer des diagrammes, des graphiques et des illustrations techniques. Il ne s'agit pas d'un outil de génération de documents, mais d'une bibliothèque de dessins qui produit des fichiers PDF. Les principales raisons pour lesquelles les équipes de développement envisagent la migration sont les suivantes
Usage scientifique uniquement : VectSharpest conçu pour la visualisation et la représentation graphique de données, et non pour les documents commerciaux tels que les factures, les rapports ou les certificats.
Prise en charge HTML inexistante : VectSharpne peut pas convertir le HTML ou le CSS en PDF. Chaque élément doit être dessiné manuellement à l'aide de commandes graphiques vectorielles.
API basée sur les coordonnées : chaque élément doit être positionné avec des coordonnées X,Y exactes. Il n'y a pas de mise en page automatique, de flux ou d'habillage de texte.
Pas de style CSS : tout le style est implémenté par programmation via des appels de méthodes. Les développeurs web ne peuvent pas tirer parti de leurs connaissances en matière de CSS.
JavaScript non pris en charge : VectSharpne peut pas afficher le contenu Web dynamique, les graphiques interactifs ni les visualisations basées sur JavaScript.
Aucune mise en page de texte : le retour à la ligne automatique, la pagination et la mise en page fluide ne sont pas disponibles. Les développeurs doivent calculer manuellement la position du texte et les sauts de page.
Approche centrée sur le graphique : cette bibliothèque est conçue pour les diagrammes, et non pour les rapports ou les factures. La génération de documents nécessite un travail manuel important.
Le problème central : bibliothèque graphique ou générateur de documents
VectSharp nécessite un dessin vectoriel manuel pour chaque élément :
// VectSharp: Manuel vector drawing for every element
Page page = new Page(595, 842);
Graphics graphics = page.Graphics;
graphics.FillRectangle(50, 50, 200, 100, Colour.FromRgb(0, 0, 255));
graphics.FillText(60, 70, "Invoice", new Font(new FontFamily("Arial"), 20), Colours.White);
// ... continue drawing every single element manually
// VectSharp: Manuel vector drawing for every element
Page page = new Page(595, 842);
Graphics graphics = page.Graphics;
graphics.FillRectangle(50, 50, 200, 100, Colour.FromRgb(0, 0, 255));
graphics.FillText(60, 70, "Invoice", new Font(new FontFamily("Arial"), 20), Colours.White);
// ... continue drawing every single element manually
' VectSharp: Manuel vector drawing for every element
Dim page As New Page(595, 842)
Dim graphics As Graphics = page.Graphics
graphics.FillRectangle(50, 50, 200, 100, Colour.FromRgb(0, 0, 255))
graphics.FillText(60, 70, "Invoice", New Font(New FontFamily("Arial"), 20), Colours.White)
' ... continue drawing every single element manually
IronPDF utilise HTML, le format de document universel :
// IronPDF: Declarative HTML for document creation
var html = "<h1>Invoice</h1><p>Customer: Acme Corp</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
// IronPDF: Declarative HTML for document creation
var html = "<h1>Invoice</h1><p>Customer: Acme Corp</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
' IronPDF: Declarative HTML for document creation
Dim html As String = "<h1>Invoice</h1><p>Customer: Acme Corp</p>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
IronPDF vs VectSharp: Comparaison des fonctionnalités
La compréhension des différences architecturales aide les décideurs techniques à évaluer l'investissement dans la migration :
| Fonction | VectSharp | IronPDF |
|---|---|---|
| Utilisation principale | Graphiques vectoriels | Création de documents |
| Sortie PDF | Oui | Oui |
| Support HTML | Non | Oui |
| Licence | LGPL | Commercial |
| Open Source | Oui | Partiellement (fonctions commerciales) |
| Parfait pour | Visualisations scientifiques | Documents PDF généraux |
| Personnalisation | Limité aux graphiques | Documentations approfondies |
| HTML à PDF | Non | Chromium complet |
| URL vers PDF | Non | Oui |
| Support CSS | Non | CSS3 complet |
| JavaScript | Non | ES2024 complet |
| Mise en page automatique | Non | Oui |
| Sauts de page automatiques | Non | Oui |
| Enveloppe de texte | Manuel | Automatique |
| Fusionner des PDF | Non | Oui |
| Diviser les PDF | Non | Oui |
| 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 |
Démarrage rapide : Migration de VectSharpvers IronPDF
La migration peut commencer immédiatement grâce à ces étapes fondamentales.
Étape 1 : Remplacer les paquets NuGet
Supprimez tous les paquets VectSharp:
# Remove VectSharppackages
dotnet remove package VectSharp
dotnet remove package VectSharp.PDF
# Remove VectSharppackages
dotnet remove package VectSharp
dotnet remove package VectSharp.PDF
InstallezIronPDF:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Étape 2 : Mise à jour des espaces de noms
Remplacer les espaces de noms VectSharppar l'espace de nomsIronPDF:
// Before (VectSharp)
using VectSharp;
using VectSharp.PDF;
// After (IronPDF)
using IronPdf;
// Before (VectSharp)
using VectSharp;
using VectSharp.PDF;
// After (IronPDF)
using IronPdf;
Imports IronPdf
Étape 3 : initialisation de la licence
Ajouter l'initialisation de la licence au démarrage de l'application :
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Exemples de migration de code
Conversion de HTML en PDF
VectSharp ne prend pas en charge la conversion HTML-PDF. Cette différence de capacité fondamentale est à l'origine de nombreuses décisions de migration.
Approche VectSharp:
// 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");
}
}
Imports VectSharp
Imports VectSharp.PDF
Imports VectSharp.SVG
Imports System.IO
Class Program
Shared Sub Main()
' VectSharp doesn't directly support HTML to PDF
' It requires manual creation of graphics objects
Dim doc As New Document()
Dim page As New Page(595, 842) ' A4 size
Dim graphics As 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")
End Sub
End Class
Approche IronPDF:
// 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");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF</h1><p>This is HTML content.</p>")
pdf.SaveAs("output.pdf")
End Sub
End Class
VectSharp nécessite la création d'un objet Document, Page et Graphics, puis le positionnement manuel du texte avec des coordonnées exactes et des objets de police.IronPDFrend le HTML directement avec une prise en charge complète du style CSS.
Pour les scénarios avancés de conversion de HTML en PDF, voir le guide de conversion de HTML en PDF.
Création de documents multi-pages
Les documents de plusieurs pages révèlent les différences architecturales entre ces bibliothèques PDF .NET.
Approche VectSharp:
// 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");
}
}
Imports VectSharp
Imports VectSharp.PDF
Imports System
Class Program
Shared Sub Main()
Dim doc As New Document()
' Page 1
Dim page1 As New Page(595, 842)
Dim g1 As Graphics = 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
Dim page2 As New Page(595, 842)
Dim g2 As Graphics = 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")
End Sub
End Class
Approche IronPDF:
// 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");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "
<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>
"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("multipage.pdf")
End Sub
End Class
VectSharp nécessite la création d'objets Page séparés, de contextes Graphics séparés et le positionnement manuel de chaque élément de texte avec des coordonnées et des objets de police pour chaque page.IronPDFutilise une seule chaîne HTML avec CSS page-break-after: always pour créer automatiquement des documents multipages.
Dessiner des formes et du texte
Les capacités graphiques montrent où VectSharpexcelle, mais aussi où les standards du web offrent des fonctionnalités équivalentes avec moins de code.
Approche VectSharp:
// 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");
}
}
Imports VectSharp
Imports VectSharp.PDF
Imports System
Module Program
Sub Main()
Dim doc As New Document()
Dim page As New Page(595, 842)
Dim graphics As Graphics = page.Graphics
' Draw rectangle
graphics.FillRectangle(50, 50, 200, 100, Colour.FromRgb(0, 0, 255))
' Draw circle
Dim circle As 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")
End Sub
End Module
Approche IronPDF:
// 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");
}
}
Imports IronPdf
Imports IronPdf.Rendering
Class Program
Shared Sub Main()
Dim renderer As New ChromePdfRenderer()
Dim html As String = "
<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>
"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("shapes.pdf")
End Sub
End Class
VectSharp nécessite la création d'objets GraphicsPath, l'appel de Arc() avec des paramètres mathématiques précis et la gestion des couleurs via Colour.FromRgb().IronPDFutilise des propriétés CSS familières : background-color, border-radius: 50% pour les cercles et des marges standard.
Référence de mappage de l'API VectSharpvers IronPDF
Cette cartographie accélère la migration en indiquant les équivalents directs des API :
| VectSharp | IronPDF |
|---|---|
Document |
ChromePdfRenderer |
Page |
Automatique |
Graphics |
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 |
GraphicsPath |
Élément SVG <path> |
Colour.FromRgb() |
Valeurs des couleurs CSS |
Font / FontFamily |
CSS font-family |
doc.SaveAsPDF() |
pdf.SaveAs() |
| Dimensionnement manuel des pages | RenderingOptions.PaperSize |
Stratégies de migration
Stratégie 1 : Convertir le code de dessin en HTML/CSS
Remplacer les dessins basés sur les coordonnées par des éléments HTML :
// VectSharp
graphics.FillRectangle(100, 50, 300, 80, Colour.FromRgb(0, 102, 204));
graphics.FillText(110, 80, "Header", font, Colours.White);
//IronPDFHTML equivalent
<div style="
position: absolute;
left: 100px;
top: 50px;
width: 300px;
height: 80px;
background: rgb(0, 102, 204);
color: white;
padding: 10px;
">Header</div>
// VectSharp
graphics.FillRectangle(100, 50, 300, 80, Colour.FromRgb(0, 102, 204));
graphics.FillText(110, 80, "Header", font, Colours.White);
//IronPDFHTML equivalent
<div style="
position: absolute;
left: 100px;
top: 50px;
width: 300px;
height: 80px;
background: rgb(0, 102, 204);
color: white;
padding: 10px;
">Header</div>
' VectSharp
graphics.FillRectangle(100, 50, 300, 80, Colour.FromRgb(0, 102, 204))
graphics.FillText(110, 80, "Header", font, Colours.White)
' IronPDFHTML equivalent
'<div style="
' position: absolute;
' left: 100px;
' top: 50px;
' width: 300px;
' height: 80px;
' background: rgb(0, 102, 204);
' color: white;
' padding: 10px;
'">Header</div>
Stratégie 2 : Utiliser SVG pour les graphiques vectoriels
Pour les formes complexes, utilisez SVG en ligne dans votre HTML :
// VectSharppath
GraphicsPath path = new GraphicsPath();
path.MoveTo(100, 100);
path.LineTo(200, 50);
path.LineTo(300, 100);
path.Close();
graphics.FillPath(path, Colours.Blue);
//IronPDFSVG equivalent
<svg><polygon points="100,100 200,50 300,100" fill="blue"/></svg>
// VectSharppath
GraphicsPath path = new GraphicsPath();
path.MoveTo(100, 100);
path.LineTo(200, 50);
path.LineTo(300, 100);
path.Close();
graphics.FillPath(path, Colours.Blue);
//IronPDFSVG equivalent
<svg><polygon points="100,100 200,50 300,100" fill="blue"/></svg>
Imports System.Drawing.Drawing2D
' VectSharppath
Dim path As New GraphicsPath()
path.StartFigure()
path.AddLine(100, 100, 200, 50)
path.AddLine(200, 50, 300, 100)
path.CloseFigure()
graphics.FillPath(Brushes.Blue, path)
' IronPDFSVG equivalent
'<svg><polygon points="100,100 200,50 300,100" fill="blue"/></svg>
Stratégie 3 : utiliser des bibliothèques de graphiques JavaScript
Pour les visualisations scientifiques, spécialité de VectSharp,IronPDFpeut s'appuyer sur de puissantes bibliothèques JavaScript telles que Chart.js, D3.js ou Plotly :
var html = @"
<script src='https://cdn.plot.ly/plotly-latest.min.js'></script>
<div id='chart'></div>
<script>
Plotly.newPlot('chart', [{
x: [1, 2, 3, 4],
y: [10, 15, 13, 17],
type: 'scatter'
}]);
</script>";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
var pdf = renderer.RenderHtmlAsPdf(html);
var html = @"
<script src='https://cdn.plot.ly/plotly-latest.min.js'></script>
<div id='chart'></div>
<script>
Plotly.newPlot('chart', [{
x: [1, 2, 3, 4],
y: [10, 15, 13, 17],
type: 'scatter'
}]);
</script>";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
var pdf = renderer.RenderHtmlAsPdf(html);
Dim html As String = "
<script src='https://cdn.plot.ly/plotly-latest.min.js'></script>
<div id='chart'></div>
<script>
Plotly.newPlot('chart', [{
x: [1, 2, 3, 4],
y: [10, 15, 13, 17],
type: 'scatter'
}]);
</script>"
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.EnableJavaScript = True
Dim pdf = renderer.RenderHtmlAsPdf(html)
Problèmes de migration courants et solutions
Enjeu 1 : Différences entre les systèmes de coordonnées
VectSharp utilise des points à partir de l'origine en haut à gauche avec un positionnement manuel.
Solution: Utiliser le positionnement CSS :
.element {
position: absolute;
top: 50px;
left: 100px;
}
Nouveau numéro 2 : Font Objects
VectSharp crée des objets Font et FontFamily de manière programmatique.
Solution: Utiliser CSS font-family :
<style>
body { font-family: Arial, sans-serif; font-size: 12pt; }
</style>
<style>
body { font-family: Arial, sans-serif; font-size: 12pt; }
</style>
Numéro 3 : Traitement des couleurs
VectSharp utilise des appels de méthode Colour.FromRgb().
Solution: Utiliser les couleurs CSS :
.header { color: rgb(0, 102, 204); background-color: #f0f0f0; }
Numéro 4 : Chemins graphiques
VectSharp utilise une API complexe GraphicsPath avec des méthodes MoveTo, LineTo, Arc.
Solution: Utilisez SVG pour les graphiques vectoriels :
<svg>
<path d="M 100 100 L 200 50 L 300 100 Z" fill="blue"/>
</svg>
<svg>
<path d="M 100 100 L 200 50 L 300 100 Z" fill="blue"/>
</svg>
Liste de contrôle pour la migration vers VectSharp
Tâches préalables à la migration
Auditez votre base de code pour identifier toute utilisation de VectSharp:
grep -r "using VectSharp" --include="*.cs" .
grep -r "Graphics\|FillRectangle\|FillText" --include="*.cs" .
grep -r "using VectSharp" --include="*.cs" .
grep -r "Graphics\|FillRectangle\|FillText" --include="*.cs" .
Formats de page des documents (les modèles new Page(595, 842)). Notez les schémas de couleurs utilisant Colour.FromRgb(). Identifier les configurations de polices. Cartographier des graphiques vectoriels complexes en utilisant GraphicsPath pour la conversion SVG.
Tâches de mise à jour du code
- Supprimer les paquets NuGet de VectSharp
- Installer le paquet NuGet IronPDF
- Mettre à jour les instructions d'utilisation de
VectSharpàIronPdf - Convertissez les appels
FillRectangleen boîtes CSS avecbackground-color - Convertir les appels
FillTexten éléments de texte HTML avec style CSS - Convertir les opérations
GraphicsPathen éléments SVG<path> - Remplacez la gestion manuelle des pages par
RenderingOptions.PaperSize - Ajouter l'initialisation de la licence au démarrage
Test de post-migration
Après la migration, vérifiez ces aspects :
- Comparer la sortie visuelle entre les versions VectSharpet IronPDF
- Vérifiez que les couleurs correspondent à l'aide des équivalents CSS des valeurs
Colour.FromRgb() - Vérifier la précision du positionnement des éléments convertis à partir d'un placement basé sur les coordonnées
- Test des sauts de page pour les documents de plusieurs pages
- Vérifier que les graphiques vectoriels s'affichent correctement via SVG
Avantages clés de la migration vers IronPDF
Le passage de VectSharpàIronPDFprésente plusieurs avantages pour la génération de documents :
Contenu basé sur HTML : les développeurs web peuvent tirer parti de leurs compétences existantes en HTML et CSS. Pas besoin d'apprendre les API de dessin basé sur les coordonnées.
Mise en page automatique : le retour à la ligne, la pagination et la mise en page sont automatiques. Pas de calcul manuel de la position des éléments.
Prise en charge complète des CSS modernes : CSS3, y compris les mises en page Flexbox et Grid. Les conceptions réactives sont traduites directement en PDF.
Exécution JavaScript : Les graphiques interactifs avec Chart.js, D3.js ou Plotly s'affichent correctement. Le contenu dynamique fonctionne comme prévu.
Conversion d'URL en PDF : Capturez n'importe quelle page Web au format PDF — une fonctionnalité impossible avec VectSharp.
Opérations PDF : Fusionner, diviser, ajouter des filigranes, protéger par mot de passe et signer des documents numériques sont des fonctionnalités intégrées.
Verbosité du code réduite : HTML/CSSest déclaratif et lisible. Le même document nécessite beaucoup moins de code que l'approche de dessin impératif de VectSharp.
Développement actif : Avec l'adoption croissante de .NET 10 et C# 14 jusqu'en 2026, les mises à jour régulières d'IronPDF garantissent la compatibilité avec les versions actuelles et futures de .NET .

