Ghostscript GPL vs IronPDF: Teknik Karşılaştırma Kılavuzu
HTML'den PDF oluşturan kurumsal uygulamalar, genellikle internete doğrudan bir yol bulunmayan kapalı ağlarda çalışır. Sorun, render zamanında ortaya çıkar: Bir fatura veya rapor şablonu, harici bir CDN'de barındırılan bir logo, web fontu veya stil sayfasına referans verir ve şirket ağı içinde bu talepler sessizce başarısız olur. Belge, bozuk görüntüler ve eksik fontlarla stil uygulanmamış olarak çıkar. Render motorunu şirket proxy'si üzerinden yönlendirmek bunu düzeltir ve IronPDF, bir proxy'yi doğrudan render çağrısında kabul eder.
İş Problemi
Bir finans, sağlık hizmeti veya sigorta uygulaması, web şablonlarından müşteri belgeleri üretir. Bu şablonlar harici varlıkları çeker, ancak sunucu bir güvenlik duvarı ve proxy'nin arkasında konumlanır. Proxy yapılandırması olmadan, motor varlıklara erişemez, böylece çıktı bozuk görünür. Bu ortamların çoğu da kimlik doğrulamalı proxy'ler çalıştırır, bu da gereksinime kimlik bilgileri ekler.
Çözüm
Proxy, render seçeneklerinin bir özelliği değil, RenderHtmlAsPdf yönteminde bir parametredir. Bir proxy dizesi iletmek, motordan gelen tüm varlık isteklerini o proxy üzerinden yönlendirir.
using IronPdf;
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(
htmlContent,
baseUrlOrPath: @"C:\templates\assets\",
proxy: "http://proxy.co/rp.local:8080"
);
pdf.SaveAs("report.pdf");
Kimlik doğrulamalı bir proxy için, kimlik bilgileri proxy URL'sine gider. Paroladaki özel karakterler yüzde ile kodlanmış olmalıdır.
string encoded = Uri.EscapeDataString("P@ssw0rd!");
string proxy = $"http://svc-account:{encoded}@proxy.co/rp.local:8080";
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent, baseUrlOrPath: null, proxy: proxy);
Proxy Arkasında Dahili URL'lerin Renderlanması
URL render yöntemi bir proxy parametresini kabul etmez. Pratik desen, proxy için yapılandırılmış bir HttpClient ile HTML'yi almak, ardından bu HTML'yi render etmek, böylece referans verilen varlıkların da proxy üzerinden yönlendirilmesidir.
using System.Net;
using System.Net.Http;
var webProxy = new WebProxy("http://proxy.co/rp.local:8080")
{
Credentials = new NetworkCredential("svc-account", "P@ssw0rd!")
};
var handler = new HttpClientHandler { Proxy = webProxy, UseProxy = true };
using var httpClient = new HttpClient(handler);
string html = await httpClient.GetStringAsync("https://dashboard.internal.co/rp/report");
PdfDocument pdf = renderer.RenderHtmlAsPdf(html, baseUrlOrPath: null, proxy: "http://proxy.co/rp.local:8080");
Planlanması Gereken Noktalar
- Proxy kimliği sayfa kimliği değildir: Proxy URL'sindeki kimlik bilgileri, proxy'ye karşı kimlik doğrular, bu, web sitesi giriş kimlik bilglerinden farklıdır.
- Şema proxy gezeğine atıfta bulunur: Bir
http://proxy yine dehttps://kaynaklarını çekebilir, bu yüzden şema seçimi, app-to-proxy bağlantısının TLS gerektirip gerektirmediğiyle ilgilidir. - Kapsayıcılar ve boru hatları: Docker dağıtımları ve CI derleme aracılarının genellikle çıkışı yoktur, bu yüzden aynı proxy yapılandırması burada uygulanır.
Sonuç
Bir parametre ile ekipler, kurumsal proxy arkasında, kimlik doğrulamalı ortamlar ve kapsayıcılar dahil uygulamalardan tamamen stil verilmiş ve markalanmış PDF'ler alır. Tam yapılandırma detayları proxy kılavuzundadır.

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.