PrinceXML'den IronPDF'e C# ile Nasıl Geçilir
PrinceXML'den IronPDF'e geçiş, PDF üretim iş akışınızı harici bir komut satırı sürecinden yerel bir .NET kütüphanesine dönüştürür. Bu kılavuz, proses yönetimi yükünü ortadan kaldıran, dağıtımı basitleştiren ve üretim ötesinde kapsamlı PDF manipülasyon yetenekleri sağlayan eksiksiz, adım adım bir geçiş yolu sunar.
Neden PrinceXML'den IronPDF'e Geçmelisiniz
PrinceXML'i Anlamak
PrinceXML, CSS Sayfa Medya özelliklerine olan bağlılığı sayesinde HTML içeriğini baskı-mükemmel PDF belgelerine dönüştürmede üstün bir yetenek için tasarlanmış gelişmiş bir araçtır. Bu uzmanlaşma, PrinceXML'in, yayıncılık veya hukuki belgeler gibi detaylı baskı tasarımına ihtiyaç duyan endüstriler için değerli bir nitelik olan belgeleri tasarlanan baskı tasarımlarına yüksek sadakatle oluşturmasını sağlar.
Bununla birlikte,PrinceXMLbir .NET kütüphanesi değildir ve bütünleşik olmayan bir komut satırı aracı olarak çalışır, bu da saf .NET çözümlerini tercih eden ortamlar için entegrasyonu zorlayıcı hale getirebilir. Ayrı bir sunucu sürecine dayanması, ek sistem kaynak yönetimini ve proje dağıtımları için potansiyel olarak artan bir karmaşıklığı içerir.
Harici Proses Problemi
PrinceXML, .NET uygulamaları için önemli mimari zorluklar oluşturan ayrı bir komut satırı yürütülebilir dosyası olarak çalışır:
-
Proses Yönetimi Yükü: Harici süreçleri oluşturmalı, izlemeli ve sonlandırmalıdır.
-
Yerli .NET Entegrasyonu Yok: stdin/stdout veya geçici dosyalar yoluyla iletişim kur
-
Dağıtım Karmaşıklığı: Her sunucuda Prince yüklemesi gerektirir.
-
Sunucu Başına Lisanslama: Her dağıtım ayrı bir lisans gerektirir.
-
Hata İşleme Zorluğu: Hata tespiti için metin çıkışını ayrıştır.
-
Async/Await Yok: Engelleyici çağrılar veya karmaşık senkron-olmayan sarmalayıcılar gerektirir.
- Yol Bağımlılıkları: PATH veya mutlak yolda Prince yürütülebilir dosyasını bulmalıdır.
PrinceXMLve IronPDF Karşılaştırması
| Aspekt | PrinceXML | IronPDF |
|---|---|---|
| Mimari | Harici Süreç | Yerel .NET Kütüphanesi |
| Entegrasyon | Komut satırı | Doğrudan API |
| Dağıtım | Her sunucuya kurulum | Tek bir NuGet paketi |
| Hata Yönetimi | Metin çıktısını ayrıştırma | .NET istisnaları |
| Asenkron Destek | Manuel sarmalayıcılar | Yerel async/await |
| PDF Manipülasyonu | Yalnızca üretim | Tam manipülasyon (birleştir, böl, düzenle) |
| Lisanslama | Masaüstü $495 / Sunucu $3,800; free non-commercial use with logo watermark | Her geliştirici için |
| Güncellemeler | Manuel yeniden kurulum | NuGet güncellemesi |
| Hata ayıklama | Zor | Tam hata ayıklayıcı desteği |
| Dijital İmzalar | Hayır | Evet |
| Formlar | Hayır | Evet |
| Docker Desteği | Karmaşık | Basit |
| Bulut Fonksiyonu | Zor | Kolay |
IronPDF, sadece HTML'den PDF'e dönüştürmenin ötesine geçen, gelişmiş PDF manipülasyon görevlerini içeren, düzenleme, birleştirme ve dijital imzalar gibi .NET yerli yeteneklerine sahip bir alternatif sunar. IronPDF'in API'si, minimal şablon koduyla dönüşümleri ve manipülasyonları gerçekleştirmesine izin vererek basitlik ve kullanım kolaylığı için tasarlanmıştır.
Modern .NET'i benimseyen ekipler için, IronPDF'in sorunsuz dağıtımı, dış bağımlılıklar veya sunucu süreçleri gerektirmez ve böylece .NET frameworke entegrasyonu kolaylaştırır.
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
# Install IronPDF
dotnet add package IronPdf
# Remove Prince wrapper if using one
dotnet remove package PrinceXMLWrapper
# Install IronPDF
dotnet add package IronPdf
# Remove Prince wrapper if using one
dotnet remove package PrinceXMLWrapper
Lisans Yapılandırması
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
PrinceXMLKullanımı Araştırması
# Find Prince process calls
grep -r "prince" --include="*.cs" .
grep -r "Process.Start" --include="*.cs" . | grep -i prince
grep -r "@page" --include="*.css" .
grep -r "prince-" --include="*.css" .
# Find Prince process calls
grep -r "prince" --include="*.cs" .
grep -r "Process.Start" --include="*.cs" . | grep -i prince
grep -r "@page" --include="*.css" .
grep -r "prince-" --include="*.css" .
Tam API Referansı
Ad Alanı Değişiklikleri
// Before: PrinceXML
using PrinceXML.Wrapper;
using System.Diagnostics;
using System.IO;
// After: IronPDF
using IronPdf;
// Before: PrinceXML
using PrinceXML.Wrapper;
using System.Diagnostics;
using System.IO;
// After: IronPDF
using IronPdf;
Imports IronPdf
Imports System.Diagnostics
Imports System.IO
Komut Satırından Metoda Haritalama
| Prince Komutu | IronPDF Eşdeğeri |
|---|---|
prince input.html -o output.pdf |
renderer.RenderHtmlFileAsPdf("input.html").SaveAs("output.pdf") |
prince --style=custom.css input.html |
HTML'de CSS dahil edin veya RenderingOptions kullanın |
prince --javascript |
renderer.RenderingOptions.EnableJavaScript = true |
prince --no-javascript |
renderer.RenderingOptions.EnableJavaScript = false |
prince --page-size=Letter |
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter |
prince --page-margin=1in |
renderer.RenderingOptions.MarginTop = 72 (72 puan = 1 inç) |
prince --encrypt |
pdf.SecuritySettings.OwnerPassword = "..." |
prince --user-password=pw |
pdf.SecuritySettings.UserPassword = "pw" |
prince --disallow-print |
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint |
prince --disallow-copy |
pdf.SecuritySettings.AllowUserCopyPasteContent = false |
prince --baseurl=http://... |
renderer.RenderingOptions.BaseUrl = new Uri("http://...") |
prince --media=print |
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print |
prince --media=screen |
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen |
CSS @page ve RenderingOptions Haritalama
| CSS @page Özelliği | IronPDF Eşdeğeri |
|---|---|
size: A4 |
PaperSize = PdfPaperSize.A4 |
size: Letter |
PaperSize = PdfPaperSize.Letter |
size:A4landscape |
PaperSize = PdfPaperSize.A4 + PaperOrientation = Landscape |
margin: 2cm |
MarginTop/Bottom/Left/Right = 56 |
margin-top: 1in |
MarginTop = 72 |
@top-center { content: "..." } |
Ortalanmış div ile HtmlHeader |
@bottom-right { content: counter(page) } |
HtmlFooter ile {page} placeholder |
Sayfa Boyutu Dönüşümleri
| Boyut | Puanlar | Milimetre |
|---|---|---|
| Mektup | 612 x 792 | 216 x 279 |
| A4 | 595 x 842 | 210 x 297 |
| Hukuki | 612 x 1008 | 216 x 356 |
| 1 inç | 72 | 25.4 |
| 1 cm | 28.35 | 10 |
Kod Göç Örnekleri
Örnek 1: HTML Dosyasını PDF'ye Dönüştürme
Önceki (PrinceXML):
// NuGet: Install-Package PrinceXMLWrapper
using PrinceXML.Wrapper;
using System;
class Program
{
static void Main()
{
Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe");
prince.Convert("input.html", "output.pdf");
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package PrinceXMLWrapper
using PrinceXML.Wrapper;
using System;
class Program
{
static void Main()
{
Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe");
prince.Convert("input.html", "output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports PrinceXML.Wrapper
Imports System
Class Program
Shared Sub Main()
Dim prince As New Prince("C:\Program Files\Prince\engine\bin\prince.exe")
prince.Convert("input.html", "output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Class
Sonrası (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlFileAsPdf("input.html")
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Class
Bu örnek, temel yapısal farkı gösterir. PrinceXML, yürütülebilir dosyanın tam yolu ("C:\\Program Files\\Prince\\engine\\bin\\prince.exe") ile bir Prince nesnesini çalıştırmayı ve ardından giriş ve çıkış yolları ile Convert() çalıştırmayı gerektirir.
IronPDF, yol bağımlılıklarını tamamen ortadan kaldırır: bir ChromePdfRenderer oluşturun, HTML dosya yolu ile RenderHtmlFileAsPdf() çağırın ve sonucu yazmak için SaveAs() çağırın. Yürütülebilir yollar, süreç yönetimi, yol bağımlılıkları yok. Kapsamlı örnekler için HTML'den PDF'e dönüşüm belgelerine bakın.
Örnek 2: Seçeneklerle URL'yi PDF'ye Dönüştürme
Önceki (PrinceXML):
// NuGet: Install-Package PrinceXMLWrapper
using PrinceXML.Wrapper;
using System;
class Program
{
static void Main()
{
Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe");
prince.JavaScript = true;
prince.Encrypt = true;
prince.PdfTitle = "Website Export";
prince.Convert("https://example.com", "webpage.pdf");
Console.WriteLine("URL converted to PDF");
}
}
// NuGet: Install-Package PrinceXMLWrapper
using PrinceXML.Wrapper;
using System;
class Program
{
static void Main()
{
Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe");
prince.JavaScript = true;
prince.Encrypt = true;
prince.PdfTitle = "Website Export";
prince.Convert("https://example.com", "webpage.pdf");
Console.WriteLine("URL converted to PDF");
}
}
Imports PrinceXML.Wrapper
Imports System
Class Program
Shared Sub Main()
Dim prince As New Prince("C:\Program Files\Prince\engine\bin\prince.exe")
prince.JavaScript = True
prince.Encrypt = True
prince.PdfTitle = "Website Export"
prince.Convert("https://example.com", "webpage.pdf")
Console.WriteLine("URL converted to PDF")
End Sub
End Class
Sonrası (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.Title = "Website Export";
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SecuritySettings.OwnerPassword = "owner-password";
pdf.SecuritySettings.UserPassword = "user-password";
pdf.SaveAs("webpage.pdf");
Console.WriteLine("URL converted to PDF");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.Title = "Website Export";
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SecuritySettings.OwnerPassword = "owner-password";
pdf.SecuritySettings.UserPassword = "user-password";
pdf.SaveAs("webpage.pdf");
Console.WriteLine("URL converted to PDF");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.Title = "Website Export"
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
pdf.SecuritySettings.OwnerPassword = "owner-password"
pdf.SecuritySettings.UserPassword = "user-password"
pdf.SaveAs("webpage.pdf")
Console.WriteLine("URL converted to PDF")
End Sub
End Class
Bu örnek,PrinceXMLseçeneklerinin IronPDF özelliklerine nasıl eşlendiğini gösterir. PrinceXML, dönüşüm öncesinde Prince nesnesi üzerinde (JavaScript, Encrypt, PdfTitle) özellikler olarak yapılandırmayı sunar. IronPDF, önceden işleme ayarları için RenderingOptions özelliklerini kullanır ve işlemi sonlandırdıktan sonra şifrelemeyi SecuritySettings yoluyla PdfDocument üzerinde uygular.
Anahtar eşlemeleri:
prince.JavaScript = true→renderer.RenderingOptions.EnableJavaScript = trueprince.PdfTitle = "..."→renderer.RenderingOptions.Title = "..."prince.Encrypt = true→pdf.SecuritySettings.OwnerPassword = "..."/pdf.SecuritySettings.UserPassword = "..."
Daha fazla bilgiyi kılavuzlarımızda öğrenin.
Örnek 3: HTML Dizesini PDF'ye Dönüştürme
Önceki (PrinceXML):
// NuGet: Install-Package PrinceXMLWrapper
using PrinceXML.Wrapper;
using System;
class Program
{
static void Main()
{
string html = "<html><head><style>body { font-family: Arial; color: blue; }</style></head><body><h1>Hello World</h1></body></html>";
Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe");
// ConvertString accepts a raw HTML/XML string directly
prince.ConvertString(html, "styled-output.pdf");
Console.WriteLine("Styled PDF created");
}
}
// NuGet: Install-Package PrinceXMLWrapper
using PrinceXML.Wrapper;
using System;
class Program
{
static void Main()
{
string html = "<html><head><style>body { font-family: Arial; color: blue; }</style></head><body><h1>Hello World</h1></body></html>";
Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe");
// ConvertString accepts a raw HTML/XML string directly
prince.ConvertString(html, "styled-output.pdf");
Console.WriteLine("Styled PDF created");
}
}
Imports PrinceXML.Wrapper
Imports System
Module Program
Sub Main()
Dim html As String = "<html><head><style>body { font-family: Arial; color: blue; }</style></head><body><h1>Hello World</h1></body></html>"
Dim prince As New Prince("C:\Program Files\Prince\engine\bin\prince.exe")
' ConvertString accepts a raw HTML/XML string directly
prince.ConvertString(html, "styled-output.pdf")
Console.WriteLine("Styled PDF created")
End Sub
End Module
Sonrası (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
string html = "<html><head><style>body { font-family: Arial; color: blue; }</style></head><body><h1>Hello World</h1></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("styled-output.pdf");
Console.WriteLine("Styled PDF created");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
string html = "<html><head><style>body { font-family: Arial; color: blue; }</style></head><body><h1>Hello World</h1></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("styled-output.pdf");
Console.WriteLine("Styled PDF created");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim html As String = "<html><head><style>body { font-family: Arial; color: blue; }</style></head><body><h1>Hello World</h1></body></html>"
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("styled-output.pdf")
Console.WriteLine("Styled PDF created")
End Sub
End Class
Her iki kütüphane de doğrudan bir HTML dizesini kabul eder:PrinceXMLConvertString() ve IronPDFRenderHtmlAsPdf() aracılığıyla. Temel mimari fark kalır — PrinceXML'nin ConvertString, girdiyi temel belirleme altında harici prince ikili dosyasına iletirken,IronPDF herhangi bir harici yürütülebilir dosya olmadan işlemi dahili olarak gerçekleştirir.
CSS Sayfalı Medya Geçişi
PrinceXML'in CSS Sayfalı Medya desteği güçlüdür, ancak başka bir yerde çalışmayacak Prince'e özgü CSS ile satıcı bağımlılığı yaratır:
PrinceXML CSS:
@page {
size: A4;
margin: 2cm;
@top-center {
content: "Document Title";
}
@bottom-right {
content: counter(page);
}
}
/* Prince-specific extensions */
prince-pdf-page-label: "Chapter " counter(chapter);
prince-pdf-destination: attr(id);
IronPDF C# (eşdeğer):
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 56; // ~2cm
renderer.RenderingOptions.MarginBottom = 56;
renderer.RenderingOptions.MarginLeft = 56;
renderer.RenderingOptions.MarginRight = 56;
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:center;'>Document Title</div>",
MaxHeight = 40
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:right;'>Page {page} of {total-pages}</div>",
MaxHeight = 25
};
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 56; // ~2cm
renderer.RenderingOptions.MarginBottom = 56;
renderer.RenderingOptions.MarginLeft = 56;
renderer.RenderingOptions.MarginRight = 56;
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:center;'>Document Title</div>",
MaxHeight = 40
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:right;'>Page {page} of {total-pages}</div>",
MaxHeight = 25
};
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 56 ' ~2cm
renderer.RenderingOptions.MarginBottom = 56
renderer.RenderingOptions.MarginLeft = 56
renderer.RenderingOptions.MarginRight = 56
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.HtmlFragment = "<div style='text-align:center;'>Document Title</div>",
.MaxHeight = 40
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.HtmlFragment = "<div style='text-align:right;'>Page {page} of {total-pages}</div>",
.MaxHeight = 25
}
Ortak CSS Geçiş Sorunları
Sorun 1: CSS @page Çalışmıyor
IronPDF, sınırlı @page desteğine sahip Chromium kullanır. CSS kurallarını RenderingOptions'a dönüştürün.
Sorun 2: Sayfa Kenar Boşluğu Kutuları Eksik
CSS marj kutuları (@top-center, @bottom-right) Prince'e özeldir. Bunun yerine HtmlFooter kullanın.
Sorun 3: string-set/content Çalışmıyor
string-set CSS özelliği Prince'e özeldir. <title> etiketinden {html-title} placeholder kullanın:
<title>Chapter 1: Introduction</title>
<title>Chapter 1: Introduction</title>
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = "<div>{html-title}</div>"
};
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = "<div>{html-title}</div>"
};
Sorun 4: counter(pages) Hatalı
CSS sayaçları yerine IronPDF'nin {total-pages} placeholder'ını kullanın.
Performans Karşılaştırması
| İşlem | PrinceXML | IronPDF |
|---|---|---|
| Basit HTML | ~400ms | ~300ms |
| Karmaşık CSS | ~600ms | ~400ms |
| JavaScript sayfaları | Sınırlı | ~500ms |
| Büyük belgeler | ~1500ms | ~1000ms |
| Eşzamanlı (10) | ~4000ms | ~1500ms |
| Başlangıç yükü | ~200ms | ~50ms |
Geçiş Sonrası Yeni Özellikler
IronPDF'ye geçiş yaptıktan sonra PrinceXML'in sağlayamadığı yetenekler kazanırsınız:
PDF Birleştirme
var pdf1 = PdfDocument.FromFile("chapter1.pdf");
var pdf2 = PdfDocument.FromFile("chapter2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("complete_book.pdf");
var pdf1 = PdfDocument.FromFile("chapter1.pdf");
var pdf2 = PdfDocument.FromFile("chapter2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("complete_book.pdf");
Dim pdf1 = PdfDocument.FromFile("chapter1.pdf")
Dim pdf2 = PdfDocument.FromFile("chapter2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("complete_book.pdf")
Filigranlar
pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>");
pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>");
IRON VB CONVERTER ERROR developers@ironsoftware.com
Dijital İmzalar
var signature = new PdfSignature("certificate.pfx", "password");
pdf.Sign(signature);
var signature = new PdfSignature("certificate.pfx", "password");
pdf.Sign(signature);
Dim signature = New PdfSignature("certificate.pfx", "password")
pdf.Sign(signature)
Form Doldurma
var pdf = PdfDocument.FromFile("form.pdf");
pdf.Form.GetFieldByName("Name").Value = "John Doe";
pdf.SaveAs("filled_form.pdf");
var pdf = PdfDocument.FromFile("form.pdf");
pdf.Form.GetFieldByName("Name").Value = "John Doe";
pdf.SaveAs("filled_form.pdf");
Dim pdf = PdfDocument.FromFile("form.pdf")
pdf.Form.GetFieldByName("Name").Value = "John Doe"
pdf.SaveAs("filled_form.pdf")
Özellik Karşılaştırması Özeti
| Özellik | PrinceXML | IronPDF |
|---|---|---|
| Yerel .NET | Hayır | Evet |
| Harici Süreç | Gereklidir | Hayır |
| Asenkron Destek | Manuel sarma | Yerel async/await |
| CSS Paged Media | Desteklenen | RenderingOptions Aracılığıyla |
| CSS Izgarası | Evet | Evet |
| Flexbox | Evet | Evet |
| JavaScript | Sınırlı | Tam ES2024 |
| Oluşturma | Evet | Evet |
| Birleştirme | Hayır | Evet |
| Ayırma | Hayır | Evet |
| Düzenleme | Hayır | Evet |
| Filigranlar | Yalnızca CSS | HTML/CSS + API |
| Dijital İmzalar | Hayır | Evet |
| PDF/A | Evet | Evet |
| Şifreleme | Evet | Evet |
| Formlar | Hayır | Evet |
| NuGet Paketi | Hayır | Evet |
| Sunucu Kurulumu | Gereklidir | Hayır |
Geçiş Kontrol Listesi
Öncesi-Geçiş
- Tüm Prince komut satırı çağrılarını belirleyin
- Kullanılan CSS @page kurallarını belgeleyin
- Prince'e özgü CSS özelliklerini listele (
prince-*,string-set) - Herhangi bir PrinceJavaScriptfonksiyonunu not alın
- Kullanılan PDF özelliklerini belirleyin (şifreleme, metadata)
- ironpdf.com adresinden IronPDF lisans anahtarını edinin
Kod Değişiklikleri
PrinceXMLWrapperNuGet paketini kaldırınIronPdfNuGet paketini yükleyin- Ad alanı ithalatlarını güncelleyin
PrinceoluşturmasınıChromePdfRendererile değiştirinprince.Convert()öğesiniRenderHtmlFileAsPdf()veyaRenderHtmlAsPdf()ile değiştirin- Ayarlayıcı yöntemleri
RenderingOptionsözelliklerine dönüştürün - @page CSS'yi
RenderingOptionsöğesine taşıyın - Marj kutularını
HtmlFooterile değiştirin - CSS sayaçlarını
{total-pages}placeholder'larına dönüştürün - HTML dizgileri için geçici dosya işleme işlemlerini kaldırın
- Uygulama başlangıcında lisans başlatma ekle
Geçiş Sonrası
- HTML dosya dönüştürmesini test edin
- HTML dizesi dönüştürmesini test edin
- URL dönüştürmesini test edin
- Sayfa boyutlarının eşleştiğini doğrulayın
- Kenar boşluklarının eşleştiğini doğrulayın
- Başlık ve alt bilgileri test edin
- Sayfa numaralarını doğrulayın
- Şifreleme/güvenlik testini yapın
- Sunuculardan Prince kurulumunu kaldırın
- Dağıtım betiklerini güncelleyin
PrinceXML, ilgili sahibinin tescilli bir markasıdır. Bu site, YesLogic Pty tarafından onaylanmamış, desteklenmemiş veya sponsor olunmamıştır. Ltd. 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.)}]

