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
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 |
|---|---|---|
| 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
IronPDF'i yükleyin:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
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
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"
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
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ı, 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
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ş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
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ı, 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>
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>
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)
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>
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>
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" .
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
VectSharp'danIronPdf'a using deyimlerini güncelleyinFillRectangleçağrılarınıbackground-colorile CSS kutularına dönüştürünFillTextçağrılarını CSS biçimlendirmesi ile HTML metin öğelerine dönüştürünGraphicsPathişlemlerini SVGöğelerine dönüştürün- Manuel sayfa yönetimini
RenderingOptions.PaperSizeile değiştirin - 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.

