IRONSOFTWAREHOME
VIDEOLAR

C#'ta Görselleri PDF'ye Dönüştürme

Curtis Chau
Curtis Chau
Updated: 18 Mayıs 2026

CraftMyPDF'den IronPDF'ye Neden Geçilmeli?

CraftMyPDF gibi bulut tabanlı PDF API'leri, birçok prodüksiyon ortamı için uygun olmayan temel sorunlar ortaya çıkarır.

Bulut Tabanlı PDF API'lerinin Sorunu

  1. Veriniz Sisteminizden Ayrılır: Her HTML şablonu ve JSON veri yükü CraftMyPDF'nin sunucularına iletilir. Faturalar, sözleşmeler, tıbbi kayıtlar veya herhangi bir hassas iş verisi için bu, HIPAA, GDPR ve SOC2 uyumluluk riskleri oluşturur.

  2. Ağ Gecikmesi: Her PDF oluşturma işlemi, bir ağ gidiş-dönüşü ve kuyruklandırma ve işleme süresi (genellikle saniyeler) içerir. IronPDF, yerel olarak milisaniye içinde oluşturur.

  3. PDF Başına Maliyetler Artar: Krediye dayalı fiyatlandırma hacimle birlikte birikir — yüksek geçiş yükleri, bir kereye mahsus süresiz lisansa kıyasla önemli sürekli maliyetler oluşturur.

  4. Baskı İçi̇n Opti̇mi̇ze Edi̇len Çıktı: Bulut API'leri genellikle arka planları azaltarak ve renkleri basit hale getirerek "mürekkep" tasarrufu sağlar. Sonuç hiçbir zaman ekranınızdaki HTML gibi görünmez.

  5. Şablon Bağlılığı: CraftMyPDF, kendi tescilli sürükle ve bırak editörünü gerektirir. Standart HTML/CSS özgürce kullanılamaz.

Mimari̇ Karşılaştırma

AspektCraftMyPDFIronPDF
Veri KonumuBulut (veriniz sisteminizden ayrılır)Yerel (veri asla ayrılmaz)
GecikmeAğ gidiş-dönüşü + işleme (genellikle saniyeler)Milisaniye
FiyatlandırmaKrediye dayalı abonelikTek seferlik süresiz lisans
Şablon SistemiTescilli sürükle-bırak yalnızcaHerhangi bir HTML/CSS/JavaScript
Çıktı KalitesiBaskı için optimize edilmiştirPiksellikle aynı ekran renderı
Çevrimdışı ÇalışırHayır (internet gerektirir)Evet
UyumlulukVeri organizasyondan çıkarSOC2/HIPAA dostu

Özellik Karşılaştırması

ÖzellikCraftMyPDFIronPDF
HTML'den PDF'yeAPI şablonları aracılığıyla✅Yerel
URL'yi PDF'ye çevirAPI ile✅Yerel
Özel şablonlarYalnızca tescilli editörHerhangi bir HTML ✅
CSS3 desteğiSınırlıTam ✅
JavaScript işlemeSınırlıTam ✅
PDF'leri Birleştir/BölAPI ile✅Yerel
FiligranlarAPI ile✅Yerel
Çevrimdışı çalışır
Kendi kendine barındırılan

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)

###CraftMyPDFKullanımı Denetle

TümCraftMyPDFreferanslarını belirlemek için bu komutları çözüm dizininde çalıştırın:

# Find allCraftMyPDFusages in your codebase
grep -r "CraftMyPdf\|craftmypdf\|api.craftmypdf.com" --include="*.cs" .
grep -r "X-API-KEY" --include="*.cs" .

# Find API key references
grep -r "your-api-key\|template-id\|template_id" --include="*.cs" .

# Find NuGet package references
grep -r "CraftMyPdf\|RestSharp" --include="*.csproj" .
SHELL

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

DeğişimCraftMyPDFIronPDFEtki
MimariBulut REST APIYerel .NET kütüphanesiHTTP çağrılarını kaldır
ŞablonlarTescilli editörStandart HTMLŞablonları HTML'ye dönüştür
API AnahtarıHer çağrı için gerekliBaşlangıçta lisansAPI anahtarı yönetimini kaldır
Asenkron desenGerekli (HTTP)OpsiyonelTercih edilirse await kaldır
Hata yönetimiHTTP durumu kodlarıIstisnalartry/catch kalıplarını değiştirin
Veri bağlamaJSON şablonlarDizi iç içe dizimiVeri bağlamayı basitleştir

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

1. Adım: NuGet Paketlerini Güncelleyin

HTTP istemci kütüphanesini kaldirin ve IronPDF'i yükleyin:

# Remove RestSharp HTTP client
dotnet remove package RestSharp

# Install IronPDF
dotnet add package IronPdf
SHELL

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

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

// Remove these
using RestSharp;
using System.IO;

// Add this
using IronPdf;

Adım 3: Lisansı Yapılandırın (Başlangıçta Bir Defa)

Her istek için API anahtar başlıklarını tek bir lisans yapılandırması ile değiştirin:

// Add at application startup (Program.cs or Global.asax)
// This replaces all X-API-KEY headers
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Tam API Geçiş Referansı

API Uç Nokta Eşlemesi

CraftMyPDFIronPDF
POST /v1/createrenderer.RenderHtmlAsPdf(html)
X-API-KEY başlıkLicense.LicenseKey = "..."
template_idStandart HTML dizesi
{%name%} yer tutucular$"{name}" C# ara ekleme
POST /v1/mergePdfDocument.Merge(pdfs)
POST /v1/add-watermarkpdf.ApplyWatermark(html)
Web kancası geri çağrılarıGerekli değil
Hız sınırlamaUygulanamaz

Yapılandırma Eşleştirmesi

CraftMyPDFSeçeneğiIronPDF Eşdeğeri
template_idHTML dizgisi
data JSONC# ara dil
page_size: "A4"PaperSize = PdfPaperSize.A4
orientation: "landscape"PaperOrientation = Landscape
margin_top: 20MarginTop = 20
headerHtmlHeader
footerHtmlFooter

Kod Göç Örnekleri

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

En yaygın işlem, bulut API'sinden yerel işleme temel mimari değişikliği göstermektedir.

CraftMyPDF Uygulaması:

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

class Program
{
    static void Main()
    {
        var client = new RestClient("https://api.craftmypdf.com/v1/create");
        var request = new RestRequest(Method.POST);
        request.AddHeader("X-API-KEY", "your-api-key");
        request.AddJsonBody(new
        {
            template_id = "your-template-id",
            data = new
            {
                html = "<h1>Hello World</h1><p>This is a PDF from HTML</p>"
            }
        });
        
        var response = client.Execute(request);
        File.WriteAllBytes("output.pdf", response.RawBytes);
    }
}

IronPDF Uygulaması:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>");
        pdf.SaveAs("output.pdf");
    }
}

IronPDF, RestClient kurulumunu, API anahtar başlıklarını, şablon kimliklerini ve HTTP yanıt yönetimini ortadan kaldırır—15 satırlık bulut işlemini 4 satır yerel koda indirir. Daha fazla seçenek için, HTML'den PDF'e dokümantasyona bakın.

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

CraftMyPDF Uygulaması:

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

class Program
{
    static void Main()
    {
        var client = new RestClient("https://api.craftmypdf.com/v1/create");
        var request = new RestRequest(Method.POST);
        request.AddHeader("X-API-KEY", "your-api-key");
        request.AddJsonBody(new
        {
            template_id = "your-template-id",
            data = new
            {
                url = "https://example.com"
            },
            export_type = "file" // "file" returns binary PDF; "json" returns a CDN URL
        });

        var response = client.Execute(request);
        File.WriteAllBytes("webpage.pdf", response.RawBytes);
    }
}

IronPDF Uygulaması:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}

IronPDF'nin RenderUrlAsPdf yöntemi, JavaScript ile oluşturulan içerik dahil olmak üzere tüm web sayfasını yakalar. Daha fazla seçenek için, URL'den PDF'e dokümantas bakın.

Başlıklar ve Altbilgiler

CraftMyPDF Uygulaması:

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

class Program
{
    static void Main()
    {
        var client = new RestClient("https://api.craftmypdf.com/v1/create");
        var request = new RestRequest(Method.POST);
        request.AddHeader("X-API-KEY", "your-api-key");
        request.AddJsonBody(new
        {
            template_id = "your-template-id",
            data = new
            {
                html = "<h1>Document Content</h1>",
                header = "<div>Page Header</div>",
                footer = "<div>Page {page} of {total_pages}</div>"
            }
        });
        
        var response = client.Execute(request);
        File.WriteAllBytes("document.pdf", response.RawBytes);
    }
}

IronPDF Uygulaması:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Page Header"
        };
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page} of {total-pages}"
        };
        
        var pdf = renderer.RenderHtmlAsPdf("<h1>Document Content</h1>");
        pdf.SaveAs("document.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.

Şablon Değişken Dönüşümü

CraftMyPDF, C# dize ara diline dönüştürülmesi gereken tescilli şablon yer tutucularını kullanır:

CraftMyPDF Deseni:

//CraftMyPDFtemplate variables
request.AddJsonBody(new
{
    template_id = "invoice-template",
    data = new
    {
        customer = "John Doe",
        amount = "$1,000",
        items = invoiceItems
    }
});

IronPDF Deseni:

// C# string interpolation
var html = $@"
<html>
<body>
    <h1>Invoice</h1>
    <p>Customer: {customerName}</p>
    <p>Amount: {amount}</p>
    {GenerateItemsTable(invoiceItems)}
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(html);

Kritik Taşıma Notları

HTTP Kodlarını Kaldır

En önemli değişiklik, ağ bağımlılıklarını ortadan kaldırmaktır.IronPDF yerel olarak çalışır—RestClient yok, API çağrıları yok, yanıt yönetimi yok:

//CraftMyPDF- HTTP required
var client = new RestClient("https://api.craftmypdf.com/v1/create");
var request = new RestRequest(Method.POST);
request.AddHeader("X-API-KEY", "your-api-key");
var response = await client.ExecuteAsync(request);

//IronPDF- no HTTP
var pdf = renderer.RenderHtmlAsPdf(html);

Hız Sınırlandırma Kodunu Kaldır

CraftMyPDF, yeniden deneme mantığı gerektiren API hız sınırlarını uygular. IronPDF'nin sınırı yoktur:

//CraftMyPDF- needed to avoid 429 errors
await Task.Delay(100);
if (response.StatusCode == TooManyRequests) { /* retry */ }

//IronPDF- no limits, just generate
var pdf = renderer.RenderHtmlAsPdf(html);
// Remove all rate limit code!

Webhook İşlemcilerini Kaldır

CraftMyPDF, PDF tamamlama için asenkron web kancalarını kullanır.IronPDF senkron çalışır—PDF hemen hazırdır:

//CraftMyPDF- webhook callback required
// POST with webhook_url, wait for callback

//IronPDF- PDF ready immediately
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// No callback needed!

Varsayılan Olarak Senkron

Sadece HTTP çağrıları için gerekiyorsa asenkron/await kalıplarını kaldırın:

//CraftMyPDF- async required
var response = await client.ExecuteAsync(request);

//IronPDF- sync by default (async available if needed)
var pdf = renderer.RenderHtmlAsPdf(html);

Taşınma Sonrası Kontrollistesi

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

  • Tüm PDF oluşturma testlerini çalıştırın
  • Çıktı kalitesini karşılaştırın (IronPDF'nin Chromium motoru piksellik-kusursuz geriverir)
  • Performans iyileştirmesini ölçün (milisaniyeler vs. saniyeler)
  • Tüm şablonların doğru şekilde dönüştürüldüğünü doğrulayın
  • Hız limiti olmadan toplu işlem yapmayı test edin
  • Tüm hedef ortamları test edin
  • CI/CD yapılarını güncelleyin -CraftMyPDFaboneliğini iptal edin
  • API anahtarını sırlar/ayarlar'dan kaldırın

Ek Kaynaklar


CraftMyPDF'den IronPDF'e geçiş, çevrimdışı çalışabilen piksellik-kusursuz Chromium işleme yapısı sağlayarak bulut bağımlılıklarını, ağ gecikmesini, PDF başına ücreti ve şablon kilitlenmelerini ortadan kaldırır. REST API çağrılarından yerel metod çağrısına geçiş, kod tabanınızı basitleştirir ve hassas belge verilerini altyapınız içinde tutar.

Lütfen dikkate alın: CraftMyPDF, ilgili sahibinin tescilli markasıdır. Bu site,CraftMyPDFile ilişkili, onaylanmış veya sponsorlu değildir. 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