Altbilgi içeriğine atla
GEçIş KıLAVUZLARı

C#'ta VectSharp'tan IronPDF'ye Nasıl Geçilir

VectSharp (tarafından oluşturulmuştur: Giorgio Bianchini, arklumpus/VectSharp), .NET Standard 2.0 için hafif bir çapraz platform vektör grafik kitaplığıdır, genellikle bilimsel görselleştirme ve teknik illüstrasyonlar için kullanılır. Geliştirme takımları iş belgeleri, raporlar, faturalar veya HTML tabanlı içerik oluşturması gerektiğinde, VectSharp'ın grafik-öncelikli paradigması sürtünme yaratır. Şekil ve grafikler için tasarlanmıştır, belgeler üretmek için değil.

Bu kılavuz, bu geçişi değerlendiren profesyonel .NET geliştiriciler için adım adım talimatlar, kod karşılaştırmaları ve pratik örneklerle VectSharp'tan IronPDF'e tam bir geçiş yolu sağlar.

VectSharp'tan Neden Geçiş Yapmalıyız

VectSharp, diyagramlar, grafikler ve teknik çizimler oluşturmak için tasarlanmış bir vektör grafik kütüphanesidir ve VectSharp.PDF, VectSharp.SVG ve VectSharp.Raster dahil olmak üzere eklentili çıktı katmanları bulunur. Belge oluşturma için tasarlanmış değildir—VectSharp.PDF paketinin SaveAsPDF genişletme metodu eklediği bir çizim kütüphanesidir. Geliştirme ekiplerinin geçiş düşünmesinin ana nedenleri şunlardır:

Sadece Bilimsel Odak: VectSharp, veri görselleştirme ve grafikleri için tasarlanmıştır, faturalar, raporlar veya sertifikalar gibi iş belgeleri için değil.

HTML Desteği Yok: VectSharp, HTML veya CSS'yi PDF'e dönüştüremez. Her eleman, vektör grafik komutları kullanılarak elle çizilmelidir.

Koordinat Tabanlı API: Her eleman, tam X,Y koordinatları ile konumlandırılmalıdır. Otomatik düzen, akış veya metin sarma yok.

CSS Stilleme Yok: Tüm stilleme, metot çağrıları aracılığıyla programatik olarak yapılır. Web geliştiricileri, mevcut CSS bilgilerini kullanamaz.

JavaScript Yok: VectSharp, dinamik web içeriği, interaktif grafikler veya JavaScript tabanlı görselleştirmeleri render edemez.

Metin Düzeni Yok: Otomatik metin sarma, sayfalandırma ve akış düzeni mevcut değil. Geliştiriciler, metin konumlarını ve sayfa kırılmalarını elle hesaplamak zorundadır.

Grafik Odaklı Paradigma: Kütüphane, diyagramlar için tasarlanmıştır, raporlar veya faturalar için değil. Belge üretimi, ciddi el işçiliği gerektirir.

Temel Problem: Grafik Kütüphanesi vs Belge Üreticisi

VectSharp, her eleman için manuel vektör çizim gerektirir:

// VectSharp:Yönergevector 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:Yönergevector 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:Yönergevector 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, evrensel belge formatı olan HTML kullanır:

// 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: Özellik Karşılaştırması

Mimari farklılıkları anlamak, teknik karar vericilerin geçiş yatırımını değerlendirmesine yardımcı olur:

Özellik VectSharp IronPDF
Birincil Kullanım Vektör Grafikleri Belge Oluşturma
PDF Çıktı Evet Evet
HTML Desteği Hayır Evet
Lisanslama LGPL-3.0-yalnızca Ticari
Açık Kaynak Evet Kısmen (ticari özellikler)
En İyi Uygulama Bilimsel Görselleştirmeler Genel PDF Belgeleri
Özelleştirme Grafiklerle sınırlı Kapsamlı, Belge İlgili
HTML'den PDF'ye Hayır Tam Chromium
URL'den PDF'ye Hayır Evet
CSS Desteği Hayır Tam CSS3
JavaScript Hayır Tam ES2024
Otomatik Düzen Hayır Evet
Otomatik Sayfa Kesme Hayır Evet
Metin Kaydırma Yönerge Otomatik
PDF'leri Birleştirme Hayır Evet
PDF'leri Bölme Hayır Evet
Şifre Koruması Hayır Evet
Dijital İmzalar Hayır Evet
Öğrenme Eğrisi Yüksek (koordinatlar) Düşük (HTML/CSS)
Kod Kapsamı Oldukça Yüksek Düşük

Hızlı Başlat: VectSharp'tan IronPDF'e Geçiş

Geçiş bu öncü adımlarla hemen başlayabilir.

Adım 1: NuGet Paketlerini Değiştirin

TümVectSharppaketlerini çıkarın:

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

IronPDF'i yükleyin:

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

Adım 2: Ad Alanlarını Güncelleyin

VectSharp ad alanlarınıIronPDF ad alanı ile değiştirin:

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

Adım 3: Lisansa İzin Verin

Uygulama başlangıcında lisans başlatmayı ekleyin:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Kod Göç Örnekleri

HTML'yi PDF'ye Dönüştürme

VectSharp, HTML'den PDF'e dönüştürmeyi desteklemez. Bu temel yetenek farkı birçok geçiş kararını yönlendirir.

VectSharp Yaklaşımı:

// 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 Yaklaşımı:

// 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, bir Document, Page ve Graphics nesnesi oluşturmayı, ardından metinleri kesin koordinatlar ve font nesneleri ile manuel olarak konumlandırmayı gerektirir. IronPDF, tam CSS stil desteği ile HTML'i doğrudan render eder.

İleri düzey HTML-to-PDF senaryoları için HTML'den PDF'ye dönüşüm rehberine bakın.

Çok Sayfalı Belgeler Oluşturma

Çok sayfalı belgeler, bu .NET PDF kütüphaneleri arasındaki mimari farklılıkları ortaya çıkarır.

VectSharp Yaklaşımı:

// 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 Yaklaşımı:

// 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, ayrı Page nesneleri, ayrı Graphics bağlamları oluşturmaya ve her sayfa için her metin öğesini koordinatlar ve font nesneleri ile manuel olarak konumlandırmayı gerektirir. IronPDF, çok sayfalı belgeleri otomatik olarak oluşturmak için CSS page-break-after: always ile tek bir HTML stringi kullanır.

Şekil ve Metin Çizimi

Grafik yetenekleri, VectSharp'ın nerede mükemmel olduğunu gösterir, fakat aynı zamanda web standartlarının daha az kod ile eşdeğer fonksiyonellik sağladığını da gösterir.

VectSharp Yaklaşımı:

// 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 Yaklaşımı:

// 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, GraphicsPath nesneleri oluşturmayı, hassas matematiksel parametrelerle Arc() çağrıları yapmayı ve renkleri Colour.FromRgb() aracılığıyla yönetmeyi gerektirir. IronPDF, tanıdık CSS özelliklerini kullanır: çemberler için background-color, border-radius: 50% ve standart kenar boşlukları.

VectSharp API'den IronPDF Haritalama Referansı

Bu eşleştirme, doğrudan API eşdeğerlerini göstererek geçişi hızlandırır:

VectSharp IronPDF
Document ChromePdfRenderer
Page Otomatik
Graphics HTML/CSS
graphics.FillRectangle() CSS background-color üzerinde
graphics.StrokeRectangle() CSS border üzerinde
graphics.FillText() HTML metin öğeleri
graphics.StrokePath() SVG veya CSS kenarlıkları
GraphicsPath SVG ögesi
Colour.FromRgb() CSS renk değerleri
Font / FontFamily CSS font-family
doc.SaveAsPDF() pdf.SaveAs()
Elle sayfa boyutlandırma RenderingOptions.PaperSize

Geçiş Stratejileri

Strateji 1: Çizim Kodunu HTML/CSS'e Dönüştürün

Koordinat bazlı çizimi HTML elementleri ile değiştirin:

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

Strateji 2: Vektör Grafikler İçin SVG Kullanın

Karmaşık şekiller için, HTML'nizde gömülü SVG kullanın:

//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>
'VectSharppath
Dim path As 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>
$vbLabelText   $csharpLabel

Strateji 3: JavaScript Grafik Kütüphanelerini Kullanın

Bilimsel görselleştirmeler için—VectSharp'ın uzmanlık alanı—IronPDF, Chart.js, D3.js veya Plotly gibi güçlü JavaScript kütüphanelerini kullanabilir:

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

Yaygın Göç Sorunları ve Çözümleri

Sorun 1: Koordinat Sistemi Farklılıkları

VectSharp, sol üst orijinden elle konumlandırma ile noktaları kullanır.

Çözüm: CSS konumlandırmasını kullanın:

.element {
    position: absolute;
    top: 50px;
    left: 100px;
}

Sorun 2: Yazı Tipi Nesneleri

VectSharp programatik olarak Font ve FontFamily nesneleri oluşturur.

Çözüm: CSS yazı ailesini kullanın:

<style>
    body { font-family: Arial, sans-serif; font-size: 12pt; }
</style>
<style>
    body { font-family: Arial, sans-serif; font-size: 12pt; }
</style>
HTML

Sorun 3: Renk İşleme

VectSharp Colour.FromRgb() metot çağrılarını kullanır.

Çözüm: CSS renklerini kullanın:

.header { color: rgb(0, 102, 204); background-color: #f0f0f0; }

Sorun 4: Grafik Yolları

VectSharp, MoveTo, LineTo, Arc metotları ile karmaşık GraphicsPath API'yi kullanır.

Çözüm: Vektör grafikler için SVG kullanın:

<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 Geçiş Kontrol Listesi

Geçiş Öncesi Görevler

VectSharp kullanımını tanımlamak için kod tabanınızı denetleyin:

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

Belge sayfa boyutları (new Page(595, 842) kalıpları). Colour.FromRgb() kullanılarak renk şemalarını not edin. Yazı tipi yapılandırmalarını tanımlayın. SVG dönüşümü için GraphicsPath kullanarak karmaşık vektör grafikleri eşleyin.

Kod Güncelleme Görevleri

1.VectSharpNuGet paketlerini çıkarın 2.IronPDF NuGet paketini yükleyin

  1. VectSharp 'dan IronPdf 'a using deyimlerini güncelleyin
  2. FillRectangle çağrılarını background-color ile CSS kutularına dönüştürün
  3. FillText çağrılarını CSS biçimlendirmesi ile HTML metin öğelerine dönüştürün
  4. GraphicsPath işlemlerini SVG öğelerine dönüştürün
  5. Manuel sayfa yönetimini RenderingOptions.PaperSize ile değiştirin
  6. Başlangıçta lisans başlatma ekleyin

Geçiş Sonrası Testler

Geçiş sonrasında bu yönleri doğrulayın:

-VectSharpve IronPDF sürümleri arasındaki görsel çıktıyı karşılaştırın

  • Colour.FromRgb() değerlerinin CSS eşdeğerlerini kullanarak renklerin uyduğunu doğrulayın
  • Koordinat bazlı yerleştirme ile dönüştürülmüş elemanlar için konum doğruluğunu kontrol edin
  • Çok sayfalı belgeler için sayfa kırılmalarını test edin
  • Vektör grafiklerin SVG aracılığıyla doğru şekilde render edilip edilmediğini doğrulayın

IronPDF'e Geçmenin Temel Faydaları

VectSharp'tan IronPDF'e geçiş, belge üretimi için birkaç avantaj sağlar:

HTML Tabanlı İçerik: Web geliştiricileri mevcut HTML ve CSS bilgilerinden yararlanabilir. Koordinat tabanlı çizim API'lerini öğrenmeye gerek yok.

Otomatik Düzen: Metin sarma, sayfalandırma ve akış düzeni otomatik olarak gerçekleşir. Eleman pozisyonlarının elle hesaplanmasına gerek yok.

Modern CSS Desteği: Tam CSS3, Flexbox ve Grid düzenleri dahil. Duyarlı tasarımlar doğrudan PDF'e çevrilir.

JavaScript Yürütme: Chart.js, D3.js veya Plotly ile interaktif grafikler doğru şekilde render edilir. Dinamik içerik beklenildiği gibi çalışır.

URL'den PDF'e: Herhangi bir web sayfasını PDF olarak yakalayın—VectSharp ile mümkün olmayan bir işlev.

PDF İşlemleri: Birleştirme, bölme, filigran ekleme, şifre koruması ve dijital imzalar yerleşik özelliklerdir.

Düşük Kod Yoğunluğu:HTML/CSSdeklaratif ve okunabilir. Aynı belge, VectSharp'ın imperatif çizim yaklaşımına göre önemli ölçüde daha az kod gerektirir.

Aktif Geliştirme: IronPDF'nin düzenli güncellemeleri, mevcut ve gelecekteki .NET sürümleriyle uyumluluğu sağlar.

Lütfen dikkate alınVectSharp, ilgili sahibinin tescilli bir ticari markasıdır. Bu site,VectSharpile bağlantılı, onaylanmış veyaVectSharptarafından sponsorlu değildir. Tüm ürün isimleri, logolar ve markalar ilgili sahiplerinin mülkiyetindedir. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara