PDFBolt'tan IronPDF'e C# ile Nasıl Geçilir
PDFBolt'tan IronPDF'e geçiş, .NET PDF iş akışınızı yalnızca bulut odaklı bir SaaS REST hizmetinden, yerel belge işleme ve belge başına kota olmadan özelleştirilmiş bir kütüphaneye taşır. Bu kılavuz, ağ bağımlılıklarını, aylık kullanım sınırlarını ve harici veri iletimini ortadan kaldırmak için adım adım bir geçiş yolu sağlar, PDFBolt'un sağlamadığı PDF manipülasyon özelliklerini ekler.
PDFBolt'ten IronPDF'e Neden Geçmeli
Sadece Bulut Problemi
PDFBolt, REST API olarak ortaya çıkan yalnızca bulut tabanlı bir SaaS platformudur; .NET için resmi bir SDK ve PDFBolt NuGet paketi yoktur. Entegrasyon https://api.pdfbolt.com/v1/direct karşı HttpClient ile el ile yapılır. Hızlı prototipler için uygun olmakla birlikte, bu mimari üretim uygulamaları için zorluklar yaratır:
-
Yalnızca Bulut İşleme: Her belge PDFBolt'un sunucularından geçiyor — özelleştirilmiş bir seçenek yok, bu da veri akışı üzerinde daha fazla kontrol sağlamak isteyen ekipler için engel olabilir.
-
Veri Gizliliği Düşüncesi: Hassas belgeler (sözleşmeler, tıbbi kayıtlar, finansal veriler) harici olarak iletilmektedir. Düzenlenmiş verilerle çalışan şirketlerin meşru gözden geçirme kaygıları olacaktır.
-
Kullanım Sınırları: Ücretsiz katman ayda 100 belge ile sınırlıdır, dakika başına 20 istek, 1 eşzamanlı istek, bu üretim iş yükleri için yeterli olmayabilir. Ücretli katmanlar (pdfbolt.com/pricing başına) $19/ay'dan $249/ay'a kadar genişler.
-
Ağ Bağımlılığı: İnternet kesintileri veya PDFBolt'un çökmesi, PDF üretiminizi tamamen durdurur.
-
Gecikme: Yerel işleme ile karşılaştırıldığında, ağ gidiş-dönüşü her dönüşümü saniyelerle uzatır.
-
Uyumluluk İncelemesi: GDPR, HIPAA ve SOC2 denetimleri genellikle harici belge işleme durumunda ek belgeler gerektirir.
-
API Anahtar Güvenliği: Sızdırılan API anahtarları, hesabınıza faturalanan yetkisiz kullanımla sonuçlanabilir.
- Tedarikçi Kilitlemesi:PDFBoltkoşullarını değiştirirse veya kapanırsa uygulamanız çalışmayı durdurur.
PDFBoltvs IronPDF Karşılaştırması
| Endişe | PDFBolt | IronPDF |
|---|---|---|
| Veri Konumu | Harici sunucular | Sadece sizin sunucularınız |
| Kullanım Sınırları | 100 ücretsiz/ay, ardından kademeli abonelikler | Unlimited |
| İnternet Gerekli | Evet, her zaman | Hayır |
| Gecikme | Ağ turu | Yerel |
| Uyumluluk | Karmaşık (harici işleme) | Basit (yerel işleme) |
| Maliyet Modeli | Aylık abonelik katmanları ($19–$249/ay) | Tek seferlik veya yıllık |
| Çevrimdışı Operasyon | İmkansız | Tam destekli |
| API Anahtar Riskleri | Sızdırılmış = fatura edilmiş | Lisans anahtarı, faturalama riski yok |
IronPDF, belge işlemenin yerel kalmasını sağlayarak, harici bir bulut hizmetine olan bağımlılığı ortadan kaldırarak, modern .NET üzerinde kendine yeten bir temel sağlar.
Başlamadan Önce
Ön Koşullar
- .NET Ortamı: .NET Framework 4.6.2+ veya .NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGet Erişimi: NuGet paketlerini yükleyebilme
- IronPDF Lisansı: Lisans anahtarınızı ironpdf.com adresinden edinin
NuGet Paket Değişiklikleri
PDFBolt'un resmi bir .NET SDK'sı ve PDFBolt NuGet paketi yoktur, bu yüzden kaldırılacak bir şey yok.PDFBolttarafındaki temizleme, el ile yapılmış olan HttpClient sarmalayıcı ve istek/yanıt DTO'larını silmektir. Ardından IronPDF'i yükleyin:
# Install IronPDF(replaces the hand-rolled HttpClient wrapper)
dotnet add package IronPdf
# Install IronPDF(replaces the hand-rolled HttpClient wrapper)
dotnet add package IronPdf
Lisans Yapılandırması
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
PDFBoltKullanımını Belirleyin
# Find allPDFBoltREST calls
grep -rE "api\.pdfbolt\.com|API-KEY|/v1/direct" --include="*.cs" .
# Find API key references
grep -r "PDFBOLT\|ApiKey" --include="*.cs" --include="*.json" --include="*.config" .
# Find allPDFBoltREST calls
grep -rE "api\.pdfbolt\.com|API-KEY|/v1/direct" --include="*.cs" .
# Find API key references
grep -r "PDFBOLT\|ApiKey" --include="*.cs" --include="*.json" --include="*.config" .
Tam API Referansı
Temel Kavram Eşleştirmeleri
| PDFBolt (REST) | IronPDF |
|---|---|
HttpClient + API-KEY başlığı |
new ChromePdfRenderer() |
| JSON istek gövdesi | renderer.RenderingOptions |
POST https://api.pdfbolt.com/v1/direct |
renderer.RenderHtmlAsPdf(...) / RenderUrlAsPdf(...) |
Yanıt byte[] |
PdfDocument |
Dönüşüm Yöntem Eşlemeleri
| PDFBolt (REST) | IronPDF |
|---|---|
POST /v1/direct ile { "html": <base64> } |
renderer.RenderHtmlAsPdf(html) |
POST /v1/direct ile { "url": "..." } |
renderer.RenderUrlAsPdf(url) |
Çıktı Yöntem Eşlemeleri
| PDFBolt (REST) | IronPDF |
|---|---|
await response.Content.ReadAsByteArrayAsync() ardından File.WriteAllBytes |
pdf.SaveAs(path) |
await response.Content.ReadAsByteArrayAsync() |
pdf.BinaryData |
Sayfa Yapılandırma Eşlemeleri
| PDFBolt JSON | IronPDF |
|---|---|
"format": "A4" |
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4 |
"margin": { "top": "20mm" } |
renderer.RenderingOptions.MarginTop = 20 |
"margin": { "bottom": "20mm" } |
renderer.RenderingOptions.MarginBottom = 20 |
"margin": { "left": "15mm" } |
renderer.RenderingOptions.MarginLeft = 15 |
"margin": { "right": "15mm" } |
renderer.RenderingOptions.MarginRight = 15 |
Başlık/Altbilgi Yer Tutucu Eşlemeleri
PDFBolt (base64 ile kodlanmış headerTemplate / footerTemplate içinde) |
IronPDF (HtmlFragment token) |
|---|---|
<span class="pageNumber"></span> |
{page} |
<span class="totalPages"></span> |
{total-pages} |
<span class="date"></span> |
{date} |
<span class="title"></span> |
{html-title} |
Kod Göç Örnekleri
Örnek 1: Temel HTML'den PDF'ye
Önce (PDFBolt — HttpClient üzerinden REST):
// REST API — no official .NET SDK; integrate via HttpClient.
// Docs: https://pdfbolt.com/docs/quick-start-guide/csharp
using System;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var html = "<html><body><h1>Hello World</h1></body></html>";
var payload = JsonSerializer.Serialize(new
{
html = Convert.ToBase64String(Encoding.UTF8.GetBytes(html))
});
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY");
using var content = new StringContent(payload, Encoding.UTF8, "application/json");
using var response = await http.PostAsync("https://api.pdfbolt.com/v1/direct", content);
response.EnsureSuccessStatusCode();
var pdfBytes = await response.Content.ReadAsByteArrayAsync();
await File.WriteAllBytesAsync("output.pdf", pdfBytes);
}
}
// REST API — no official .NET SDK; integrate via HttpClient.
// Docs: https://pdfbolt.com/docs/quick-start-guide/csharp
using System;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var html = "<html><body><h1>Hello World</h1></body></html>";
var payload = JsonSerializer.Serialize(new
{
html = Convert.ToBase64String(Encoding.UTF8.GetBytes(html))
});
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY");
using var content = new StringContent(payload, Encoding.UTF8, "application/json");
using var response = await http.PostAsync("https://api.pdfbolt.com/v1/direct", content);
response.EnsureSuccessStatusCode();
var pdfBytes = await response.Content.ReadAsByteArrayAsync();
await File.WriteAllBytesAsync("output.pdf", pdfBytes);
}
}
Imports System
Imports System.IO
Imports System.Net.Http
Imports System.Text
Imports System.Text.Json
Imports System.Threading.Tasks
Module Program
Async Function Main() As Task
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim payload As String = JsonSerializer.Serialize(New With {
.html = Convert.ToBase64String(Encoding.UTF8.GetBytes(html))
})
Using http As New HttpClient()
http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY")
Using content As New StringContent(payload, Encoding.UTF8, "application/json")
Using response As HttpResponseMessage = Await http.PostAsync("https://api.pdfbolt.com/v1/direct", content)
response.EnsureSuccessStatusCode()
Dim pdfBytes As Byte() = Await response.Content.ReadAsByteArrayAsync()
Await File.WriteAllBytesAsync("output.pdf", pdfBytes)
End Using
End Using
End Using
End Function
End Module
Sonrası (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System.IO
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
Yapısal fark, entegrasyon modelindedir. PDFBolt, HTML'yi base64 ile kodlamanızı, bir JSON yükü oluşturmanızı, API-KEY başlığını ayarlamanızı, POST ile https://api.pdfbolt.com/v1/direct bağlamanızı, yanıtı beklemenizi ve dönen baytları diske kendiniz yazmanızı gerektirir.
IronPDF'nin ChromePdfRenderer.RenderHtmlAsPdf() bir yerleşik SaveAs() yöntemi olan PdfDocument nesnesi döndürür. Nesneye yönelik model, kaydetmeden önce PDF'yi manipüle etmenizi sağlar (filigran ekle, belgeleri birleştir, güvenlik uygula). Mevcut kodla uyumluluk için ham baytlara ihtiyacınız varsa, pdf.BinaryData kullanın. HTML'den PDF'ye belgelemeyi ek işleme seçenekleri için inceleyin.
Örnek 2: URL'den PDF'ye Dönüştürme
Önce (PDFBolt — HttpClient üzerinden REST):
// REST API — no official .NET SDK; integrate via HttpClient.
// Docs: https://pdfbolt.com/docs/quick-start-guide/csharp
using System.IO;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var payload = JsonSerializer.Serialize(new { url = "https://www.example.com" });
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY");
using var content = new StringContent(payload, Encoding.UTF8, "application/json");
using var response = await http.PostAsync("https://api.pdfbolt.com/v1/direct", content);
response.EnsureSuccessStatusCode();
var pdfBytes = await response.Content.ReadAsByteArrayAsync();
await File.WriteAllBytesAsync("webpage.pdf", pdfBytes);
}
}
// REST API — no official .NET SDK; integrate via HttpClient.
// Docs: https://pdfbolt.com/docs/quick-start-guide/csharp
using System.IO;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var payload = JsonSerializer.Serialize(new { url = "https://www.example.com" });
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY");
using var content = new StringContent(payload, Encoding.UTF8, "application/json");
using var response = await http.PostAsync("https://api.pdfbolt.com/v1/direct", content);
response.EnsureSuccessStatusCode();
var pdfBytes = await response.Content.ReadAsByteArrayAsync();
await File.WriteAllBytesAsync("webpage.pdf", pdfBytes);
}
}
Imports System.IO
Imports System.Net.Http
Imports System.Text
Imports System.Text.Json
Imports System.Threading.Tasks
Module Program
Async Function Main() As Task
Dim payload = JsonSerializer.Serialize(New With {.url = "https://www.example.com"})
Using http As New HttpClient()
http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY")
Using content As New StringContent(payload, Encoding.UTF8, "application/json")
Using response As HttpResponseMessage = Await http.PostAsync("https://api.pdfbolt.com/v1/direct", content)
response.EnsureSuccessStatusCode()
Dim pdfBytes As Byte() = Await response.Content.ReadAsByteArrayAsync()
Await File.WriteAllBytesAsync("webpage.pdf", pdfBytes)
End Using
End Using
End Using
End Function
End Module
Sonrası (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Class
PDFBolt tarafında, URL dönüşümü hala tam bir REST yoluyla yapılmalıdır: JSON gövdesini oluşturun, API anahtar başlığını ayarlayın, POST'u bekleyin ve yanıt baytlarını yazın. Zaten bir genel URL'ye işaret ettiğiniz halde, getirme ve render işlemleri her iki işlem de PDFBolt'un sunucularında gerçekleşir.
IronPDF'nin RenderUrlAsPdf() bir yerleşik SaveAs() yöntemi olan PdfDocument döndürür. Ana avantaj, IronPDF'in URL alma ve PDF render işlemlerini yerel olarak gerçekleştirmesidir — belge verileri altyapınızdan çıkmaz. URL'den PDF'ye dönüşüm hakkında daha fazla bilgi edinin.
Örnek 3: Özel Sayfa Ayarları ile HTML Dosyası
Önce (PDFBolt — HttpClient üzerinden REST):
// REST API — no official .NET SDK; integrate via HttpClient.
// Docs: https://pdfbolt.com/docs/parameters
using System;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var html = await File.ReadAllTextAsync("input.html");
var payload = JsonSerializer.Serialize(new
{
html = Convert.ToBase64String(Encoding.UTF8.GetBytes(html)),
format = "A4",
margin = new { top = "20mm", bottom = "20mm" },
printBackground = true
});
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY");
using var content = new StringContent(payload, Encoding.UTF8, "application/json");
using var response = await http.PostAsync("https://api.pdfbolt.com/v1/direct", content);
response.EnsureSuccessStatusCode();
var pdfBytes = await response.Content.ReadAsByteArrayAsync();
await File.WriteAllBytesAsync("output.pdf", pdfBytes);
}
}
// REST API — no official .NET SDK; integrate via HttpClient.
// Docs: https://pdfbolt.com/docs/parameters
using System;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var html = await File.ReadAllTextAsync("input.html");
var payload = JsonSerializer.Serialize(new
{
html = Convert.ToBase64String(Encoding.UTF8.GetBytes(html)),
format = "A4",
margin = new { top = "20mm", bottom = "20mm" },
printBackground = true
});
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY");
using var content = new StringContent(payload, Encoding.UTF8, "application/json");
using var response = await http.PostAsync("https://api.pdfbolt.com/v1/direct", content);
response.EnsureSuccessStatusCode();
var pdfBytes = await response.Content.ReadAsByteArrayAsync();
await File.WriteAllBytesAsync("output.pdf", pdfBytes);
}
}
Imports System
Imports System.IO
Imports System.Net.Http
Imports System.Text
Imports System.Text.Json
Imports System.Threading.Tasks
Module Program
Async Function Main() As Task
Dim html = Await File.ReadAllTextAsync("input.html")
Dim payload = JsonSerializer.Serialize(New With {
.html = Convert.ToBase64String(Encoding.UTF8.GetBytes(html)),
.format = "A4",
.margin = New With {.top = "20mm", .bottom = "20mm"},
.printBackground = True
})
Using http As New HttpClient()
http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY")
Using content As New StringContent(payload, Encoding.UTF8, "application/json")
Using response As HttpResponseMessage = Await http.PostAsync("https://api.pdfbolt.com/v1/direct", content)
response.EnsureSuccessStatusCode()
Dim pdfBytes = Await response.Content.ReadAsByteArrayAsync()
Await File.WriteAllBytesAsync("output.pdf", pdfBytes)
End Using
End Using
End Using
End Function
End Module
Sonrası (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
var html = File.ReadAllText("input.html");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
var html = File.ReadAllText("input.html");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System.IO
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
Dim html = File.ReadAllText("input.html")
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
Bu örnek sayfa yapılandırma eşlemesini gösterir. PDFBolt, CSS tarzı dize ("20mm") değerlerine sahip, yuvalanmış bir margin nesnesi ile üst düzey format kabul eder. IronPDF, derleyicide kuvvetli yazılmış özellikleri olan bir RenderingOptions nesnesi kullanır.
Temel eşlemeler:
"format": "A4"→PdfPaperSize.A4(kuvvetli yazılmış enum)"margin": { "top": "20mm" }→RenderingOptions.MarginTop = 20(sayısal mm)
IronPDF kenar boşlukları her zaman sayısal milimetrelerdir, bu yüzdenPDFBoltCSS birim dizesi "20mm" doğrudan eşleştirilir. IronPdf.Rendering isim uzayı, PdfPaperSize enum'una erişim için gereklidir. Ek sayfa yapılandırması için, rendering seçenekleri dokümanına bakın.
Kritik Taşıma Notları
Dönüş Türü Değişikliği
PDFBolt'un /v1/direct uç noktası, ham PDF'yi HTTP yanıt gövdesi olarak döndürür;IronPDF bir PdfDocument döndürür:
//PDFBoltpattern:
var pdfBytes = await response.Content.ReadAsByteArrayAsync();
await File.WriteAllBytesAsync("output.pdf", pdfBytes);
//IronPDF pattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or if you need bytes:
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;
//PDFBoltpattern:
var pdfBytes = await response.Content.ReadAsByteArrayAsync();
await File.WriteAllBytesAsync("output.pdf", pdfBytes);
//IronPDF pattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or if you need bytes:
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;
Imports System.IO
Imports System.Net.Http
'PDFBolt pattern:
Dim pdfBytes = Await response.Content.ReadAsByteArrayAsync()
Await File.WriteAllBytesAsync("output.pdf", pdfBytes)
'IronPDF pattern:
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
' Or if you need bytes:
Dim pdfBytes As Byte() = renderer.RenderHtmlAsPdf(html).BinaryData
Entegrasyon Modeli Değişikliği
Entegrasyon şekli, REST istemcisinden işlem içi kütüphaneye değişiyor:
// PDFBolt
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY");
// ... build JSON, POST to https://api.pdfbolt.com/v1/direct
// IronPDF
var renderer = new ChromePdfRenderer();
// PDFBolt
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY");
// ... build JSON, POST to https://api.pdfbolt.com/v1/direct
// IronPDF
var renderer = new ChromePdfRenderer();
Imports System.Net.Http
' PDFBolt
Using http As New HttpClient()
http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY")
' ... build JSON, POST to https://api.pdfbolt.com/v1/direct
End Using
' IronPDF
Dim renderer As New ChromePdfRenderer()
Konfigürasyon Deseni Değişimi
PDFBolt yapılandırması, istek gövdesi üzerindeki JSON alanlarından ibarettir;IronPDFRenderingOptions kullanır:
// PDFBolt: JSON request fields
new { format = "A4", margin = new { top = "20mm" } }
// IronPDF: RenderingOptions properties
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
// PDFBolt: JSON request fields
new { format = "A4", margin = new { top = "20mm" } }
// IronPDF: RenderingOptions properties
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
' PDFBolt: JSON request fields
New With {Key .format = "A4", Key .margin = New With {Key .top = "20mm"}}
' IronPDF: RenderingOptions properties
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 20
API Anahtarının Kaldırılması
PDFBolt, her istekte bir API-KEY başlığı gerektirir; IronPDF, tek seferlik bir lisans anahtarı kullanır:
// PDFBolt: API key per HTTP call (security risk if leaked)
http.DefaultRequestHeaders.Add("API-KEY", config["PDFBolt:ApiKey"]);
// IronPDF: License key once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
// PDFBolt: API key per HTTP call (security risk if leaked)
http.DefaultRequestHeaders.Add("API-KEY", config["PDFBolt:ApiKey"]);
// IronPDF: License key once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
' PDFBolt: API key per HTTP call (security risk if leaked)
http.DefaultRequestHeaders.Add("API-KEY", config("PDFBolt:ApiKey"))
' IronPDF: License key once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim renderer As New ChromePdfRenderer()
Ağ Hatası İşlemenin Kaldırılması
Yerel işleme, ağ hatalarıyla uğraşmayı gerektirmez:
// PDFBolt: Network error handling required
catch (HttpRequestException ex)
catch (TaskCanceledException)
catch (TimeoutException)
// IronPDF: Remove network-specific catches entirely
// PDFBolt: Network error handling required
catch (HttpRequestException ex)
catch (TaskCanceledException)
catch (TimeoutException)
// IronPDF: Remove network-specific catches entirely
Kullanılabilir Yeni Yetenekler
IronPDF'e geçtikten sonra, PDFBolt'un sağlamadığı yetenekler kazanırsınız:
// PDF Merging (not available in PDFBolt)
var merged = PdfDocument.Merge(pdf1, pdf2);
// Watermarks (not available in PDFBolt)
pdf.ApplyWatermark("<h1 style='opacity:0.3;'>DRAFT</h1>");
// Password Protection (not available in PDFBolt)
pdf.SecuritySettings.UserPassword = "secret";
// Text Extraction (not available in PDFBolt)
string text = pdf.ExtractAllText();
// PDF to Images (not available in PDFBolt)
pdf.RasterizeToImageFiles("page_*.png");
// PDF Merging (not available in PDFBolt)
var merged = PdfDocument.Merge(pdf1, pdf2);
// Watermarks (not available in PDFBolt)
pdf.ApplyWatermark("<h1 style='opacity:0.3;'>DRAFT</h1>");
// Password Protection (not available in PDFBolt)
pdf.SecuritySettings.UserPassword = "secret";
// Text Extraction (not available in PDFBolt)
string text = pdf.ExtractAllText();
// PDF to Images (not available in PDFBolt)
pdf.RasterizeToImageFiles("page_*.png");
' PDF Merging (not available in PDFBolt)
Dim merged = PdfDocument.Merge(pdf1, pdf2)
' Watermarks (not available in PDFBolt)
pdf.ApplyWatermark("<h1 style='opacity:0.3;'>DRAFT</h1>")
' Password Protection (not available in PDFBolt)
pdf.SecuritySettings.UserPassword = "secret"
' Text Extraction (not available in PDFBolt)
Dim text As String = pdf.ExtractAllText()
' PDF to Images (not available in PDFBolt)
pdf.RasterizeToImageFiles("page_*.png")
Hata Ayıklama
Sorun 1: NuGet'te PDFBolt Paketi Yok
Problem: IronPDF'de using PDFBolt; / new HtmlToPdfConverter() arayışı.
Çözüm: PDFBolt'un .NET SDK'sı yok — entegrasyonu, https://api.pdfbolt.com/v1/direct ile HttpClient. IronPDF, bu sarmalayıcıyı tamamen ChromePdfRenderer ile değiştirir:
// IronPDF
var renderer = new ChromePdfRenderer();
// IronPDF
var renderer = new ChromePdfRenderer();
' IronPDF
Dim renderer As New ChromePdfRenderer()
Sorun 2: ConvertHtmlString Nerede Gitti?
Problem: Bir ConvertHtmlString(html) yöntemine sahip, firma içiPDFBoltsarmalayıcısını taşımak.
Çözüm: RenderHtmlAsPdf() kullanın:
// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
Sorun 3: ConvertUrl Nerede Gitti?
Problem: Bir ConvertUrl(url) yöntemine sahip, firma içiPDFBoltsarmalayıcısını taşımak.
Çözüm: RenderUrlAsPdf() kullanın:
// IronPDF
var pdf = renderer.RenderUrlAsPdf(url);
// IronPDF
var pdf = renderer.RenderUrlAsPdf(url);
Sorun 4: format JSON Alanı → Enum
Problem: PDFBolt'un "format": "A4" JSON alanını çevirmek.
Çözüm: IronPdf.Rendering'dan PdfPaperSize kullanın:
// IronPDF
using IronPdf.Rendering;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
// IronPDF
using IronPdf.Rendering;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
Imports IronPdf.Rendering
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
Sorun 5: İlk PDF Oluşturma Yavaş
Problem: İlk oluşturma beklenenden uzun sürüyor.
Çözüm: Chromium motoru ilk kullanımla başlatılır. Gerekirse ön hazırlık yapın:
// Warm up during application startup
var renderer = new ChromePdfRenderer();
renderer.RenderHtmlAsPdf("<html><body></body></html>");
// Warm up during application startup
var renderer = new ChromePdfRenderer();
renderer.RenderHtmlAsPdf("<html><body></body></html>");
' Warm up during application startup
Dim renderer As New ChromePdfRenderer()
renderer.RenderHtmlAsPdf("<html><body></body></html>")
Geçiş Kontrol Listesi
Öncesi-Geçiş
- Kod tabanındaki tümPDFBoltREST çağrılarını envanter edin (
api.pdfbolt.com) - Mevcut JSON istek alanlarını belgeleyin (
format,margin,printBackground,headerTemplatevb.) - Kaldırmak için API anahtar yönetim kodunu belirleyin
- Silinecek 429 / kota tekrar işleme listesini yapın -IronPDF lisans anahtarını edinin
Paket Değişiklikleri
- El ile yapılmışPDFBolt
HttpClientsarmalayıcıyı ve DTO'ları silin (kaldırılacak NuGet paketi yok) IronPdfNuGet paketini yükleyin:dotnet add package IronPdfusing IronPdf;isim uzayını ekleyin- Kağıt boyutu enumları için
using IronPdf.Rendering;ekleyin
Kod Değişiklikleri
Başlangıçta lisans anahtarı yapılandırmasını ekleyin
HttpClient+API-KEYentegrasyonunuChromePdfRendererile değiştirinPOST /v1/direct'iRenderHtmlAsPdf()/RenderUrlAsPdf()ile değiştirinawait response.Content.ReadAsByteArrayAsync()+File.WriteAllBytes()'ipdf.SaveAs()ile değiştirin (veya baytlar hala gerekiyorsapdf.BinaryData)"format"/"margin"JSON alanlarınıRenderingOptions.PaperSize/RenderingOptions.MarginTopvb. ile eşleştirin.- API anahtar yönetim kodunu çıkarın
- 429 / hız limiti işleme özelliğini kaldırın
- Ağ hatası işleme kodunu çıkarın
Geçiş Sonrası
- Yapılandırma dosyalarından API anahtarını silin
- Gizli yöneticilerden API anahtarını çıkarın
- PDF çıktısını karşılaştıran tüm testleri çalıştırın
- Sayfa boyutlarının ve kenar boşluklarının doğru şekilde çıktığını doğrulayın
- Yeni özellikler eklemeyi düşünün (filigranlar, güvenlik, birleştirme)

