IRONSOFTWAREHOME
VIDEOLAR

C#'ta PDF'lerden Gömülü Metin ve Görüntüleri Çıkarmak

Curtis Chau
Curtis Chau
Updated: 19 Temmuz 2026

Api2pdf, PDF oluşturmak için bulut tabanlı bir hizmet sunar, ancak hassas belgeleri harici sunuculara göndermek, güvenlik riskleri, uyumluluk sorunları ve zamanla biriken sürekli maliyetlere yol açabilir. Bu rehber, Api2pdf'den IronPDF'e tamamen kendi altyapınızda belge işleme sağlayan, veri aktarım endişelerini ortadan kaldırarak dönüşüm başına maliyetleri tek seferlik bir yatırım haline dönüştüren yerel bir .NET PDF kütüphanesine geçiş yolunu ayrıntılı olarak sunar.

Neden Api2pdf'den Taşınmayı Düşünmelisiniz?

Api2pdf, bulut tabanlı PDF oluşturma kolaylığı sağlarken, bir dizi faktör geliştirme ekiplerini PDF oluşturma ihtiyaçları için yerel alternatifler aramaya teşvik eder.

Güvenlik ve Uyumluluk Endişeleri

Api2pdf, hassas HTML ve belgelerinizin işlenmesi için üçüncü taraf sunuculara gönderildiği bulut tabanlı bir hizmet olarak çalışır. Bu, düzenlenmiş verileri işleyen kuruluşlar için önemli endişeler yaratır.

RiskApi2pdfIronPDF
Veri İletimiTüm içerik harici sunuculara gönderilirAltyapınızda yerel olarak işler
GDPR UyumluluğuVeri yargı yetkilerini geçerVeri asla ortamınızı terk etmez
HIPAA UyumluluğuPHI harici olarak aktarılırPHI sistemlerinizde kalır
SOC 2Üçüncü taraf bağımlılığıVeri işleme üzerinde tam kontrol
PCI DSSKart verileri potansiyel olarak açığa çıkarDışa aktarım yok

Zamanla Biriken Maliyetler

Api2pdf, metreli kullanım (bant genişliği ve hesaplama saniyesi) süresiz $1/ay baz fiyat artı metrelendirilmiş kullanım ücreti olarak ücretlendirilirken,IronPDF bir kez süresiz lisans sunar. Güncel rakamları api2pdf.com/pricing adresinden doğrulayın:

BileşenApi2pdfIronPDF
Taban$1/ayTek seferlik lisans
Bant genişliği$0,001 MB başınageçerli değil (yerel)
Hesapla$0,00019551 saniye başınageçerli değil (yerel)
Hacim ölçeklendirmeKullanım ve dosya büyüklüğüyle orantılıFlat (Lite ~$999, Plus ~$1,499, Professional ~$2,399)

Daha ağır iş yükleri (büyük dosyalar, JS yoğun sayfalar, uzun rendere süreleri) api2pdf faturasının yukarı kaymasına neden olur;IronPDF maliyeti lisanslandıktan sonra sabittir.

Performans ve Kullanılabilirlik

Api2pdf, her PDF oluşturma isteğine 2-5 saniye ek gecikme ekleyen ağ döngüleri gerektirir. IronPDF, yerel olarak 100-500 milisaniye içinde işler. Ek olarak,IronPDF tamamen çevrimdışı ve izole ortamlarda çalışır—dış hizmet kullanılabilirliğine güvenemeyen uygulamalar için kritik.

##Api2pdfvs. IronPDF: Temel Farklar

AspektApi2pdfIronPDF
Veri İşlemeÜçüncü taraf bulut sunucularına gönderilirAltyapınızda yerel olarak işlenir
Fiyatlandırma$1/ay baz + hesaplı ($0,001/MB bant genişliği, $0,00019551/sn hesapla)Tek seferlik süresiz lisans
Gecikme2-5 saniye (ağ gidiş-geliş)100-500ms (yerel işleme)
ÇevrimdışıMevcut değilTamamen çevrimdışı çalışır
KurulumAPI anahtarı + HTTP istemcisiSimple NuGet package
UyumlulukGDPR/HIPAA endişeleri (veri ağ dışına çıkar)Tam uyumluluk kontrolü

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

1. Adım: NuGet Paketlerini Güncelleyin

Api2pdf paketini kaldırın ve IronPDF'i yükleyin:

# Remove Api2pdf
dotnet remove package Api2Pdf

# Install IronPDF
dotnet add package IronPdf
SHELL

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

Uninstall-Package Api2Pdf
Install-Package IronPdf
PowerShell

Adım 2: Ad Alanı Referanslarını Güncelleyin

Api2pdf ad alanlarınıIronPDF ile değiştirin:

// Remove these
using Api2Pdf;

// Add these
using IronPdf;
using IronPdf.Rendering;

Adım 3: Lisans Anahtarını Yapılandırın

Uygulama başlatıldığında IronPDF lisans anahtarını ayarlayın:

// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";

// Or configure via appsettings.json:
// { "IronPdf.LicenseKey": "YOUR-IRONPDF-LICENSE-KEY" }

Adım 4: API Anahtarı Yapılandırmasını Kaldırın

IronPDF yerel olarak çalışır ve API anahtarları gerektirmez:

// Remove thisApi2pdfpattern
var client = new Api2Pdf("API_KEY");

// Just create the renderer directly
var renderer = new ChromePdfRenderer();
C#

Tam API Geçiş Referansı

Temel Sınıf Eşlemeleri

Api2pdf SınıfıIronPDF Eşdeğeri
Api2Pdf (istemci)ChromePdfRenderer
Api2PdfResultPdfDocument
ChromeHtmlToPdfOptionsChromePdfRenderOptions

Metot Haritalama

Api2pdf YöntemiIronPDF Yöntemi
client.Chrome.HtmlToPdfAsync(new ChromeHtmlToPdfRequest { Html = html })renderer.RenderHtmlAsPdf(html)
client.Chrome.UrlToPdfAsync(new ChromeUrlToPdfRequest { Url = url })renderer.RenderUrlAsPdf(url)
result.FileUrl (indirme bağlantısı)pdf.SaveAs(path)
result.GetFileBytes()pdf.BinaryData
client.PdfSharp.MergePdfs(new PdfMergeRequest { Urls = urls })PdfDocument.Merge(pdfs)
client.PdfSharp.SetPassword(new PdfPasswordRequest { Url, OwnerPassword })pdf.SecuritySettings.OwnerPassword

İşleme Seçenekleri Eşleşmesi

Api2pdf SeçeneğiIronPDF Seçeneği
Landscape = trueRenderingOptions.PaperOrientation = Landscape
PreferCSSPageSize = true / FormatRenderingOptions.PaperSize = PdfPaperSize.A4
PrintBackground = trueRenderingOptions.PrintHtmlBackgrounds = true
MarginTop, vb.RenderingOptions.MarginTop, vb.
Delay = 5000RenderingOptions.WaitFor.RenderDelay(5000)

Kod Göç Örnekleri

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

En yaygınApi2pdfişlemi, bulut API çağrılarından yerel işleme temel değişimi gösterir.

Api2pdf Uygulaması:

// NuGet: Install-Package Api2Pdf
using System;
using System.Threading.Tasks;
using Api2Pdf;

class Program
{
    static async Task Main(string[] args)
    {
        var client = new Api2Pdf("your-api-key");
        var result = await client.Chrome.HtmlToPdfAsync(new ChromeHtmlToPdfRequest
        {
            Html = "<h1>Hello World</h1>"
        });
        Console.WriteLine(result.FileUrl);
    }
}

IronPDF Uygulaması:

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

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}

IronPDF, ağ döngüsünü, API anahtarı yönetimini ve Api2pdf'in URL tabanlı yanıt deseninin gerektirdiği ayrı indirme adımını ortadan kaldırır.

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

Api2pdf Uygulaması:

// NuGet: Install-Package Api2Pdf
using System;
using System.Threading.Tasks;
using Api2Pdf;

class Program
{
    static async Task Main(string[] args)
    {
        var client = new Api2Pdf("your-api-key");
        var result = await client.Chrome.UrlToPdfAsync(new ChromeUrlToPdfRequest
        {
            Url = "https://www.example.com"
        });
        Console.WriteLine(result.FileUrl);
    }
}

IronPDF Uygulaması:

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

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("PDF created from URL successfully");
    }
}

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

Api2pdf Uygulaması:

// NuGet: Install-Package Api2Pdf
using System;
using System.IO;
using System.Threading.Tasks;
using Api2Pdf;

class Program
{
    static async Task Main(string[] args)
    {
        var client = new Api2Pdf("your-api-key");
        string html = File.ReadAllText("input.html");
        var result = await client.Chrome.HtmlToPdfAsync(new ChromeHtmlToPdfRequest
        {
            Html = html,
            Options = new ChromeHtmlToPdfOptions
            {
                Landscape = true,
                PrintBackground = true
            }
        });
        Console.WriteLine(result.FileUrl);
    }
}

IronPDF Uygulaması:

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

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
        string html = File.ReadAllText("input.html");
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created with options successfully");
    }
}

IronPDF, işleme seçeneklerini doğrudan işleyici nesnesinde yapılandırır, bunları her bir API çağrısına ayrı bir seçenekler parametresi olarak iletmek yerine.

Birden Fazla PDF'yi Birleştirme

Api2pdf Uygulaması:

using Api2Pdf;

var client = new Api2Pdf("YOUR_API_KEY");

var pdfUrls = new List<string>
{
    "https://example.com/pdf1.pdf",
    "https://example.com/pdf2.pdf",
    "https://example.com/pdf3.pdf"
};

var request = new PdfMergeRequest { Urls = pdfUrls };
var result = await client.PdfSharp.MergePdfsAsync(request);

if (result.Success)
{
    // Download merged PDF from result.FileUrl
}

IronPDF Uygulaması:

using IronPdf;

// Load PDFs from files
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var pdf3 = PdfDocument.FromFile("document3.pdf");

// Merge all PDFs
var merged = PdfDocument.Merge(pdf1, pdf2, pdf3);
merged.SaveAs("merged.pdf");

IronPDF, URL tabanlı iş akışını ortadan kaldırarak, belgeleri doğrudan kabul eden statik Merge yöntemine sahiptir.

Şifre Koruması Altındaki PDF'ler

Api2pdf Uygulaması:

using Api2Pdf;

var client = new Api2Pdf("YOUR_API_KEY");

// Generate PDF first
var pdfResult = await client.Chrome.HtmlToPdfAsync(new ChromeHtmlToPdfRequest
{
    Html = "<h1>Confidential</h1>"
});

// Then add password protection in a second round-trip
var protectedResult = await client.PdfSharp.SetPasswordAsync(new PdfPasswordRequest
{
    Url = pdfResult.FileUrl,
    OwnerPassword = "secretpassword"
});

IronPDF Uygulaması:

using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");

// Set security in one step
pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;

pdf.SaveAs("protected.pdf");

IronPDF, SecuritySettings özelliği aracılığıyla PDF izinleri üzerinde ayrıntılı kontrol sağlar.

Başlıklar ve Altbilgiler

Api2pdf Uygulaması:

using Api2Pdf;

var client = new Api2Pdf("YOUR_API_KEY");

var result = await client.Chrome.HtmlToPdfAsync(new ChromeHtmlToPdfRequest
{
    Html = html,
    Options = new ChromeHtmlToPdfOptions
    {
        DisplayHeaderFooter = true,
        HeaderTemplate = "<div style='font-size:10px'>Company Header</div>",
        FooterTemplate = "<div style='font-size:10px'>Page <span class='pageNumber'></span></div>"
    }
});

IronPDF Uygulaması:

using IronPdf;

var renderer = new ChromePdfRenderer();

// HTML headers and footers with full styling
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='font-size:10px; text-align:center;'>Company Header</div>",
    DrawDividerLine = true
};

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

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("with-headers.pdf");

IronPDF, dinamik sayfa numaralandırma 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.

ASP.NET Core Integration

Api2pdf'in asenkron HTTP deseni, IronPDF'in doğrudan PDF oluşturmasından önemli ölçüde farklıdır.

Api2pdf Deseni:

[ApiController]
public class PdfController : ControllerBase
{
    private readonly Api2Pdf _client;

    public PdfController()
    {
        _client = new Api2Pdf("YOUR_API_KEY");
    }

    [HttpGet("generate")]
    public async Task<IActionResult> GeneratePdf()
    {
        var result = await _client.Chrome.HtmlToPdfAsync(new ChromeHtmlToPdfRequest
        {
            Html = "<h1>Report</h1>"
        });

        if (!result.Success)
            return BadRequest(result.Error);

        // Redirect to download URL
        return Redirect(result.FileUrl);
    }
}

IronPDF Deseni:

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

        // Return PDF directly - no download step needed
        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");
    }
}

IronPDF, yönlendirme yoluyla indirme desenini ortadan kaldırarak, PDF'yi doğrudan BinaryData veya Stream üzerinden döndürür.

Dependency Injection Yapılandırması

// Program.cs or Startup.cs
public void ConfigureServices(IServiceCollection services)
{
    services.AddScoped<IPdfService, IronPdfService>();
}

// IPdfService.cs
public interface IPdfService
{
    PdfDocument GenerateFromHtml(string html);
    Task<PdfDocument> GenerateFromHtmlAsync(string html);
}

// IronPdfService.cs
public class IronPdfService : IPdfService
{
    private readonly ChromePdfRenderer _renderer;

    public IronPdfService()
    {
        _renderer = new ChromePdfRenderer();
        _renderer.RenderingOptions.PrintHtmlBackgrounds = true;
        _renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
    }

    public PdfDocument GenerateFromHtml(string html) =>
        _renderer.RenderHtmlAsPdf(html);

    public Task<PdfDocument> GenerateFromHtmlAsync(string html) =>
        _renderer.RenderHtmlAsPdfAsync(html);
}

Hata Yönetimi Geçişi

Api2pdf, yanıt nesnesi kontrollerini kullanır. IronPDF, standart .NET istisnalarını kullanır.

Api2pdf Deseni:

var result = await client.Chrome.HtmlToPdfAsync(new ChromeHtmlToPdfRequest { Html = html });

if (!result.Success)
{
    Console.WriteLine($"Error: {result.Error}");
    return;
}

IronPDF Deseni:

try
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("output.pdf");
}
catch (IronPdf.Exceptions.IronPdfLicenseException ex)
{
    Console.WriteLine($"License error: {ex.Message}");
}
catch (IronPdf.Exceptions.IronPdfRenderingException ex)
{
    Console.WriteLine($"Rendering error: {ex.Message}");
}
catch (Exception ex)
{
    Console.WriteLine($"Error: {ex.Message}");
}

Performans Karşılaştırması

MetrikApi2pdfIronPDF
Basit HTML2-5 saniye (ağ)100-500ms (yerel)
Kompleks sayfa5-10 saniye500ms-2s
100'lük Toplu İşlemDakikalar (oran limitleri)Saniyeler (paralel)
ÇevrimdışıMevcut değilTamamen çalışır
Soğuk başlatmaNone~2s (ilk işleme)

Performans Optimizasyonu İpuçları

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

public PdfDocument GeneratePdf(string html)
{
    return SharedRenderer.RenderHtmlAsPdf(html);
}

// 2. Parallel generation
var tasks = htmlDocs.Select(html =>
    Task.Run(() => SharedRenderer.RenderHtmlAsPdf(html)));
var results = await Task.WhenAll(tasks);

// 3. Disable unnecessary features for speed
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = false; // If not needed
renderer.RenderingOptions.WaitFor.RenderDelay(0);   // No delay

Yaygın Göç Sorunlarını Giderme

Sorun: PDF,Api2pdfÇıktısından Farklı Görünüyor

Api2pdf'in Başsız Chrome ayarlarını eşleştirin:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.ViewPortWidth = 1280;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(1000);

Sorun: Harici Kaynaklar Yüklenemiyor

Kaynak yükleme zaman aşımı yapılandırmasını ayarlayın:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.WaitFor.AllFontsLoaded(timeout: 10000);
renderer.RenderingOptions.WaitFor.NetworkIdle(timeout: 10000);

// Or use base URL for relative paths
var pdf = renderer.RenderHtmlAsPdf(html, baseUrl: "https://example.com/");

Sorun: Büyük PDF Dosya Boyutları

Oluşturma sonrasında resimleri sıkıştırın:

renderer.RenderingOptions.ImageQuality = 80;

// Or compress after generation
pdf.CompressImages(quality: 75);
pdf.SaveAs("compressed.pdf");

Taşınma Sonrası Kontrollistesi

Kod taşımasını tamamladıktan sonra, aşağıdakileri doğrulayın:

  • PDF çıktı kalitesinin beklentilere uygun olmasını doğrulayın
  • Tüm kenar durumlarını test edin (büyük belgeler, özel karakterler)
  • Performans metriklerini doğrulayın (önemli bir iyileşme görmelisiniz)
  • Docker yapılandırmalarını güncelleyin mümkünse -Api2pdfportal hesabını ve API anahtarlarını kaldırın
  • İzlemeyi güncelleyin (artık API gecikme izleme gerekmez)
  • Ekibiniz için yeni kalıpları belgeleyin
  • CI/CD yapılarını güncelleyin

Ek Kaynaklar


Api2pdf'den IronPDF'e geçiş, PDF üretiminizi buluta bağımlı, dönüşüm başına maliyet modelinden yerel, tek seferlik yatırımlı hale dönüştürür. Hassas belgeleriniz kendi altyapınızda kalır, gecikme saniyelerden milisaniyelere düşer ve bu kritik uygulama yeteneği için satıcı bağımlılığını ortadan kaldırırsınız.

Lütfen dikkate alın: API2PDF ve PDFSharp, ilgili sahiplerinin tescilli ticari markalarıdır. Bu site, Api2Pdf veya empira Software GmbH ile bağlantılı değildir, onaylanmamış veya desteklenmemiştir. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. 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