Zum Fußzeileninhalt springen
VIDEOS

Rendering von HTML-ZIP-Dateien in PDF in C# | IronPDF

VectSharp (von Giorgio Bianchini, arklumpus/VectSharp) ist eine leichte, plattformübergreifende Vektorgrafikbibliothek für .NET Standard 2.0, die häufig für wissenschaftliche Visualisierungen und technische Illustrationen verwendet wird. Wenn Entwicklungsteams Geschäftsunterlagen, Berichte, Rechnungen oder HTML-basierte Inhalte erstellen müssen, schafft VectSharps grafikzentriertes Paradigma Reibung. Es ist für Figuren und Diagramme gedacht, nicht zur Erzeugung von Dokumenten.

Dieser Leitfaden bietet einen vollständigen Migrationspfad von VectSharpzu IronPDF, mit Schritt-für-Schritt-Anleitungen, Code-Vergleichen und praktischen Beispielen für professionelle .NET-Entwickler, die diesen Übergang evaluieren.

Warum von VectSharpmigrieren

VectSharp ist eine Vektorgrafik-Bibliothek, die für die Erstellung von Diagrammen, Grafiken und technischen Illustrationen entwickelt wurde, mit anpassbaren Ausgabeschichten inklusive VectSharp.PDF, VectSharp.SVG und VectSharp.Raster. Es ist nicht für die Dokumentenerstellung konzipiert – es ist eine Zeichnungsbibliothek, deren VectSharp.PDF-Paket eine SaveAsPDF-Erweiterungsmethode auf Document hinzufügt. Zu den wichtigsten Gründen, warum Entwicklerteams eine Migration in Betracht ziehen, gehören:

Ausschließlich für wissenschaftliche Zwecke: VectSharpist für die Datenvisualisierung und -darstellung konzipiert, nicht für Geschäftsdokumente wie Rechnungen, Berichte oder Zertifikate.

Keine HTML-Unterstützung: VectSharpkann 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: VectSharpkann 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(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 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(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 20),
    Colours.White);
// ... continue drawing every single element manually
Imports VectSharp

' 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(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 20), Colours.White)
' ... continue drawing every single element manually
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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-3.0-only 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: VectSharpzu IronPDF Migration

Mit diesen grundlegenden Schritten kann die Migration sofort beginnen.

Schritt 1: Ersetzen von NuGet-Paketen

Entfernen Sie alle VectSharp-Pakete:

# Remove VectSharppackages (PDF first, then core)
dotnet remove package VectSharp.PDF
dotnet remove package VectSharp
# Remove VectSharppackages (PDF first, then core)
dotnet remove package VectSharp.PDF
dotnet remove package VectSharp
SHELL

IronPDF installieren:

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

Schritt 2: Namespaces aktualisieren

Ersetzen Sie VectSharp-Namespaces durch den IronPDF-Namespace:

// Before (VectSharp)
using VectSharp;
using VectSharp.PDF;

// After (IronPDF)
using IronPdf;
// Before (VectSharp)
using VectSharp;
using VectSharp.PDF;

// After (IronPDF)
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

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"
$vbLabelText   $csharpLabel

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),
            Colours.Black);

        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),
            Colours.Black);

        doc.Pages.Add(page);
        doc.SaveAsPDF("output.pdf");
    }
}
Imports VectSharp
Imports VectSharp.PDF
Imports VectSharp.SVG
Imports System.IO

Module Program
    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),
            Colours.Black)

        doc.Pages.Add(page)
        doc.SaveAsPDF("output.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

VectSharp erfordert die Erstellung eines Document, Page und Graphics Objekts, dann eine manuelle Positionierung des Textes mit genauen Koordinaten und Schriftobjekten.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();

        FontFamily helvetica =
            FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica);
        Font titleFont = new Font(helvetica, 24);
        Font bodyFont = new Font(helvetica, 14);

        // Page 1
        Page page1 = new Page(595, 842);
        Graphics g1 = page1.Graphics;
        g1.FillText(50, 50, "Page 1", titleFont, Colours.Black);
        g1.FillText(50, 100, "First page content", bodyFont, Colours.Black);
        doc.Pages.Add(page1);

        // Page 2
        Page page2 = new Page(595, 842);
        Graphics g2 = page2.Graphics;
        g2.FillText(50, 50, "Page 2", titleFont, Colours.Black);
        g2.FillText(50, 100, "Second page content", bodyFont, Colours.Black);
        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();

        FontFamily helvetica =
            FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica);
        Font titleFont = new Font(helvetica, 24);
        Font bodyFont = new Font(helvetica, 14);

        // Page 1
        Page page1 = new Page(595, 842);
        Graphics g1 = page1.Graphics;
        g1.FillText(50, 50, "Page 1", titleFont, Colours.Black);
        g1.FillText(50, 100, "First page content", bodyFont, Colours.Black);
        doc.Pages.Add(page1);

        // Page 2
        Page page2 = new Page(595, 842);
        Graphics g2 = page2.Graphics;
        g2.FillText(50, 50, "Page 2", titleFont, Colours.Black);
        g2.FillText(50, 100, "Second page content", bodyFont, Colours.Black);
        doc.Pages.Add(page2);

        doc.SaveAsPDF("multipage.pdf");
    }
}
Imports VectSharp
Imports VectSharp.PDF
Imports System

Module Program
    Sub Main()
        Dim doc As New Document()

        Dim helvetica As FontFamily = FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica)
        Dim titleFont As New Font(helvetica, 24)
        Dim bodyFont As New Font(helvetica, 14)

        ' Page 1
        Dim page1 As New Page(595, 842)
        Dim g1 As Graphics = page1.Graphics
        g1.FillText(50, 50, "Page 1", titleFont, Colours.Black)
        g1.FillText(50, 100, "First page content", bodyFont, Colours.Black)
        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", titleFont, Colours.Black)
        g2.FillText(50, 100, "Second page content", bodyFont, Colours.Black)
        doc.Pages.Add(page2)

        doc.SaveAsPDF("multipage.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

VectSharp erfordert die Erstellung separater Page Objekte, separater Graphics Kontexte und die manuelle Positionierung jedes Textelements mit Koordinaten und Schriftobjekten für jede Seite.IronPDF verwendet einen einzigen HTML-String mit CSS page-break-after: always, um mehrseitige Dokumente automatisch zu erstellen.

Zeichnen von Formen und Text

Die Grafikfähigkeiten zeigen, wo VectSharpseine 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 - FillText requires a colour parameter
        graphics.FillText(50, 200, "VectSharp Graphics",
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 20),
            Colours.Black);

        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 - FillText requires a colour parameter
        graphics.FillText(50, 200, "VectSharp Graphics",
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 20),
            Colours.Black);

        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 - FillText requires a colour parameter
        graphics.FillText(50, 200, "VectSharp Graphics", 
                          New Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 20), 
                          Colours.Black)

        doc.Pages.Add(page)
        doc.SaveAsPDF("shapes.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

VectSharp erfordert die Erstellung von GraphicsPath Objekten, das Aufrufen von Arc() mit präzisen mathematischen Parametern und das Verwalten von Farben durch Colour.FromRgb().IronPDF verwendet bekannte CSS-Eigenschaften: background-color, border-radius: 50% für Kreise und standardmäßige Ränder.

VectSharpAPI zu IronPDF Mapping 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 auf <div>
graphics.StrokeRectangle() CSS border auf <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>
$vbLabelText   $csharpLabel

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>
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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 Font und FontFamily Objekte programmatisch.

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>
HTML

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 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>
HTML

VectSharp-Migrations-Checkliste

Vor der Migration anfallende Aufgaben

Überprüfen Sie Ihre Codebasis, um die Verwendung von VectSharpzu 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" .
SHELL

Dokumentseitengrößen (die new Page(595, 842) Muster). Beachten Sie Farbpaletten, die Colour.FromRgb() verwenden. Identifizieren Sie Schriftartenkonfigurationen. Komplexe Vektorgrafiken mit Hilfe von GraphicsPath zur SVG-Konvertierung abbilden.

Aufgaben der Code-Aktualisierung

  1. VectSharpNuGet-Pakete entfernen 2.IronPDF NuGet-Paket installieren
  2. Aktualisieren Sie die using-Anweisungen von VectSharp zu IronPdf
  3. Konvertieren Sie FillRectangle Aufrufe in CSS-Boxen mit background-color
  4. Konvertieren Sie FillText Aufrufe in HTML-Textelemente mit CSS-Styling
  5. Konvertieren Sie GraphicsPath Operationen in SVG <path> Elemente
  6. Ersetzen Sie das manuelle Seitenmanagement durch RenderingOptions.PaperSize
  7. 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, dass 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 VectSharpzu 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 VectSharpnicht möglich ist.

PDF-Operationen: Zusammenführen, Aufteilen, Hinzufügen von Wasserzeichen, Passwortschutz und digitale Signaturen sind integrierte Funktionen.

Weniger Code-Ausführlichkeit: HTML/CSSist deklarativ und lesbar. Für dasselbe Dokument ist deutlich weniger Code erforderlich als für den imperativen Zeichenansatz von VectSharp.

Aktive Entwicklung: IronPDFs regelmäßige Updates sorgen für Kompatibilität mit aktuellen und zukünftigen .NET-Versionen.

Hinweis:VectSharp ist ein eingetragenes Markenzeichen des jeweiligen Eigentümers. Diese Seite ist weder mit VectSharpverbunden noch von VectSharpunterstützt oder gesponsert. Alle Produktnamen, Logos und Marken sind Eigentum der jeweiligen Besitzer. Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich zugängliche Informationen zum Zeitpunkt des Schreibens wider.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen

Iron-Support-Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an