Migrieren von VectSharp zu IronPDF in C#
VectSharp hat sich als leistungsfähige Vektorgrafik-Bibliothek im .NET-Ökosystem etabliert und wird besonders für wissenschaftliche Visualisierungen und technische Illustrationen geschätzt. Wenn Entwicklungsteams jedoch Geschäftsdokumente, Berichte, Rechnungen oder andere HTML-basierte Inhalte erstellen müssen, führt das grafikorientierte Paradigma von VectSharp zu erheblichen Problemen. Die Bibliothek ist für Wissenschaftler gedacht, die Zahlen und Diagramme erstellen, nicht für Entwickler, die Dokumente erstellen.
Dieser Leitfaden bietet einen vollständigen Migrationspfad von VectSharp zu IronPDF, mit Schritt-für-Schritt-Anleitungen, Code-Vergleichen und praktischen Beispielen für professionelle .NET-Entwickler, die diesen Übergang evaluieren.
Warum von VectSharp migrieren
VectSharp ist eine wissenschaftliche Visualisierungs- und Vektorgrafikbibliothek, die für die Erstellung von Diagrammen, Tabellen und technischen Illustrationen entwickelt wurde. Es ist nicht für die Dokumentenerstellung gedacht - es ist eine Zeichenbibliothek, die zufällig PDF ausgibt. Zu den wichtigsten Gründen, warum Entwicklerteams eine Migration in Betracht ziehen, gehören:
Ausschließlich für wissenschaftliche Zwecke: VectSharp ist für die Datenvisualisierung und -darstellung konzipiert, nicht für Geschäftsdokumente wie Rechnungen, Berichte oder Zertifikate.
Keine HTML-Unterstützung: VectSharp kann HTML oder CSS nicht in PDF konvertieren. Jedes Element muss manuell mit Vektorgrafikbefehlen gezeichnet werden.
Koordinatenbasierte API: Jedes Element muss mit exakten X,Y-Koordinaten positioniert werden. Es gibt kein automatisches Layout, keinen automatischen Fluss oder Textumbruch.
Kein CSS-Styling: Das gesamte Styling erfolgt programmatisch über Methodenaufrufe. Webentwickler können ihre vorhandenen CSS-Kenntnisse nicht nutzen.
Kein JavaScript: VectSharp kann keine dynamischen Webinhalte, interaktive Diagramme oder JavaScript-basierte Visualisierungen darstellen.
Kein Textlayout: Automatischer Textumbruch, Seitennummerierung und Fließtextlayout sind nicht verfügbar. Die Entwickler müssen Textpositionen und Seitenumbrüche manuell berechnen.
Grafikorientiertes Paradigma: Die Bibliothek ist für Diagramme konzipiert, nicht für Berichte oder Rechnungen. Die Dokumentenerstellung erfordert umfangreiche manuelle Arbeit.
Das Kernproblem: Grafikbibliothek vs. Dokumentengenerator
VectSharp erfordert für jedes Element eine manuelle Vektorzeichnung:
// VectSharp: Handbuch 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: Handbuch 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: Handbuch 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 verwendet HTML, das universelle Dokumentenformat:
// 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: Funktionsvergleich
Das Verständnis der architektonischen Unterschiede hilft technischen Entscheidungsträgern, die Investition in die Migration zu bewerten:
| Feature | VectSharp | IronPDF |
|---|---|---|
| Primäre Verwendung | Vektorgrafiken | Erstellung des Dokuments |
| PDF-Ausgabe | Ja | Ja |
| HTML-Unterstützung | Nein | Ja |
| Lizenzierung | LGPL | Kommerziell |
| Open Source | Ja | Teilweise (kommerzielle Funktionen) |
| Best für | Wissenschaftliche Visualisierungen | Allgemeine PDF-Dokumente |
| Anpassung | Beschränkt auf Grafiken | Umfangreich, dokumentbezogen |
| HTML zu PDF | Nein | Vollständiges Chromium |
| URL zu PDF | Nein | Ja |
| CSS-Unterstützung | Nein | Vollständig CSS3 |
| JavaScript | Nein | Vollständiger ES2024 |
| Automatisches Layout | Nein | Ja |
| Automatische Seitenumbrüche | Nein | Ja |
| Textumrahmung | Handbuch | Automatisch |
| PDFs zusammenführen | Nein | Ja |
| PDFs aufteilen | Nein | Ja |
| Passwortschutz | Nein | Ja |
| Digitale Signaturen | Nein | Ja |
| Lernkurve | Hoch (Koordinaten) | Niedrig (HTML/CSS) |
| Code Verbosity | Sehr hoch | Niedrig |
Schnellstart: VectSharp zu IronPDF Migration
Mit diesen grundlegenden Schritten kann die Migration sofort beginnen.
Schritt 1: Ersetzen von NuGet-Paketen
Entfernen Sie alle VectSharp-Pakete:
# Remove VectSharppackages
dotnet remove package VectSharp
dotnet remove package VectSharp.PDF
# Remove VectSharppackages
dotnet remove package VectSharp
dotnet remove package VectSharp.PDF
IronPDF installieren:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Schritt 2: Namespaces aktualisieren
Ersetzen Sie die VectSharp-Namensräume durch den IronPDF-Namensraum:
// Before (VectSharp)
using VectSharp;
using VectSharp.PDF;
// After (IronPDF)
using IronPdf;
// Before (VectSharp)
using VectSharp;
using VectSharp.PDF;
// After (IronPDF)
using IronPdf;
Imports IronPdf
Schritt 3: Lizenz initialisieren
Hinzufügen der Lizenzinitialisierung beim Start der Anwendung:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Beispiele für die Code-Migration
Konvertierung von HTML in PDF
VectSharp unterstützt keine HTML-zu-PDF-Konvertierung. Dieser grundlegende Unterschied in den Fähigkeiten ist die Grundlage für viele Migrationsentscheidungen.
VectSharp-Ansatz:
// 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
IronPDF-Ansatz:
// 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 erfordert das Erstellen eines Document, Page und Graphics Objekts, und anschließend das manuelle Positionieren des Textes mit exakten Koordinaten und Schriftartobjekten.IronPDF rendert HTML direkt mit vollständiger CSS-Styling-Unterstützung.
Für fortgeschrittene HTML-zu-PDF-Szenarien siehe den HTML-zu-PDF-Konvertierungsleitfaden.
Erstellung mehrseitiger Dokumente
Mehrseitige Dokumente zeigen die architektonischen Unterschiede zwischen diesen .NET-PDF-Bibliotheken auf.
VectSharp-Ansatz:
// 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
IronPDF-Ansatz:
// 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 erfordert das Erstellen separater Page Objekte, separater Graphics Kontexte und das manuelle Positionieren jedes Textelements mit Koordinaten und Schriftartobjekten für jede Seite.IronPDF verwendet einen einzigen HTML-String mit CSS page-break-after: always, um automatisch mehrseitige Dokumente zu erstellen.
Zeichnen von Formen und Text
Die Grafikfähigkeiten zeigen, wo VectSharp seine Stärken hat - aber auch, wo Webstandards gleichwertige Funktionen mit weniger Code bieten.
VectSharp-Ansatz:
// 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
IronPDF-Ansatz:
// 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 erfordert das Erstellen von GraphicsPath Objekten, den Aufruf von Arc() mit präzisen mathematischen Parametern und die Verwaltung von Farben über Colour.FromRgb().IronPDF verwendet bekannte CSS-Eigenschaften: background-color, border-radius: 50% für Kreise und Standardränder.
VectSharp API zu IronPDFMapping Referenz
Dieses Mapping beschleunigt die Migration, indem es direkte API-Entsprechungen aufzeigt:
| VectSharp | IronPDF |
|---|---|
Document |
ChromePdfRenderer |
Page |
Automatisch |
Graphics |
HTML/CSS |
graphics.FillRectangle() |
CSS background-color on <div> |
graphics.StrokeRectangle() |
CSS border on <div> |
graphics.FillText() |
HTML-Textelemente |
graphics.StrokePath() |
SVG- oder CSS-Rahmen |
GraphicsPath |
SVG <path> Element |
Colour.FromRgb() |
CSS-Farbwerte |
Font / FontFamily |
CSS font-family |
doc.SaveAsPDF() |
pdf.SaveAs() |
| Manuelle Seitenanpassung | RenderingOptions.PaperSize |
Migrationsstrategien
Strategie 1: Zeichnungscode in HTML/CSSumwandeln
Ersetzen Sie koordinatenbasiertes Zeichnen durch HTML-Elemente:
// VectSharp
graphics.FillRectangle(100, 50, 300, 80, Colour.FromRgb(0, 102, 204));
graphics.FillText(110, 80, "Header", font, Colours.White);
//IronPDF HTML 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);
//IronPDF HTML 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)
' IronPDF HTML equivalent
' <div style="
' position: absolute;
' left: 100px;
' top: 50px;
' width: 300px;
' height: 80px;
' background: rgb(0, 102, 204);
' color: white;
' padding: 10px;
' ">Header</div>
Strategie 2: SVG für Vektorgrafiken verwenden
Für komplexe Formen sollten Sie Inline-SVG in Ihrem HTML verwenden:
// VectSharppath
GraphicsPath path = new GraphicsPath();
path.MoveTo(100, 100);
path.LineTo(200, 50);
path.LineTo(300, 100);
path.Close();
graphics.FillPath(path, Colours.Blue);
//IronPDF SVG 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);
//IronPDF SVG 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(New SolidBrush(Color.Blue), path)
' IronPDF SVG equivalent
' <svg><polygon points="100,100 200,50 300,100" fill="blue"/></svg>
Strategie 3: JavaScript-Diagramm-Bibliotheken verwenden
Für wissenschaftliche Visualisierungen - die Spezialität von VectSharp- kann IronPDF auf leistungsstarke JavaScript-Bibliotheken wie Chart.js, D3.js oder Plotly zurückgreifen:
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)
Gängige Migrationsprobleme und Lösungen
Aufgabe 1: Unterschiede im Koordinatensystem
VectSharp verwendet Punkte von links oben mit manueller Positionierung.
Lösung: Verwenden Sie CSS-Positionierung:
.element {
position: absolute;
top: 50px;
left: 100px;
}
Ausgabe 2: Schriftarten-Objekte
VectSharp erstellt programmatisch Font und FontFamily Objekte.
Lösung: Verwenden Sie 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>
Ausgabe 3: Farbverarbeitung
VectSharp verwendet Colour.FromRgb() Methodenaufrufe.
Lösung: Verwenden Sie CSS-Farben:
.header { color: rgb(0, 102, 204); background-color: #f0f0f0; }
Ausgabe 4: Grafikpfade
VectSharp verwendet eine komplexe GraphicsPath API mit MoveTo, LineTo, Arc Methoden.
Lösung: Verwenden Sie SVG für Vektorgrafiken:
<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>
VectSharp-Migrations-Checkliste
Vor der Migration anfallende Aufgaben
Überprüfen Sie Ihre Codebasis, um die Verwendung von VectSharp zu identifizieren:
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" .
Dokumentseitengrößen (die new Page(595, 842) Muster). Beachten Sie die Farbschemata mit Colour.FromRgb(). Identifizieren Sie Schriftartenkonfigurationen. Komplexe Vektorgrafiken mithilfe von GraphicsPath für die SVG-Konvertierung abbilden.
Aufgaben der Code-Aktualisierung
- VectSharp NuGet-Pakete entfernen
- IronPDF NuGet-Paket installieren
- Aktualisieren Sie die Anweisungen von
VectSharpbisIronPdf - Konvertieren Sie
FillRectangle-Aufrufe in CSS-Boxen mitbackground-color - Konvertieren Sie
FillText-Aufrufe in HTML-Textelemente mit CSS-Styling. - Konvertiere
GraphicsPathOperationen in SVG<path>Elemente - Ersetzen Sie die manuelle Seitenverwaltung durch
RenderingOptions.PaperSize - Lizenzinitialisierung beim Start hinzufügen
Post-Migrationstests
Überprüfen Sie diese Aspekte nach der Migration:
- Vergleich der visuellen Ausgabe zwischen VectSharp- und IronPDF-Versionen
- Überprüfen Sie, ob die Farben mit den CSS-Äquivalenten der
Colour.FromRgb()-Werte übereinstimmen. - Überprüfung der Positionierungsgenauigkeit für Elemente, die aus der koordinatenbasierten Platzierung konvertiert wurden
- Testen Sie Seitenumbrüche für mehrseitige Dokumente
- Überprüfen Sie die korrekte Darstellung von Vektorgrafiken über SVG
Die wichtigsten Vorteile der Migration zu IronPDF
Der Wechsel von VectSharp zu IronPDF bietet mehrere Vorteile für die Dokumentenerstellung:
HTML-basierte Inhalte: Webentwickler können ihre vorhandenen HTML- und CSS-Kenntnisse nutzen. Sie müssen keine koordinatenbasierten Zeichen-APIs lernen.
Automatisches Layout: Textumbruch, Seitenumbruch und Layoutfluss erfolgen automatisch. Keine manuelle Berechnung von Elementpositionen.
Moderne CSS-Unterstützung: Vollständige CSS3-Unterstützung inklusive Flexbox- und Grid-Layouts. Responsive Designs werden direkt in PDF übersetzt.
JavaScript Ausführung: Interaktive Diagramme mit Chart.js, D3.js oder Plotly werden korrekt dargestellt. Dynamische Inhalte funktionieren wie erwartet.
URL-zu-PDF: Jede Webseite als PDF erfassen – eine Funktion, die mit VectSharp nicht möglich ist.
PDF-Operationen: Zusammenführen, Aufteilen, Hinzufügen von Wasserzeichen, Passwortschutz und digitale Signaturen sind integrierte Funktionen.
Weniger Code-Ausführlichkeit: HTML/CSS ist deklarativ und lesbar. Für dasselbe Dokument ist deutlich weniger Code erforderlich als für den imperativen Zeichenansatz von VectSharp.
Aktive Weiterentwicklung: Da die Verbreitung von .NET 10 und C# 14 bis 2026 zunimmt, gewährleisten die regelmäßigen Updates von IronPDF die Kompatibilität mit aktuellen und zukünftigen .NET Versionen.

