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

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

  1. 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.
  2. Özel Şablon Sözdizimi: Özel bağlama sözdizimi öğrenme eğrisi gerektirir
  3. Sınırlı CSS Desteği: Tam tarayıcı tabanlı bir render motoru değil
  4. Daha Küçük Topluluk: Daha az belge ve topluluk örnekleri
  5. JavaScript Çalıştırma Yok: Yalnızca statik işleme
  6. Karmaşık Yapılandırma: XML ağırlıklı yapılandırma yaklaşımı
  7. 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

  1. .NET Ortamı: .NET Framework 4.6.2+ veya .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet Erişimi: NuGet paketlerini yükleme yeteneği
  3. 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
SHELL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ö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.Core NuGet paketini kaldır
  • IronPdf NuGet paketini kur
  • Ad alanı ithalatlarını günceleyin (using Scryber.Core;using IronPdf;)
  • Document.ParseDocument(html, ParseSourceType.DynamicContent) ile renderer.RenderHtmlAsPdf(html) değiştir
  • doc.SaveAsPDF() ile pdf.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.PaperSizerenderer.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ı

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku

Iron Destek Ekibi

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