C#'ta VectSharp'tan IronPDF'ye Nasıl Geçilir
VectSharp, .NET ekosisteminde özellikle bilimsel görselleştirme ve teknik illüstrasyonlar için değerli bir vektör grafik kütüphanesi olarak kendisini kanıtlamıştır. Ancak, geliştirme ekipleri iş belgeleri, raporlar, faturalar veya herhangi bir HTML tabanlı içerik oluşturmak zorunda kaldığında, VectSharp'ın grafik öncelikli paradigması önemli sürtünme yaratır. Kütüphane, şekil ve grafik oluşturmak için bilim insanları için tasarlanmıştır, geliştiricilerin belgeler oluşturması için değildir.
Bu rehber, VectSharp'tan IronPDF'ye geçiş yolunu, adım adım talimatlar, kod karşılaştırmaları ve bu geçişi değerlendiren profesyonel .NET geliştiricileri için pratik örneklerle sağlar.
Neden VectSharp'tan Geçiş Yapmalı
VectSharp, diyagramlar, grafikler ve teknik illüstrasyonlar oluşturmak için tasarlanmış bilimsel bir görselleştirme ve vektör grafik kütüphanesidir. Belge oluşturma için tasarlanmamıştır—PDF çıktısı veren bir çizim kütüphanesidir. Geliştirme ekiplerinin geçişi değerlendirme nedenleri şunları içerir:
Sadece Bilimsel Odak: VectSharp, veri görselleştirme ve grafik oluşturma için tasarlanmıştır, faturalar, raporlar veya sertifikalar gibi iş belgeleri için değil.
HTML Desteği Yok: VectSharp, HTML veya CSS'i PDF'e dönüştüremez. Her öğe vektör grafik komutları kullanılarak manuel şekilde çizilmelidir.
Koordinat Tabanlı API: Her öğe, tam X,Y koordinatları ile konumlandırılmalıdır. Otomatik yerleşim, akış veya metin sarma yoktur.
CSS Stil Desteği Yok: Tüm stil, metod çağrılarıyla programatik olarak yapılır. Web geliştiricileri mevcut CSS bilgilerini kullanamazlar.
JavaScript Yok:VectSharpdinamik web içeriği, interaktif grafikler veya JavaScript tabanlı görselleştirmeler oluşturamaz.
Metin Düzeni Yok: Otomatik metin sarma, sayfa düzenleme ve akış düzeni mevcut değil. Geliştiriciler, metin pozisyonlarını ve sayfa sonlarını manuel olarak hesaplamalıdır.
Grafik Öncelikli Paradigma: Kütüphane diyagramlar için tasarlanmıştır, raporlar veya faturalar için değil. Belge oluşturma, kapsamlı manuel çalışma gerektirir.
Temel Problem: Grafik Kütüphanesi ile Belge Üretici
VectSharp, her öğe için manuel vektör çizimi gerektirir:
// VectSharp: El ile 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: El ile 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: El ile 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, 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)
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 |
|---|---|---|
| Temel Kullanım | Vektör Grafikler | Belge Oluşturma |
| PDF Çıktı | Evet | Evet |
| HTML Desteği | Hayır | Evet |
| Lisanslama | LGPL | Ticari |
| Açık Kaynak | Evet | Kısmen (ticari özellikler) |
| En İyi Olduğu Noktalar | Bilimsel Görselleştirmeler | Genel PDF Belgeleri |
| Özelleştirme | Grafiklerle Sınırlı | Geniş kapsamlı, Belge-İlişkili |
| HTML to PDF | 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 Kırılımları | Hayır | Evet |
| Metin Sarma | El ile | Otomatik |
| PDF'leri Birleştir | Hayır | Evet |
| PDF'leri Böl | Hayır | Evet |
| Şifre Koruması | Hayır | Evet |
| Dijital İmzalar | Hayır | Evet |
| Öğrenme Eğrisi | Yuksek (koordinatlar) | Düşük (HTML/CSS) |
| Kod Ayrıntısı | Çok Yüksek | Low |
Hızlı Başlangıç: VectSharp'tan IronPDF'e Geçiş
Geçiş hemen bu temel adımlar ile başlatılabilir.
1. Adım: NuGet Paketlerini Değiştir
TümVectSharppaketlerini kaldırın:
# RemoveVectSharppackages
dotnet remove package VectSharp
dotnet remove package VectSharp.PDF
# RemoveVectSharppackages
dotnet remove package VectSharp
dotnet remove package VectSharp.PDF
IronPDF'i yükleyin:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Adım 2: Alan Adlarını Güncelle
VectSharp namespaces'i IronPdf namespace 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
Adım 3: Lisansı Başlat
Uygulama başlangıcında lisans başlatmasını ekleyin:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Kod Geçiş Örnekleri
HTML'i PDF'ye Dönüştürme
VectSharp, HTML'den PDF'e dönüşümü 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));
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
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))
doc.Pages.Add(page)
doc.SaveAsPDF("output.pdf")
End Sub
End Module
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
VectSharp, bir Document, Page ve Graphics nesnesi oluşturmayı ve ardından metni tam koordinatlar ve yazı tipi nesneleri ile elle konumlandırmayı gerektirir. IronPDF, HTML'yi doğrudan tam CSS stillendirmesi desteği ile işler.
Gelişmiş HTML-PDF senaryoları için HTML'den PDF'e dönüştürme kılavuzuna bakın.
Çok Sayfalı Belgeler Oluşturma
Çok sayfalı belgeler, bu .NET PDF kütüphaneleri arasındaki mimari farklılıkları ortaya koyar.
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 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 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
VectSharp, ayrı Page nesneleri, ayrı Graphics bağlamları oluşturmayı ve her sayfa için her metin öğesini koordinatlar ve yazı tipi nesneleri ile elle konumlandırmayı gerektirir. IronPDF, çok sayfalı belgeleri otomatik olarak oluşturmak için CSS page-break-after: always ile tek bir HTML dizesi kullanır.
Şekil ve Metin Çizimi
Grafik yetenekleri, VectSharp'ın üstün olduğu ama aynı zamanda web standartlarının daha az kodla eşdeğer işlevsellik sunduğu yeri 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
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 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
VectSharp, GraphicsPath nesneleri oluşturmayı, kesin matematiksel parametrelerle Arc() çağırmayı ve renkleri Colour.FromRgb() ile yönetmeyi gerektirir. IronPDF, tanıdık CSS özelliklerini kullanır: background-color, daireler için border-radius: 50% ve standart kenar boşlukları.
VectSharp API'den IronPDF'e Haritalama Referansı
Bu eşleme, 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 <div> |
graphics.StrokeRectangle() |
CSS border üzerinde <div> |
graphics.FillText() |
HTML metin elemanları |
graphics.StrokePath() |
SVG veya CSS kenarları |
GraphicsPath |
SVG <path> elementi |
Colour.FromRgb() |
CSS renk değerleri |
Font / FontFamily |
CSS font-family |
doc.SaveAsPDF() |
pdf.SaveAs() |
| El ile sayfa boyutlandırma | RenderingOptions.PaperSize |
Geçiş Stratejileri
Strateji 1: Çizim Kodunu HTML/CSS'e Dönüştür
Koordinata dayalı çizimi HTML öğeleriyle değiştirin:
// 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>
Strateji 2: Vektör Grafikleri için SVG Kullanın
Karmaşık şekiller için HTML'nizde satır içi 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);
//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>
Strateji 3: JavaScript Grafik Kütüphanelerini Kullanın
Bilimsel görselleştirmeler için—VectSharp'ın uzmanlığı—IronPDF, Chart.js, D3.js veya Plotly gibi güçlü JavaScript kütüphanelerinden yararlanabilir:
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)
Yaygın Taşınma Sorunları ve Çözümleri
Sorun 1: Koordinat Sistemi Farklılıkları
VectSharp, manuel konumlama ile üst sol orijinden noktalar kullanır.
Çözüm: CSS konumlandırma kullanın:
.element {
position: absolute;
top: 50px;
left: 100px;
}
Sorun 2: Yazı Tipi Nesneleri
VectSharp programlı olarak Font ve FontFamily nesneleri oluşturur.
Çözüm: CSS font-family kullanın:
<style>
body { font-family: Arial, sans-serif; font-size: 12pt; }
</style>
<style>
body { font-family: Arial, sans-serif; font-size: 12pt; }
</style>
Sorun 3: Renk Yönetimi
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ıyla karmaşık bir GraphicsPath API'sı kullanır.
Çözüm: Vektör grafikleri 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>
VectSharp Geçiş Kontrol Listesi
Ön Taşınma Görevleri
TümVectSharpkullanımını belirlemek 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" .
Belge sayfa boyutları (new Page(595, 842) desenleri). Colour.FromRgb() kullanarak renk şemalarını not edin. Yazı tipi yapılandırmalarını belirleyin. SVG dönüşümü için GraphicsPath kullanarak karmaşık vektör grafiklerini haritalayın.
Kod Güncelleme Görevleri
1.VectSharpNuGet paketlerini kaldırın
- IronPdf NuGet paketini kurun
VectSharpileIronPdfarasında kullanma ifadelerini güncelleyin.FillRectangleçağrılarınıbackground-colorile CSS kutularına dönüştürün.FillTextçağrılarını CSS stili ile HTML metin öğelerine dönüştürün.GraphicsPathişlemlerini SVG<path>öğelerine dönüştürün.- Elle sayfa yönetimini
RenderingOptions.PaperSizeile değiştirin. - Başlangıçta lisans başlatma ekleyin
Taşınım Sonrası Test
Geçiş sonrasında aşağıdaki yönleri doğrulayın:
-VectSharpveIronPDFsü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.- Koordinata dayalı yerleştirmeden dönüştürülen öğeler için konumlandırma doğruluğunu kontrol edin
- Çok sayfalı belgeler için sayfa kesmelerini test edin
- SVG üzerinden vektör grafiklerin doğru şekilde oluşturulup oluşturulmadığını doğrulayın
IronPDF'e Geçişin Temel Avantajları
VectSharp'tan IronPDF'e geçiş yapmak, belge üretimi için çeşitli avantajlar sunar:
HTML Tabanlı İçerik: Web geliştiricileri mevcut HTML ve CSS becerilerinden yararlanabilir. Koordinata dayalı çizim API'lerini öğrenmeye gerek yok.
Otomatik Düzen: Metin sarma, sayfalandırma ve akış düzeni otomatik olarak gerçekleşir. El ile öğe konumları hesaplamaya gerek yok.
Modern CSS Desteği: Flexbox ve Grid düzenleri dahil tam CSS3 desteği. Duyarlı tasarımlar doğrudan PDF'e dönüştürülür.
JavaScript Yürütme: Chart.js, D3.js veya Plotly ile etkileşimli grafikler doğru şekilde render edilir. Dinamik içerik beklendiği gibi çalışır.
URL'den PDF'e: Herhangi bir web sayfasını PDF olarak yakalayın—bu işlevsellikVectSharpile mümkün değildir.
PDF İşlemleri: Birleştirme, bölme, filigran ekleme, parola koruma ve dijital imzalar yerleşik özelliklerdir.
Daha Az Kod Yoğunluğu:HTML/CSSbeyan edici ve okunabilirdir. Aynı belge, VectSharp'ın emirsel çizim yaklaşımından önemli ölçüde daha az kod gerektirir.
Aktif Geliştirme: 2026 boyunca .NET 10 ve C# 14 benimsenmesi arttıkça, IronPDF'in düzenli güncellemeleri mevcut ve gelecekteki .NET sürümleriyle uyumluluğu sağlar.

