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.
Neden Aspose.PDF'den Ayrılmalısınız?
Aspose.PDF kurumsal düzeyde işlevsellik sağlasa da, birçok faktör geliştirici ekiplerini PDF oluşturma ihtiyaçları için modern alternatifler aramaya teşvik eder.
Maliyet Karşılaştırması
Aspose.PDF, bir yıllık güncellemeleri içeren süresiz lisans modeli kullanır; opsiyonel yenileme güncelleme penceresini genişletir. Kaynak: Aspose fiyatlandırma sayfası.
| Aspekt | Aspose.PDF | IronPDF |
|---|---|---|
| Başlangıç Fiyatı (Geliştirici Küçük İşletme) | $1.199/geliştirici | 749 $ tek sefere mahsus (Lite) |
| Lisans Modeli | Süresiz + 1 yıl güncelleme; optional renewal | Süresiz lisans |
| Geliştirici OEM | $3.597/geliştirici (sınırsız dağıtım) | Üst kademelerde dahil |
| Destek | Tüm ücretli katmanlarla birlikte | Dahil |
| Ücretsiz Değerlendirme | 30 günlük geçici lisans (aksi takdirde filigran + boyut sınırları) | Geliştirme için ücretsiz |
HTML Render Motoru Karşılaştırması
Aspose.PDF, yerleşik bir HTML/CSS işleme motoru (Chromium değil) kullanır; Aspose forumundaki kullanıcı raporları, Flexbox ve CSS Grid gibi modern CSS düzen özelliklerindeki boşlukları not eder. IronPDF, HTML-to-PDF işleme için gömülü Chromium yapısını kullanır.
| Özellik | Aspose.PDF (yerleşik motor) | IronPDF (Chromium) |
|---|---|---|
| CSS3 Desteği | Kısmi; modern düzen özelliklerindeki boşluklar | Tam CSS3 |
| Flexbox/Grid | Sınırlı / tutarsız (Aspose forum raporlarına göre) | Tam destek |
| JavaScript | Sınırlı | Tam destek (V8 üzerinden Chromium) |
| Web Yazı Tipleri | Kısmi | Tamamlanmış |
| Modern HTML5 | Kısmi | Tamamlanmış |
| İşleme Kalitesi | Karmaşık düzenlerde değişken | Chrome eşdeğer |
Performans Özellikleri/h3>
Kullanıcılar, Aspose destek forumunda performans farklılıkları bildirmiştir. Aşağıdaki rakamlar, topluluk tarafından rapor edilen senaryoları yansıtır — kendi iş yükünüze karşı doğrulayın.
| Metrik | Aspose.PDF | IronPDF |
|---|---|---|
| HTML İşleme | Kullanıcılar, karmaşık CSS iş yüklerinde yavaşlamalar bildirdi | Optimize edilmiş Chromium motoru |
| Büyük Belgeler | Bazı senaryolarda bellek artışı bildirildi | Verimli akış |
| Linux Performansı | Topluluk forumunda yüksek CPU ve bellek artışı bildirildi | Kararlı |
Aspose.PDF vs. IronPDF: Temel Farklar
| Aspekt | Aspose.PDF | IronPDF |
|---|---|---|
| Fiyatlandırma (giriş) | $1.199/geliştirici (süresiz + 1 yıl güncellemeler) | 749 $ tek sefere mahsus (Lite) |
| HTML Motoru | Yerleşik motor (sınırlı modern CSS) | Chromium (tam CSS3/JS) |
| Performans | Karmaşık CSS üzerinde forum bildirilen yavaşlamalar | Optimize edilmiş |
| Lisans Modeli | Süresiz + .lic dosyası; güncellemeler için isteğe bağlı yenileme |
Süresiz + kod tabanlı anahtar |
| Linux Desteği | CPU/bellek sorunları hakkında forum raporları | Kararlı |
| Sayfa Endeksleme | 1-tabanlı (Pages[1]) |
0-tabanlı (Pages[0]) |
Migration'a Ön Hazırlık
Ön Koşullar
Ortamınızın bu gereksinimleri karşıladığından emin olun:
- .NET Framework 4.6.2+ or .NET Core 3.1 / .NET 5-9
- Visual Studio 2019+ veya C# eklentisi ile VS Code
- NuGet Package Manager erişimi -IronPDF lisans anahtarı (ücretsiz deneme sürümü ironpdf.com adresinde mevcut)
Aspose.PDF Kullanım Denetimi
Tüm Aspose.PDF referanslarını bulmak için çözüm dizininizde bu komutları ç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" .
Beklenebilecek Kırıcı Değişiklikler
| Aspose.PDF Deseni | Değişiklik Gerekli |
|---|---|
new Document() + Pages.Add() |
Yerine HTML render 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 lisanslama |
Kod tabanlı lisans anahtarı |
| 1-tabanlı sayfa dizinleme | 0-tabanlı sayfa dizinleme |
Adım Adım Geçiş Süreci
1. Adım: NuGet Paketlerini Güncelleyin
Aspose.PDF'i kaldırın ve IronPDF'i yükleyin:
# 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
Veya Paket Yöneticisi Konsolu aracılığıyla:
Uninstall-Package Aspose.PDF
Install-Package IronPdf
Adım 2: Ad Alanı Referanslarını Güncelleyin
Aspose.PDF ad alanlarınıIronPDF ile 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
Adım 3: Lisans Yapılandırmasını Güncelleyin
Aspose.PDF, .lic dosya lisanslaması kullanır. IronPDF, basit 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")
IronPDF Uygulaması:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Tam API Geçiş Referansı
Temel Sınıf Eşlemeleri
| 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.RemovePages(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 Göç Örnekleri
HTML Dizgisini PDF'e Dönüştürme
En yaygın Aspose.PDF işlemi, temel farkı gösterir—Aspose.PDF, HTML'yi bir MemoryStream içine sarmayı gerektirirken,IronPDF dizeleri doğrudan 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
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
IronPDF, MemoryStream sarıcısını tamamen ortadan kaldırıyor—daha temiz, daha sezgisel bir API.
HTML Dosyası PDF'ye
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
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
Birden Fazla PDF'yi Birleştirme
Aspose.PDF, sayfalar arasında manuel 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
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
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)
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)
IronPDF, birden fazla adımdan bir method çağrısına metin çıkarmayı sadeleş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")
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")
IronPDF, tam stil kontrolü sağlayan, tanıdık web teknolojileri aracılığıyla HTML/CSS tabanlı filigran kullanır.
Şifre Koruma
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")
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")
IronPDF, izinler üzerinde güçlü tipli özellikler aracılığıyla ayrıntılı kontrol sağlar. Daha fazla seçenek için şifreleme belgelerine bakın.
Başlıklar 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")
IronPDF dinamik sayfa numaralandırması için {page} ve {total-pages} gibi yer tutucu belirteçleri destekler. Daha fazla seçenek için başlıklar ve altbilgiler belgelerine bakın.
Kritik Taşıma Notları
Sayfa Dizinleme Değişikliği
Aspose.PDF 1-tabanlı dizinleme kullanır.IronPDF 0-tabanlı dizinleme 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
Lisans Dosyasından Kod Anahtarına Geçiş
.lic dosya lisanslamayı 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")
ASP.NET Core Integration
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.BinaryData, "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.BinaryData, "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.BinaryData, "application/pdf", "report.pdf")
End Function
End Class
Dependency Injection 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
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
Yaygın 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)
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()
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)
Taşınma Sonrası Kontrollistesi
Kod taşımasını tamamladıktan sonra, aşağıdakileri doğrulayın:
- Aspose.PDF lisans dosyalarını (.lic) kaldırın
- HTML render kalitesini doğrulayın (CSS Grid, Flexbox artık doğru çalışmalı)
- Büyük belgelerle ve karmaşık CSS ile kenar durumlarını test edin
- Sayfa dizinleme referanslarını güncelleyin (1-tabanlıdan 0-tabanlıya)
- Docker yapılandırmalarını güncelleyin mümkünse
- Yeni lisans anahtarı yapılandırması ile CI/CD hatlarını güncelleyin
- Ekibiniz için yeni kalıpları belgeleyin
Ek Kaynaklar
Aspose.PDF'den IronPDF'ye geçiş, kod tabanınızı yerleşik bir HTML motorundan Chromium tabanlı işleme taşır. MemoryStream sarmalayıcılarının ortadan kaldırılması, basitleştirilmiş metin çıkarımı ve daha geniş CSS3 desteği anında verimlilik sağlar ve IronPDF'in kod tabanlı anahtarı .lic dosya işlerini değiştiri

