C#'ta Scryber.Core'den IronPDF'ye Nasıl Geçilir
Scryber.Core'dan IronPDF'e geçiş, özelleşmiş bir XML/HTML çözümleyici motorundanChromiumdestekli modern bir render motoruna PDF oluşturma iş akışınızı dönüştürür, tam CSS3 veJavaScriptdesteği ile. Bu kılavuz, LGPL lisanslama endişelerini, özel şablon sözdizimini ve sınırlı render yeteneklerini ortadan kaldıran eksiksiz, adım adım bir geçiş yolu sağlar.
Neden Scryber.Core'dan IronPDF'e Geçilmeli
Scryber.Core'u Anlamak
Scryber.Core, HTML şablonlarını C# kullanarak PDF'lere dönüştüren açık kaynaklı bir kütüphanedir. Bu yetenek, web geliştirme ve HTML ile aşina olan geliştiriciler için çekici bir araç yapar. Belirli belge kodlama becerileri gerektiren diğer PDF çözümlerinin aksine, Scryber.Core, daha sezgisel bir PDF oluşturma yaklaşımı sağlamak için HTML'nin çok yönlülüğünü ve CSS stil yeteneklerini kullanır.
Scryber.Core birçok geliştirici için uygun bir seçenek olmasına rağmen, özellikle açık kaynak ilkeleriyle olan ideolojik uyumu ve sunduğu esneklik nedeniyle, sınırlı değildir.
Gecis Icın Temel Nedenler
- LGPL Lisans Endişeleri: LGPL lisansı, kütüphanenin kendisine yapılan tüm modifikasyonların açık kaynaklı olmasını gerektirir, bu da bazı ticari uygulamalar için sınırlayıcı olabilir.
- Özel Şablon Sözdizimi: Özel bağlama sözdizimi öğrenme eğrisi gerektirir
- Sınırlı CSS Desteği: Tam tarayıcı tabanlı bir render motoru değil
- Daha Küçük Topluluk: Daha az belge ve topluluk örnekleri
- JavaScript Çalıştırma Yok: Yalnızca statik işleme
- Karmaşık Yapılandırma: XML ağırlıklı yapılandırma yaklaşımı
- Sınırlı Ticari Destek: Scryber.Core büyük ölçüde topluluk tarafından desteklenir
Scryber.Core veIronPDFKarşılaştırması
| Bağlam | Scryber.Core | IronPDF |
|---|---|---|
| Lisans | LGPL (sınırlayıcı) | Ticari |
| Render Motoru | Ozel | Chromium |
| CSS Desteği | Sınırlı | Tam CSS3 |
| JavaScript | Hayır | Tam ES2024 |
| Şablon Bağlama | Patentli XML | Standart (Razor, vb.) |
| Öğrenme Eğrisi | Özel sözdizimi | Standart HTML/CSS |
| Async Destegi | Sınırlı | Tam |
| Dokümantasyon | Temel | Geniş kapsamlı |
| Topluluk Desteği | Daha küçük | Büyük |
| Ticari Destek | Sınırlı | Profesyonel destek dahildir |
IronPDF, Scryber.Core'a kıyasla kurumsal düzeyde ticari destek, kapsamlı belgeler ve daha geniş bir topluluk sunar. Kütüphane, LGPL kısıtlamaları olmadan daha esnek lisans seçenekleri sunar, bu da onu ticari uygulamalar için ideal kılar.
.NET 10 ve C# 14 benimsemesini 2025 ve 2026 boyunca planlayan ekipler için, IronPDF'in modernChromiummotoru, çağdaş web standartlarıyla tam uyumluluk sağlar.
Başlamadan Önce
Önkoşullar
- .NET Ortamı: .NET Framework 4.6.2+ veya .NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGet Erişimi: NuGet paketlerini yükleme yeteneği
- IronPDF Lisansı: Lisans anahtarınızı ironpdf.com adresinden edinin
NuGet Paket Değişiklikleri
# Remove Scryber.Core
dotnet remove package Scryber.Core
# Install IronPDF
dotnet add package IronPdf
# Remove Scryber.Core
dotnet remove package Scryber.Core
# Install IronPDF
dotnet add package IronPdf
Lisans Yapılandırması
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
API Referansının Tamamı
Namespace Değişiklikleri
// Before: Scryber.Core
using Scryber.Components;
using Scryber.Components.Pdf;
using Scryber.PDF;
using Scryber.Styles;
using Scryber.Core;
using Scryber.Core.Html;
using Scryber.Drawing;
// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: Scryber.Core
using Scryber.Components;
using Scryber.Components.Pdf;
using Scryber.PDF;
using Scryber.Styles;
using Scryber.Core;
using Scryber.Core.Html;
using Scryber.Drawing;
// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
Imports Scryber.Components
Imports Scryber.Components.Pdf
Imports Scryber.PDF
Imports Scryber.Styles
Imports Scryber.Core
Imports Scryber.Core.Html
Imports Scryber.Drawing
Imports IronPdf
Imports IronPdf.Rendering
Temel API Eşleştirmeleri
| Scryber.Core | IronPDF |
|---|---|
Document.ParseDocument(html) |
renderer.RenderHtmlAsPdf(html) |
Document.ParseTemplate(path) |
renderer.RenderHtmlFileAsPdf(path) |
doc.SaveAsPDF(path) |
pdf.SaveAs(path) |
doc.SaveAsPDF(stream) |
pdf.Stream veya pdf.BinaryData |
doc.Info.Title |
pdf.MetaData.Title |
doc.Info.Author |
pdf.MetaData.Author |
PDFPage |
pdf.Pages[i] |
PDFLayoutDocument |
RenderingOptions |
PDFStyle |
HTML'de CSS |
doc.RenderOptions.PaperSize |
RenderingOptions.PaperSize |
Veri baglama ({{value}}) |
Razor/Dizi enterpolasyonu |
Kod Geçiş Örnekleri
Örnek 1: Temel HTML'den PDF'e Dönüşüm
Önceki (Scryber.Core):
// NuGet: Install-Package Scryber.Core
using Scryber.Core;
using Scryber.Core.Html;
using System.IO;
class Program
{
static void Main()
{
string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
using (var doc = Document.ParseDocument(html, ParseSourceType.DynamicContent))
{
doc.SaveAsPDF("output.pdf");
}
}
}
// NuGet: Install-Package Scryber.Core
using Scryber.Core;
using Scryber.Core.Html;
using System.IO;
class Program
{
static void Main()
{
string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
using (var doc = Document.ParseDocument(html, ParseSourceType.DynamicContent))
{
doc.SaveAsPDF("output.pdf");
}
}
}
Imports Scryber.Core
Imports Scryber.Core.Html
Imports System.IO
Class Program
Shared Sub Main()
Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"
Using doc = Document.ParseDocument(html, ParseSourceType.DynamicContent)
doc.SaveAsPDF("output.pdf")
End Using
End Sub
End Class
Sonra (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
Bu örnek temel mimari farkı göstermektedir. Scryber.Core, HTML icerigini ayrıştırmak icin Document.ParseDocument() kullanır ve uygun atma icin bir using blogu gerektirir. Daha sonra doküman SaveAsPDF() ile kaydedilir.
IronPDF, HTML'yi dogrudan oluşturmak icin RenderHtmlAsPdf() ile bir ChromePdfRenderer ornegi kullanır. PDF SaveAs() ile kaydedilir. Manuel atılım gerekmez—IronPDF temizliği otomatik olarak yapar. Kapsamlı örnekler için HTML'den PDF'e döndürme belgesine bakın.
Örnek 2: URL'den PDF'e Dönüştürme
Önceki (Scryber.Core):
// NuGet: Install-Package Scryber.Core
using Scryber.Core;
using Scryber.Core.Html;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
using var client = new HttpClient();
string html = await client.GetStringAsync("https://www.example.com");
using (var doc = Document.ParseDocument(html, ParseSourceType.DynamicContent))
{
doc.SaveAsPDF("webpage.pdf");
}
}
}
// NuGet: Install-Package Scryber.Core
using Scryber.Core;
using Scryber.Core.Html;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
using var client = new HttpClient();
string html = await client.GetStringAsync("https://www.example.com");
using (var doc = Document.ParseDocument(html, ParseSourceType.DynamicContent))
{
doc.SaveAsPDF("webpage.pdf");
}
}
}
Imports Scryber.Core
Imports Scryber.Core.Html
Imports System.Net.Http
Imports System.Threading.Tasks
Module Program
Async Function Main() As Task
Using client As New HttpClient()
Dim html As String = Await client.GetStringAsync("https://www.example.com")
Using doc = Document.ParseDocument(html, ParseSourceType.DynamicContent)
doc.SaveAsPDF("webpage.pdf")
End Using
End Using
End Function
End Module
Sonra (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Class
Scryber.Core URL'leri doğrudan PDF'e dönüştüremez. HTML icerigini manuel olarak HttpClient.GetStringAsync() kullanarak indirmeniz ve daha sonra indirilmiş HTML'yi Document.ParseDocument() ile ayrıştırmanız gerekir. Bu yaklaşım, özel çözümleyicinin komut dosyalarını çalıştırmaması nedeniyleJavaScriptçalıştırmayı, dinamik içeriği ve doğru CSS çözümlemeyi kaçırır.
IronPDF'nin RenderUrlAsPdf() yöntemi,Chromiummotoru ile tamJavaScriptçalıstırma ve CSS oluşturmayı içeren tüm süreci tek bir çağrıda yurutur. Daha fazla bilgi icin eğitimlerimize bakın.
Örnek 3: Özel Sayfa Ayarları ve Kenar Boşlukları
Önceki (Scryber.Core):
// NuGet: Install-Package Scryber.Core
using Scryber.Core;
using Scryber.Core.Html;
using Scryber.Drawing;
using System.IO;
class Program
{
static void Main()
{
string html = "<html><body><h1>Custom PDF</h1><p>With custom margins and settings.</p></body></html>";
using (var doc = Document.ParseDocument(html, ParseSourceType.DynamicContent))
{
doc.RenderOptions.Compression = OutputCompressionType.FlateDecode;
doc.RenderOptions.PaperSize = PaperSize.A4;
doc.SaveAsPDF("custom.pdf");
}
}
}
// NuGet: Install-Package Scryber.Core
using Scryber.Core;
using Scryber.Core.Html;
using Scryber.Drawing;
using System.IO;
class Program
{
static void Main()
{
string html = "<html><body><h1>Custom PDF</h1><p>With custom margins and settings.</p></body></html>";
using (var doc = Document.ParseDocument(html, ParseSourceType.DynamicContent))
{
doc.RenderOptions.Compression = OutputCompressionType.FlateDecode;
doc.RenderOptions.PaperSize = PaperSize.A4;
doc.SaveAsPDF("custom.pdf");
}
}
}
Imports Scryber.Core
Imports Scryber.Core.Html
Imports Scryber.Drawing
Imports System.IO
Class Program
Shared Sub Main()
Dim html As String = "<html><body><h1>Custom PDF</h1><p>With custom margins and settings.</p></body></html>"
Using doc = Document.ParseDocument(html, ParseSourceType.DynamicContent)
doc.RenderOptions.Compression = OutputCompressionType.FlateDecode
doc.RenderOptions.PaperSize = PaperSize.A4
doc.SaveAsPDF("custom.pdf")
End Using
End Sub
End Class
Sonra (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 40;
renderer.RenderingOptions.MarginBottom = 40;
string html = "<html><body><h1>Custom PDF</h1><p>With custom margins and settings.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 40;
renderer.RenderingOptions.MarginBottom = 40;
string html = "<html><body><h1>Custom PDF</h1><p>With custom margins and settings.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom.pdf");
}
}
Imports IronPdf
Imports IronPdf.Rendering
Class Program
Shared Sub Main()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 40
renderer.RenderingOptions.MarginBottom = 40
Dim html As String = "<html><body><h1>Custom PDF</h1><p>With custom margins and settings.</p></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("custom.pdf")
End Sub
End Class
Scryber.Core, dokümanı ayrıştırdıktan sonra Compression (değer OutputCompressionType.FlateDecode olarak ayarlanır) ve PaperSize (değer PaperSize.A4 olarak ayarlanır) gibi çıktı ayarlarını yapılandırmak icin doc.RenderOptions kullanır.
IronPDF, oluşturulmadan once render ediciye RenderingOptions kullanır. Özellikler, PaperSize (değer PdfPaperSize.A4 olarak ayarlanır), MarginTop ve milimetre cinsinden ayarlanmış MarginBottom içerir. Ana fark, IronPDF'in doğrudan sayısal özellikler aracılığıyla kenar boşluklarını kontrol ederken, Scryber.Core'un XML tabanlı sti kullanılmaktadır.
Şablon Geçiş Kalıpları
Özel Bağlamadan Standart Şablonlara Geçiş
Scryber.Core, standart şablonlara çevrilmesi gereken özel XML tabanlı bağlama sözdizimi kullanır:
Scryber.Core Bağlama:
<pdf:Para text='{{model.Name}}' />
<pdf:Para text='Total: {{model.Total:C}}' />
<pdf:ForEach on='{{model.Items}}'>
<pdf:Para text='{{.Name}}: {{.Price}}' />
</pdf:ForEach>
<pdf:Para text='{{model.Name}}' />
<pdf:Para text='Total: {{model.Total:C}}' />
<pdf:ForEach on='{{model.Items}}'>
<pdf:Para text='{{.Name}}: {{.Price}}' />
</pdf:ForEach>
IronPDF ile C# String Interpolasyonu:
var items = model.Items.Select(i => $"<li>{i.Name}: {i.Price:C}</li>");
var html = $@"
<p>{model.Name}</p>
<p>Total: {model.Total:C}</p>
<ul>
{string.Join("", items)}
</ul>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
var items = model.Items.Select(i => $"<li>{i.Name}: {i.Price:C}</li>");
var html = $@"
<p>{model.Name}</p>
<p>Total: {model.Total:C}</p>
<ul>
{string.Join("", items)}
</ul>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
Dim items = model.Items.Select(Function(i) $"<li>{i.Name}: {i.Price:C}</li>")
Dim html = $"
<p>{model.Name}</p>
<p>Total: {model.Total:C}</p>
<ul>
{String.Join("", items)}
</ul>"
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
Ana avantaj:IronPDFstandart C# ve HTML kullanır, bu nedenle özel sözdizimi öğrenmek yerine herhangi bir şablon motorunu (Razor, Handlebars, vb.) kullanabilirsiniz.
Üstbilgi ve Altbilgi Geçişi
Scryber.Core (XML tabanlı üstbilgi/altbilgi):
<?xml version='1.0' encoding='utf-8' ?>
<pdf:Document xmlns:pdf='http://www.scryber.co.uk/schemas/core/release/v1/Scryber.Components.xsd'>
<Pages>
<pdf:Section>
<Header>
<pdf:Para text='Company Report' />
</Header>
<Footer>
<pdf:Para text='Page {{pagenum}} of {{pagetotal}}' />
</Footer>
<Content>
<pdf:H1 text='Content Here' />
</Content>
</pdf:Section>
</Pages>
</pdf:Document>
<?xml version='1.0' encoding='utf-8' ?>
<pdf:Document xmlns:pdf='http://www.scryber.co.uk/schemas/core/release/v1/Scryber.Components.xsd'>
<Pages>
<pdf:Section>
<Header>
<pdf:Para text='Company Report' />
</Header>
<Footer>
<pdf:Para text='Page {{pagenum}} of {{pagetotal}}' />
</Footer>
<Content>
<pdf:H1 text='Content Here' />
</Content>
</pdf:Section>
</Pages>
</pdf:Document>
IronPDF (HTML üstbilgi/altbilgi):
using IronPdf;
var renderer = new ChromePdfRenderer();
// HTML header with full CSS support
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='width: 100%; text-align: center; font-size: 12pt; border-bottom: 1px solid #ccc;'>
Company Report
</div>",
MaxHeight = 30
};
// HTML footer with page numbers
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='width: 100%; text-align: center; font-size: 10pt;'>
Page {page} of {total-pages}
</div>",
MaxHeight = 25
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Content Here</h1>");
pdf.SaveAs("report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// HTML header with full CSS support
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='width: 100%; text-align: center; font-size: 12pt; border-bottom: 1px solid #ccc;'>
Company Report
</div>",
MaxHeight = 30
};
// HTML footer with page numbers
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='width: 100%; text-align: center; font-size: 10pt;'>
Page {page} of {total-pages}
</div>",
MaxHeight = 25
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Content Here</h1>");
pdf.SaveAs("report.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' HTML header with full CSS support
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.HtmlFragment = "
<div style='width: 100%; text-align: center; font-size: 12pt; border-bottom: 1px solid #ccc;'>
Company Report
</div>",
.MaxHeight = 30
}
' HTML footer with page numbers
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.HtmlFragment = "
<div style='width: 100%; text-align: center; font-size: 10pt;'>
Page {page} of {total-pages}
</div>",
.MaxHeight = 25
}
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Content Here</h1>")
pdf.SaveAs("report.pdf")
Scryber.Core, {{pagenum}} ve {{pagetotal}} gibi yerlesik hazırlayicilar içeren XML tabanlı baslik/altbilgi tanımlamasi gerektirir. IronPDF, basliklar ve altbilgiler icin {page} ve {total-pages} hazırlayıcıları ile tamHTML/CSSkullanır.
Geçiş Sonrası Yeni Özellikler
IronPDF'e geçtikten sonra Scryber.Core'un sağlayamayacağı yetenekler kazandınız:
PDF Birleştirme
var pdf1 = PdfDocument.FromFile("chapter1.pdf");
var pdf2 = PdfDocument.FromFile("chapter2.pdf");
var pdf3 = PdfDocument.FromFile("chapter3.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2, pdf3);
merged.SaveAs("complete_book.pdf");
var pdf1 = PdfDocument.FromFile("chapter1.pdf");
var pdf2 = PdfDocument.FromFile("chapter2.pdf");
var pdf3 = PdfDocument.FromFile("chapter3.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2, pdf3);
merged.SaveAs("complete_book.pdf");
Dim pdf1 = PdfDocument.FromFile("chapter1.pdf")
Dim pdf2 = PdfDocument.FromFile("chapter2.pdf")
Dim pdf3 = PdfDocument.FromFile("chapter3.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2, pdf3)
merged.SaveAs("complete_book.pdf")
Güvenlik ve Metadata
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");
// Metadata
pdf.MetaData.Title = "My Document";
pdf.MetaData.Author = "John Doe";
pdf.MetaData.Subject = "Annual Report";
pdf.MetaData.Keywords = "report, annual, confidential";
// Security
pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("protected.pdf");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");
// Metadata
pdf.MetaData.Title = "My Document";
pdf.MetaData.Author = "John Doe";
pdf.MetaData.Subject = "Annual Report";
pdf.MetaData.Keywords = "report, annual, confidential";
// Security
pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("protected.pdf");
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>")
' Metadata
pdf.MetaData.Title = "My Document"
pdf.MetaData.Author = "John Doe"
pdf.MetaData.Subject = "Annual Report"
pdf.MetaData.Keywords = "report, annual, confidential"
' Security
pdf.SecuritySettings.OwnerPassword = "owner123"
pdf.SecuritySettings.UserPassword = "user456"
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights
pdf.SaveAs("protected.pdf")
Özellik Karsilastirma Ozeti
| Özellik | Scryber.Core | IronPDF |
|---|---|---|
| HTML'den PDF'ye | Temel | TamChromium |
| URL'den PDF'ye | Manuel çekme | Doğal destek |
| CSS Grid | Sınırlı | Desteklenir |
| Flexbox | Sınırlı | Desteklenir |
| JavaScript | Hayır | Tam ES2024 |
| Veri Bağlama | Patentli XML | Razor'ı/Handlebars kullan |
| Üstbilgi/Altbilgi | XML tabanlı | HTML/CSS |
| PDF'leri birleştir | Sınırlı | Yerleşik |
| PDF'leri Böl | Hayır | Evet |
| Filigranlar | Temel | Tam HTML |
| Dijital İmzalar | Hayır | Evet |
| PDF/A | Hayır | Evet |
| Şifre Koruması | Temel | Tam |
| Async Destegi | Sınırlı | Tam |
| Çapraz Platform | Evet | Evet |
Goc Kontrol Listesi
Geçiş Öncesi
- XML/bağlama desenleri için tüm Scryber şablonlarını denetleyin
- Kullanılan doküman veri bağlama kalıpları (
{{model.Property}}) - CSS dönüşümü gerektiren özel stilleri belirleyin
- ironpdf.com adresindenIronPDFlisans anahtarını alın
Kod Güncellemeleri
Scryber.CoreNuGet paketini kaldırIronPdfNuGet paketini kur- Ad alanı ithalatlarını günceleyin (
using Scryber.Core;→using IronPdf;) Document.ParseDocument(html, ParseSourceType.DynamicContent)ilerenderer.RenderHtmlAsPdf(html)değiştirdoc.SaveAsPDF()ilepdf.SaveAs()değiştir- XML şablonlarını HTML'e dönüştürün
- Özel bağlamayı standart şablonlama ile değiştirin (Razor/dize interpolasyonu)
- Sayfa ayarlarını güncelleyin:
doc.RenderOptions.PaperSize→renderer.RenderingOptions.PaperSize - Baslıkları/altbilgileri HTML formatına dönüştür
{page}ve{total-pages}hazırlayıcıları ile - Uygulama başlatıldığında lisans başlatma ekleyin
Test Etme
- Tüm belge şablonlarını test edin
- Stil eşleşmelerini doğrulayın (tam CSS desteğinden yararlanın)
- Yeni şablonlama ile veri bağlamasını test edin
- Sayfa kırılmalarını doğrulayın
- Sayfa numarası yer tutucularıyla başlıklar/altlıkları test edin
- Performans karşılaştırması

