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

Aspose.PDF'den IronPDF'e C# ile Nasıl Geçilir

Full Comparison

Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against Aspose PDF on pricing, HTML support, and licensing.

View Full Comparison

Aspose.PDF'den Neden Geçiş Yapılmalı?

Aspose.PDF kurumsal düzeyde işlevsellik sağlasa da, birkaç faktör geliştirme ekiplerini PDF oluşturma ihtiyaçları için modern alternatifler aramaya yönlendirir.

Maliyet Karşılaştırması

Aspose.PDF, zamanla önemli ölçüde biriken yıllık yenilemelerle geleneksel bir kurumsal lisanslama modeli kullanır:

Bağlam Aspose.PDF IronPDF
Başlangıç Fiyatı $1,199/geliştirici/yil $749 tek seferlik (Lite)
Lisans Modeli Yıllık abonelik + yenileme Süresiz lisans
OEM Lisansı Ek olarak $5,997+ Daha yüksek seviyelerde dahil
Destek Ekstra maliyet seviyeleri Dahil
Toplam 3 Yıl Maliyeti $3,597+ her geliştirici başına 749$ bir kerelik

HTML İşleme Motoru Karşılaştırması

Aspose.PDF, modern web standartlarıyla mücadele eden Flying Saucer CSS motorunu kullanır.IronPDFtam bir Chromium işleme motorundan yararlanır:

Özellik Aspose.PDF (Flying Saucer) IronPDF (Chromium)
CSS3 Desteği Sınırlı (eski CSS) Tam CSS3
Flexbox/Grid Desteklenmiyor Desteklenir
JavaScript Çok sınırlı Desteklenir
Web Yazı Tipleri Kısmen Tamam
Modern HTML5 Sınırlı Tamam
İşleme Kalitesi Değişken Piksel mükemmelliği

Belgelenmiş Performans Sorunları

Kullanıcılar, iki kütüphane arasında önemli performans farklılıkları bildirdi:

Metrik Aspose.PDF IronPDF
HTML İşleme Dokümante edilen yavaslamalar (bazi durumlarda 30 kat daha yavas) Optimizasyonlu Chromium motoru
Buyuk Belgeler Rapor edilen bellek problemleri Etkili akış
Linux Performansı Yuksek CPU, bellek sizintilari rapor edildi Kararlı

Aspose.PDF vs. IronPDF: Temel Farklar

Bağlam Aspose.PDF IronPDF
Fiyatlandırma $1.199/geliştirici/yıl (abonelik) $749 tek seferlik (Lite)
HTML Motoru Flying Saucer (sınırlı CSS) Chromium (tam CSS3/JS)
Performans Belgelenmiş yavaşlamalar Optimize edilmiş
Lisans Modeli Yıllık yenileme + .lic dosyası Süresiz + kod tabanlı anahtar
Linux Desteği Rapor edilen sorunlar (CPU, bellek) Kararlı
Sayfa İndeksleme 1 yerine (Pages[1]) 0 yerine (Pages[0])

Önceden Taşıma Hazırlığı

Önkoşullar

Ortamınızın bu gereksinimlere uygun olduğunu doğrulayın:

  • .NET Framework 4.6.2+ veya .NET Core 3.1 / .NET 5-9
  • Visual Studio 2019+ veya C# uzantılı VS Code
  • NuGet Paket Yöneticisi erişimi -IronPDFlisans anahtarı (ücretsiz deneme ironpdf.com adresinde mevcuttur)

Aspose.PDF Kullanım Denetimi

Tüm Aspose.PDF referanslarını belirlemek için bu komutları çözüm dizininizde çalıştırın:

# Find all Aspose.Pdf using statements
grep -r "using Aspose.Pdf" --include="*.cs" .

# Find HtmlLoadOptions usage
grep -r "HtmlLoadOptions\|HtmlFragment" --include="*.cs" .

# Find Facades usage
grep -r "PdfFileEditor\|PdfFileMend\|PdfFileStamp" --include="*.cs" .

# Find TextAbsorber usage
grep -r "TextAbsorber\|TextFragmentAbsorber" --include="*.cs" .
# Find all Aspose.Pdf using statements
grep -r "using Aspose.Pdf" --include="*.cs" .

# Find HtmlLoadOptions usage
grep -r "HtmlLoadOptions\|HtmlFragment" --include="*.cs" .

# Find Facades usage
grep -r "PdfFileEditor\|PdfFileMend\|PdfFileStamp" --include="*.cs" .

# Find TextAbsorber usage
grep -r "TextAbsorber\|TextFragmentAbsorber" --include="*.cs" .
SHELL

Beklenen Büyük Değişiklikler

Aspose.PDF Deseni Gereken Değişiklik
new Document() + Pages.Add() Bunun yerine HTML işleme kullanın
HtmlLoadOptions ChromePdfRenderer.RenderHtmlAsPdf()
TextFragment + manuel konumlandırma CSS tabanlı konumlandırma
PdfFileEditor.Concatenate() PdfDocument.Merge()
TextFragmentAbsorber pdf.ExtractAllText()
ImageStamp HTML tabanlı filigranlar
.lic dosya lisanslaması Kod tabanlı lisans anahtarı
1 tabanlı sayfa indeksleme 0 tabanlı sayfa indeksleme

Adım Adım Geçiş Süreci

Adım 1: NuGet Paketlerini Güncelleyin

Aspose.PDF'yi kaldırın veIronPDFkurun:

# Remove Aspose.PDF
dotnet remove package Aspose.PDF

# Install IronPDF
dotnet add package IronPdf
# Remove Aspose.PDF
dotnet remove package Aspose.PDF

# Install IronPDF
dotnet add package IronPdf
SHELL

Ya da Paket Yöneticisi Konsolu aracılığıyla:

Uninstall-Package Aspose.PDF
Install-Package IronPdf

2. Adım: Namespace Referanslarını Güncelleyin

Aspose.PDF ad alanlarınıIronPDFile değiştirin:

// Remove these
using Aspose.Pdf;
using Aspose.Pdf.Text;
using Aspose.Pdf.Facades;
using Aspose.Pdf.Generator;

// Add these
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
// Remove these
using Aspose.Pdf;
using Aspose.Pdf.Text;
using Aspose.Pdf.Facades;
using Aspose.Pdf.Generator;

// Add these
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
' Remove these
' Imports Aspose.Pdf
' Imports Aspose.Pdf.Text
' Imports Aspose.Pdf.Facades
' Imports Aspose.Pdf.Generator

' Add these
Imports IronPdf
Imports IronPdf.Rendering
Imports IronPdf.Editing
$vbLabelText   $csharpLabel

Adım 3: Lisans Yapılandırmasını Güncelleyin

Aspose.PDF .lic dosya lisanslaması kullanır.IronPDFbasit bir kod tabanlı anahtar kullanır.

Aspose.PDF Uygulaması:

var license = new Aspose.Pdf.License();
license.SetLicense("Aspose.Pdf.lic");
var license = new Aspose.Pdf.License();
license.SetLicense("Aspose.Pdf.lic");
Imports Aspose.Pdf

Dim license As New License()
license.SetLicense("Aspose.Pdf.lic")
$vbLabelText   $csharpLabel

IronPDF Uygulaması:

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

Tam API Geçiş Referansı

Çekirdek Sınıf Eşleştirmesi

Aspose.PDF Sınıfı IronPDF Eşdeğeri
Document PdfDocument
HtmlLoadOptions ChromePdfRenderer
TextFragmentAbsorber PdfDocument.ExtractAllText()
PdfFileEditor PdfDocument.Merge()
TextStamp / ImageStamp PdfDocument.ApplyWatermark()
License IronPdf.License

Belge İşlemleri

Aspose.PDF Yöntemi IronPDF Yöntemi
new Document() new PdfDocument()
new Document(path) PdfDocument.FromFile(path)
doc.Save(path) pdf.SaveAs(path)
doc.Pages.Count pdf.PageCount
doc.Pages.Delete(index) pdf.RemovePage(index)

HTML'den PDF'ye Dönüşüm

Aspose.PDF Yöntemi IronPDF Yöntemi
new HtmlLoadOptions() new ChromePdfRenderer()
new Document(stream, htmlOptions) renderer.RenderHtmlAsPdf(html)
new Document(path, htmlOptions) renderer.RenderHtmlFileAsPdf(path)

Kod Geçiş Örnekleri

HTML Dizesinden PDF'e

En yaygın Aspose.PDF işlemi, yaklaşımda temel bir farkı gösterir—Aspose.PDF HTML'i bir MemoryStream'de sarmalamayı gerektirirken,IronPDFdoğrudan stringleri kabul eder.

Aspose.PDF Uygulaması:

// NuGet: Install-Package Aspose.PDF
using Aspose.Pdf;
using System;
using System.IO;
using System.Text;

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML string.</p></body></html>";

        using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(htmlContent)))
        {
            var htmlLoadOptions = new HtmlLoadOptions();
            var document = new Document(stream, htmlLoadOptions);
            document.Save("output.pdf");
        }

        Console.WriteLine("PDF created from HTML string");
    }
}
// NuGet: Install-Package Aspose.PDF
using Aspose.Pdf;
using System;
using System.IO;
using System.Text;

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML string.</p></body></html>";

        using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(htmlContent)))
        {
            var htmlLoadOptions = new HtmlLoadOptions();
            var document = new Document(stream, htmlLoadOptions);
            document.Save("output.pdf");
        }

        Console.WriteLine("PDF created from HTML string");
    }
}
Imports Aspose.Pdf
Imports System
Imports System.IO
Imports System.Text

Module Program
    Sub Main()
        Dim htmlContent As String = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML string.</p></body></html>"

        Using stream As New MemoryStream(Encoding.UTF8.GetBytes(htmlContent))
            Dim htmlLoadOptions As New HtmlLoadOptions()
            Dim document As New Document(stream, htmlLoadOptions)
            document.Save("output.pdf")
        End Using

        Console.WriteLine("PDF created from HTML string")
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF Uygulaması:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML string.</p></body></html>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created from HTML string");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML string.</p></body></html>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created from HTML string");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim htmlContent As String = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML string.</p></body></html>"

        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
        pdf.SaveAs("output.pdf")

        Console.WriteLine("PDF created from HTML string")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF, MemoryStream sargısını tamamen ortadan kaldırır—daha temiz, daha sezgisel bir API.

HTML Dosyasını PDF'ye Dönüştürme

Aspose.PDF Uygulaması:

// NuGet: Install-Package Aspose.PDF
using Aspose.Pdf;
using System;

class Program
{
    static void Main()
    {
        var htmlLoadOptions = new HtmlLoadOptions();
        var document = new Document("input.html", htmlLoadOptions);
        document.Save("output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}
// NuGet: Install-Package Aspose.PDF
using Aspose.Pdf;
using System;

class Program
{
    static void Main()
    {
        var htmlLoadOptions = new HtmlLoadOptions();
        var document = new Document("input.html", htmlLoadOptions);
        document.Save("output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}
Imports Aspose.Pdf
Imports System

Class Program
    Shared Sub Main()
        Dim htmlLoadOptions As New HtmlLoadOptions()
        Dim document As New Document("input.html", htmlLoadOptions)
        document.Save("output.pdf")
        Console.WriteLine("PDF created successfully")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF Uygulaması:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlFileAsPdf("input.html");
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlFileAsPdf("input.html");
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlFileAsPdf("input.html")
        pdf.SaveAs("output.pdf")
        Console.WriteLine("PDF created successfully")
    End Sub
End Class
$vbLabelText   $csharpLabel

Birden Fazla PDF'yi Birleştirme

Aspose.PDF, sayfalar arasında manuel olarak geçiş yapmayı gerektirir. IronPDF, sabit bir Merge yöntemi sağlar.

Aspose.PDF Uygulaması:

// NuGet: Install-Package Aspose.PDF
using Aspose.Pdf;
using System;

class Program
{
    static void Main()
    {
        var document1 = new Document("file1.pdf");
        var document2 = new Document("file2.pdf");

        foreach (Page page in document2.Pages)
        {
            document1.Pages.Add(page);
        }

        document1.Save("merged.pdf");
        Console.WriteLine("PDFs merged successfully");
    }
}
// NuGet: Install-Package Aspose.PDF
using Aspose.Pdf;
using System;

class Program
{
    static void Main()
    {
        var document1 = new Document("file1.pdf");
        var document2 = new Document("file2.pdf");

        foreach (Page page in document2.Pages)
        {
            document1.Pages.Add(page);
        }

        document1.Save("merged.pdf");
        Console.WriteLine("PDFs merged successfully");
    }
}
Imports Aspose.Pdf
Imports System

Class Program
    Shared Sub Main()
        Dim document1 As New Document("file1.pdf")
        Dim document2 As New Document("file2.pdf")

        For Each page As Page In document2.Pages
            document1.Pages.Add(page)
        Next

        document1.Save("merged.pdf")
        Console.WriteLine("PDFs merged successfully")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF Uygulaması:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("file1.pdf");
        var pdf2 = PdfDocument.FromFile("file2.pdf");

        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");

        Console.WriteLine("PDFs merged successfully");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("file1.pdf");
        var pdf2 = PdfDocument.FromFile("file2.pdf");

        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");

        Console.WriteLine("PDFs merged successfully");
    }
}
Imports IronPdf
Imports System
Imports System.Collections.Generic

Module Program
    Sub Main()
        Dim pdf1 = PdfDocument.FromFile("file1.pdf")
        Dim pdf2 = PdfDocument.FromFile("file2.pdf")

        Dim merged = PdfDocument.Merge(pdf1, pdf2)
        merged.SaveAs("merged.pdf")

        Console.WriteLine("PDFs merged successfully")
    End Sub
End Module
$vbLabelText   $csharpLabel

Metin Çıkarma

Aspose.PDF Uygulaması:

using Aspose.Pdf;
using Aspose.Pdf.Text;

var document = new Document("document.pdf");
var absorber = new TextAbsorber();

foreach (Page page in document.Pages)
{
    page.Accept(absorber);
}

string extractedText = absorber.Text;
Console.WriteLine(extractedText);
using Aspose.Pdf;
using Aspose.Pdf.Text;

var document = new Document("document.pdf");
var absorber = new TextAbsorber();

foreach (Page page in document.Pages)
{
    page.Accept(absorber);
}

string extractedText = absorber.Text;
Console.WriteLine(extractedText);
Imports Aspose.Pdf
Imports Aspose.Pdf.Text

Dim document As New Document("document.pdf")
Dim absorber As New TextAbsorber()

For Each page As Page In document.Pages
    page.Accept(absorber)
Next

Dim extractedText As String = absorber.Text
Console.WriteLine(extractedText)
$vbLabelText   $csharpLabel

IronPDF Uygulaması:

using IronPdf;

var pdf = PdfDocument.FromFile("document.pdf");

// Extract all text - one line!
string allText = pdf.ExtractAllText();
Console.WriteLine(allText);

// Or extract from specific page
string page1Text = pdf.ExtractTextFromPage(0);
using IronPdf;

var pdf = PdfDocument.FromFile("document.pdf");

// Extract all text - one line!
string allText = pdf.ExtractAllText();
Console.WriteLine(allText);

// Or extract from specific page
string page1Text = pdf.ExtractTextFromPage(0);
Imports IronPdf

Dim pdf = PdfDocument.FromFile("document.pdf")

' Extract all text - one line!
Dim allText As String = pdf.ExtractAllText()
Console.WriteLine(allText)

' Or extract from specific page
Dim page1Text As String = pdf.ExtractTextFromPage(0)
$vbLabelText   $csharpLabel

IronPDF, çok aşamalı bir işlemi tek bir yöntem çağrısına indirerek metin çıkarmayı basitleştirir.

Filigran Ekleme

Aspose.PDF Uygulaması:

using Aspose.Pdf;
using Aspose.Pdf.Text;

var document = new Document("document.pdf");

var textStamp = new TextStamp("CONFIDENTIAL");
textStamp.Background = true;
textStamp.XIndent = 100;
textStamp.YIndent = 100;
textStamp.Rotate = Rotation.on45;
textStamp.Opacity = 0.5;
textStamp.TextState.Font = FontRepository.FindFont("Arial");
textStamp.TextState.FontSize = 72;
textStamp.TextState.ForegroundColor = Color.Red;

foreach (Page page in document.Pages)
{
    page.AddStamp(textStamp);
}

document.Save("watermarked.pdf");
using Aspose.Pdf;
using Aspose.Pdf.Text;

var document = new Document("document.pdf");

var textStamp = new TextStamp("CONFIDENTIAL");
textStamp.Background = true;
textStamp.XIndent = 100;
textStamp.YIndent = 100;
textStamp.Rotate = Rotation.on45;
textStamp.Opacity = 0.5;
textStamp.TextState.Font = FontRepository.FindFont("Arial");
textStamp.TextState.FontSize = 72;
textStamp.TextState.ForegroundColor = Color.Red;

foreach (Page page in document.Pages)
{
    page.AddStamp(textStamp);
}

document.Save("watermarked.pdf");
Imports Aspose.Pdf
Imports Aspose.Pdf.Text

Dim document As New Document("document.pdf")

Dim textStamp As New TextStamp("CONFIDENTIAL")
textStamp.Background = True
textStamp.XIndent = 100
textStamp.YIndent = 100
textStamp.Rotate = Rotation.on45
textStamp.Opacity = 0.5
textStamp.TextState.Font = FontRepository.FindFont("Arial")
textStamp.TextState.FontSize = 72
textStamp.TextState.ForegroundColor = Color.Red

For Each page As Page In document.Pages
    page.AddStamp(textStamp)
Next

document.Save("watermarked.pdf")
$vbLabelText   $csharpLabel

IronPDF Uygulaması:

using IronPdf;
using IronPdf.Editing;

var pdf = PdfDocument.FromFile("document.pdf");

// HTML-based watermark with full styling control
string watermarkHtml = @"
<div style='
    color: red;
    opacity: 0.5;
    font-family: Arial;
    font-size: 72px;
    font-weight: bold;
    text-align: center;
'>CONFIDENTIAL</div>";

pdf.ApplyWatermark(watermarkHtml,
    rotation: 45,
    verticalAlignment: VerticalAlignment.Middle,
    horizontalAlignment: HorizontalAlignment.Center);

pdf.SaveAs("watermarked.pdf");
using IronPdf;
using IronPdf.Editing;

var pdf = PdfDocument.FromFile("document.pdf");

// HTML-based watermark with full styling control
string watermarkHtml = @"
<div style='
    color: red;
    opacity: 0.5;
    font-family: Arial;
    font-size: 72px;
    font-weight: bold;
    text-align: center;
'>CONFIDENTIAL</div>";

pdf.ApplyWatermark(watermarkHtml,
    rotation: 45,
    verticalAlignment: VerticalAlignment.Middle,
    horizontalAlignment: HorizontalAlignment.Center);

pdf.SaveAs("watermarked.pdf");
Imports IronPdf
Imports IronPdf.Editing

Dim pdf = PdfDocument.FromFile("document.pdf")

' HTML-based watermark with full styling control
Dim watermarkHtml As String = "
<div style='
    color: red;
    opacity: 0.5;
    font-family: Arial;
    font-size: 72px;
    font-weight: bold;
    text-align: center;
'>CONFIDENTIAL</div>"

pdf.ApplyWatermark(watermarkHtml,
    rotation:=45,
    verticalAlignment:=VerticalAlignment.Middle,
    horizontalAlignment:=HorizontalAlignment.Center)

pdf.SaveAs("watermarked.pdf")
$vbLabelText   $csharpLabel

IronPDF HTML/CSS tabanlı filigranlama kullanır, web teknolojileri yoluyla tam stil kontrolü sağlar.

Şifre Koruması

Aspose.PDF Uygulaması:

using Aspose.Pdf;

var document = new Document("document.pdf");
document.Encrypt("userPassword", "ownerPassword", DocumentPrivilege.ForbidAll, CryptoAlgorithm.AESx256);
document.Save("protected.pdf");
using Aspose.Pdf;

var document = new Document("document.pdf");
document.Encrypt("userPassword", "ownerPassword", DocumentPrivilege.ForbidAll, CryptoAlgorithm.AESx256);
document.Save("protected.pdf");
Imports Aspose.Pdf

Dim document As New Document("document.pdf")
document.Encrypt("userPassword", "ownerPassword", DocumentPrivilege.ForbidAll, CryptoAlgorithm.AESx256)
document.Save("protected.pdf")
$vbLabelText   $csharpLabel

IronPDF Uygulaması:

using IronPdf;

var pdf = PdfDocument.FromFile("document.pdf");

// Set passwords
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";

// Set permissions
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;

pdf.SaveAs("protected.pdf");
using IronPdf;

var pdf = PdfDocument.FromFile("document.pdf");

// Set passwords
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";

// Set permissions
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;

pdf.SaveAs("protected.pdf");
Imports IronPdf

Dim pdf = PdfDocument.FromFile("document.pdf")

' Set passwords
pdf.SecuritySettings.UserPassword = "userPassword"
pdf.SecuritySettings.OwnerPassword = "ownerPassword"

' Set permissions
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit

pdf.SaveAs("protected.pdf")
$vbLabelText   $csharpLabel

IronPDF, güçlü tipli özellikler aracılığıyla izinler üzerinde ayrıntılı kontrol sağlar. Daha fazla seçenek için şifreleme belgelerine bakın.

Üstbilgiler ve Altbilgiler

IronPDF Uygulaması:

using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align:center; font-family:Arial; font-size:12px;'>
            Company Header
        </div>",
    DrawDividerLine = true,
    MaxHeight = 30
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align:center; font-family:Arial; font-size:10px;'>
            Page {page} of {total-pages}
        </div>",
    DrawDividerLine = true,
    MaxHeight = 25
};

var pdf = renderer.RenderHtmlAsPdf("<h1>Content here</h1>");
pdf.SaveAs("with_headers.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align:center; font-family:Arial; font-size:12px;'>
            Company Header
        </div>",
    DrawDividerLine = true,
    MaxHeight = 30
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align:center; font-family:Arial; font-size:10px;'>
            Page {page} of {total-pages}
        </div>",
    DrawDividerLine = true,
    MaxHeight = 25
};

var pdf = renderer.RenderHtmlAsPdf("<h1>Content here</h1>");
pdf.SaveAs("with_headers.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
    .HtmlFragment = "
        <div style='text-align:center; font-family:Arial; font-size:12px;'>
            Company Header
        </div>",
    .DrawDividerLine = True,
    .MaxHeight = 30
}

renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
    .HtmlFragment = "
        <div style='text-align:center; font-family:Arial; font-size:10px;'>
            Page {page} of {total-pages}
        </div>",
    .DrawDividerLine = True,
    .MaxHeight = 25
}

Dim pdf = renderer.RenderHtmlAsPdf("<h1>Content here</h1>")
pdf.SaveAs("with_headers.pdf")
$vbLabelText   $csharpLabel

IronPDF, dinamik sayfa numaralandırma için {page} ve {total-pages} gibi yer tutucu tokenleri destekler. Daha fazla seçenek için bkz. başlıklar ve altbilgiler belgeleri.

Kritik Geçiş Notları

Sayfa İndeksleme Değişikliği

Aspose.PDF 1 tabanlı indeksleme kullanır.IronPDF0 tabanlı indeksleme kullanır:

// Aspose.PDF - 1-based indexing
var firstPage = doc.Pages[1];  // First page
var thirdPage = doc.Pages[3];  // Third page

//IronPDF- 0-based indexing
var firstPage = pdf.Pages[0];  // First page
var thirdPage = pdf.Pages[2];  // Third page
// Aspose.PDF - 1-based indexing
var firstPage = doc.Pages[1];  // First page
var thirdPage = doc.Pages[3];  // Third page

//IronPDF- 0-based indexing
var firstPage = pdf.Pages[0];  // First page
var thirdPage = pdf.Pages[2];  // Third page
Imports Aspose.Pdf
Imports IronPdf

' Aspose.PDF - 1-based indexing
Dim firstPageAspose = doc.Pages(1)  ' First page
Dim thirdPageAspose = doc.Pages(3)  ' Third page

' IronPDF - 0-based indexing
Dim firstPageIron = pdf.Pages(0)  ' First page
Dim thirdPageIron = pdf.Pages(2)  ' Third page
$vbLabelText   $csharpLabel

Lisans Dosyası Kod Anahtarına

.lic dosya lisanslamasını kod tabanlı aktivasyon ile değiştirin:

// Aspose.PDF
var license = new Aspose.Pdf.License();
license.SetLicense("Aspose.Pdf.lic");

// IronPDF
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Or from environment variable
IronPdf.License.LicenseKey = Environment.GetEnvironmentVariable("IRONPDF_LICENSE_KEY");
// Aspose.PDF
var license = new Aspose.Pdf.License();
license.SetLicense("Aspose.Pdf.lic");

// IronPDF
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Or from environment variable
IronPdf.License.LicenseKey = Environment.GetEnvironmentVariable("IRONPDF_LICENSE_KEY");
Imports Aspose.Pdf
Imports System

Dim license As New License()
license.SetLicense("Aspose.Pdf.lic")

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
' Or from environment variable
IronPdf.License.LicenseKey = Environment.GetEnvironmentVariable("IRONPDF_LICENSE_KEY")
$vbLabelText   $csharpLabel

ASP.NET Core Entegrasyonu

IronPDF Deseni:

[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
    [HttpGet("generate")]
    public IActionResult GeneratePdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>");

        return File(pdf.BinaryData, "application/pdf", "report.pdf");
    }

    [HttpGet("generate-async")]
    public async Task<IActionResult> GeneratePdfAsync()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>");

        return File(pdf.Stream, "application/pdf", "report.pdf");
    }
}
[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
    [HttpGet("generate")]
    public IActionResult GeneratePdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>");

        return File(pdf.BinaryData, "application/pdf", "report.pdf");
    }

    [HttpGet("generate-async")]
    public async Task<IActionResult> GeneratePdfAsync()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>");

        return File(pdf.Stream, "application/pdf", "report.pdf");
    }
}
Imports Microsoft.AspNetCore.Mvc

<ApiController>
<Route("[controller]")>
Public Class PdfController
    Inherits ControllerBase

    <HttpGet("generate")>
    Public Function GeneratePdf() As IActionResult
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>")

        Return File(pdf.BinaryData, "application/pdf", "report.pdf")
    End Function

    <HttpGet("generate-async")>
    Public Async Function GeneratePdfAsync() As Task(Of IActionResult)
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = Await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>")

        Return File(pdf.Stream, "application/pdf", "report.pdf")
    End Function
End Class
$vbLabelText   $csharpLabel

Bağımlılık Enjeksiyonu Yapılandırması

// Program.cs
public void ConfigureServices(IServiceCollection services)
{
    // Set license once
    IronPdf.License.LicenseKey = Configuration["IronPdf:LicenseKey"];

    // Register renderer as scoped service
    services.AddScoped<ChromePdfRenderer>();
}
// Program.cs
public void ConfigureServices(IServiceCollection services)
{
    // Set license once
    IronPdf.License.LicenseKey = Configuration["IronPdf:LicenseKey"];

    // Register renderer as scoped service
    services.AddScoped<ChromePdfRenderer>();
}
' Program.vb
Public Sub ConfigureServices(services As IServiceCollection)
    ' Set license once
    IronPdf.License.LicenseKey = Configuration("IronPdf:LicenseKey")

    ' Register renderer as scoped service
    services.AddScoped(Of ChromePdfRenderer)()
End Sub
$vbLabelText   $csharpLabel

Performans Optimizasyonu

// 1. Reuse renderer instance
private static readonly ChromePdfRenderer SharedRenderer = new ChromePdfRenderer();

// 2. Disable unnecessary features for speed
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = false; // If not needed
renderer.RenderingOptions.WaitFor.RenderDelay(0);   // No delay
renderer.RenderingOptions.Timeout = 30000;          // 30s max

// 3. Proper disposal
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
    pdf.SaveAs("output.pdf");
}
// 1. Reuse renderer instance
private static readonly ChromePdfRenderer SharedRenderer = new ChromePdfRenderer();

// 2. Disable unnecessary features for speed
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = false; // If not needed
renderer.RenderingOptions.WaitFor.RenderDelay(0);   // No delay
renderer.RenderingOptions.Timeout = 30000;          // 30s max

// 3. Proper disposal
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
    pdf.SaveAs("output.pdf");
}
' 1. Reuse renderer instance
Private Shared ReadOnly SharedRenderer As New ChromePdfRenderer()

' 2. Disable unnecessary features for speed
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.EnableJavaScript = False ' If not needed
renderer.RenderingOptions.WaitFor.RenderDelay(0)   ' No delay
renderer.RenderingOptions.Timeout = 30000          ' 30s max

' 3. Proper disposal
Using pdf = renderer.RenderHtmlAsPdf(html)
    pdf.SaveAs("output.pdf")
End Using
$vbLabelText   $csharpLabel

Genel Göç Sorunlarını Giderme

Sorun: HtmlLoadOptions Bulunamadı

ChromePdfRenderer ile değiştirin:

// Remove this
var doc = new Document(stream, new HtmlLoadOptions());

// Use this
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlString);
// Remove this
var doc = new Document(stream, new HtmlLoadOptions());

// Use this
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlString);
Dim doc = New Document(stream, New HtmlLoadOptions())

Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlString)
$vbLabelText   $csharpLabel

Sorun: TextFragmentAbsorber Bulunamadı

Doğrudan metin çıkarımı kullanın:

// Remove this
var absorber = new TextFragmentAbsorber();
page.Accept(absorber);
string text = absorber.Text;

// Use this
var pdf = PdfDocument.FromFile("doc.pdf");
string text = pdf.ExtractAllText();
// Remove this
var absorber = new TextFragmentAbsorber();
page.Accept(absorber);
string text = absorber.Text;

// Use this
var pdf = PdfDocument.FromFile("doc.pdf");
string text = pdf.ExtractAllText();
' Remove this
Dim absorber As New TextFragmentAbsorber()
page.Accept(absorber)
Dim text As String = absorber.Text

' Use this
Dim pdf = PdfDocument.FromFile("doc.pdf")
Dim text As String = pdf.ExtractAllText()
$vbLabelText   $csharpLabel

Sorun: PdfFileEditor.Concatenate Kullanılamıyor

PdfDocument.Merge() kullanın:

// Remove this
var editor = new PdfFileEditor();
editor.Concatenate(files, output);

// Use this
var pdfs = files.Select(PdfDocument.FromFile).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs(output);
// Remove this
var editor = new PdfFileEditor();
editor.Concatenate(files, output);

// Use this
var pdfs = files.Select(PdfDocument.FromFile).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs(output);
' Remove this
Dim editor = New PdfFileEditor()
editor.Concatenate(files, output)

' Use this
Dim pdfs = files.Select(Function(file) PdfDocument.FromFile(file)).ToList()
Dim merged = PdfDocument.Merge(pdfs)
merged.SaveAs(output)
$vbLabelText   $csharpLabel

Göç Sonrası Kontrol Listesi

Kod göçünü tamamladıktan sonra, aşağıdakileri doğrulayın:

  • Aspose.PDF lisans dosyalarını (.lic) kaldırın
  • HTML rendesi kalitesini doğrulayın (CSS Grid, Flexbox artık doğru çalışmalı)
  • Büyük belgeler ve karmaşık CSS ile uç durumları test edin
  • Sayfa dizin referanslarını güncelleyin (1 tabanlıdan 0 tabanlıya)
  • Uygun ise Docker yapılandırmalarını güncelleyin
  • CI/CD boru hatlarını yeni lisans anahtarı yapılandırmasıyla güncelleyin
  • Ekibiniz için yeni desenleri belgeleyin

PDF Altyapınızı Geleceğe Hazırlama

.NET 10 ufukta ve C# 14 yeni dil özelliklerini tanıtırken, modern render yeteneklerine sahip bir PDF kütüphanesi seçmek, gelişen web standartlarıyla uyumluluğu sağlamak için önemlidir. IronPDF'nin Chromium motoru, modern tarayıcılarda çalışan aynı HTML/CSS'yi render eder, yani projeler 2025 ve 2026'ya uzadıkça PDF şablonlarınız güncel kalır—Aspose.PDF'in Flying Saucer motorunun CSS sınırlamaları olmadan.

Ek Kaynaklar


Aspose.PDF'den IronPDF'ye geçmek, PDF kod tabanınızı eski bir HTML işleme motorundan modern bir Chromium tabanlı işleme motoruna dönüştürür. MemoryStream sargıların ortadan kaldırılması, metin çıkarmanın basitleştirilmesi ve üstün CSS3 desteği, anında verimlilik kazançları sağlarken uzun vadeli lisans maliyetlerini yıllık aboneliklerden tek seferlik bir yatırıma dönüştürür.

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