IRONSOFTWAREHOME
VIDEOLAR

C#'ta HTML Dosyasını PDF'e İşlemek

Curtis Chau
Curtis Chau
Updated: 11 Ocak 2026

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ı.

AspektAspose.PDFIronPDF
Başlangıç Fiyatı (Geliştirici Küçük İşletme)$1.199/geliştirici749 $ tek sefere mahsus (Lite)
Lisans ModeliSüresiz + 1 yıl güncelleme; optional renewalSüresiz lisans
Geliştirici OEM$3.597/geliştirici (sınırsız dağıtım)Üst kademelerde dahil
DestekTüm ücretli katmanlarla birlikteDahil
Ücretsiz Değerlendirme30 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.

ÖzellikAspose.PDF (yerleşik motor)IronPDF (Chromium)
CSS3 DesteğiKısmi; modern düzen özelliklerindeki boşluklarTam CSS3
Flexbox/GridSınırlı / tutarsız (Aspose forum raporlarına göre)Tam destek
JavaScriptSınırlıTam destek (V8 üzerinden Chromium)
Web Yazı TipleriKısmiTamamlanmış
Modern HTML5KısmiTamamlanmış
İşleme KalitesiKarmaşık düzenlerde değişkenChrome 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.

MetrikAspose.PDFIronPDF
HTML İşlemeKullanıcılar, karmaşık CSS iş yüklerinde yavaşlamalar bildirdiOptimize edilmiş Chromium motoru
Büyük BelgelerBazı senaryolarda bellek artışı bildirildiVerimli akış
Linux PerformansıTopluluk forumunda yüksek CPU ve bellek artışı bildirildiKararlı

Aspose.PDF vs. IronPDF: Temel Farklar

AspektAspose.PDFIronPDF
Fiyatlandırma (giriş)$1.199/geliştirici (süresiz + 1 yıl güncellemeler)749 $ tek sefere mahsus (Lite)
HTML MotoruYerleşik motor (sınırlı modern CSS)Chromium (tam CSS3/JS)
PerformansKarmaşık CSS üzerinde forum bildirilen yavaşlamalarOptimize edilmiş
Lisans ModeliSüresiz + .lic dosyası; güncellemeler için isteğe bağlı yenilemeSüresiz + kod tabanlı anahtar
Linux DesteğiCPU/bellek sorunları hakkında forum raporlarıKararlı
Sayfa Endeksleme1-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" .
SHELL

Beklenebilecek Kırıcı Değişiklikler

Aspose.PDF DeseniDeğişiklik Gerekli
new Document() + Pages.Add()Yerine HTML render kullanın
HtmlLoadOptionsChromePdfRenderer.RenderHtmlAsPdf()
TextFragment + manuel konumlandırmaCSS tabanlı konumlandırma
PdfFileEditor.Concatenate()PdfDocument.Merge()
TextFragmentAbsorberpdf.ExtractAllText()
ImageStampHTML tabanlı filigranlar
.lic dosya lisanslamaKod tabanlı lisans anahtarı
1-tabanlı sayfa dizinleme0-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
SHELL

Veya Paket Yöneticisi Konsolu aracılığıyla:

Uninstall-Package Aspose.PDF
Install-Package IronPdf
PowerShell

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;

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");

IronPDF Uygulaması:

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
DocumentPdfDocument
HtmlLoadOptionsChromePdfRenderer
TextFragmentAbsorberPdfDocument.ExtractAllText()
PdfFileEditorPdfDocument.Merge()
TextStamp / ImageStampPdfDocument.ApplyWatermark()
LicenseIronPdf.License

Belge İşlemleri

Aspose.PDF YöntemiIronPDF Yöntemi
new Document()new PdfDocument()
new Document(path)PdfDocument.FromFile(path)
doc.Save(path)pdf.SaveAs(path)
doc.Pages.Countpdf.PageCount
doc.Pages.Delete(index)pdf.RemovePages(index)

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

Aspose.PDF YöntemiIronPDF 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");
    }
}

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");
    }
}

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");
    }
}

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");
    }
}

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");
    }
}

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");
    }
}

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);

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);

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");

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");

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");

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");

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");

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

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");

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");
    }
}

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>();
}

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");
}

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);

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();

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);

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

Lütfen dikkate alın: Aspose kendi sahibinin tescilli markasıdır. Bu site Aspose Pty Ltd ile ilişkilendirilmemiştir, onaylanmamıştır veya sponsor edilmemiştir. Tüm ürün adları, logolar ve markalar ilgili sahiplerinin mülküdür. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.
Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez