PDF Duo'dan IronPDF'e C# ile Nasıl Geçilir
PDF Duo .NET'ten IronPDF'e geçiş, .NET PDF iş akışınızı niş, yetersiz belgeli ve son zamanlarda sürüm çıkarmayan bir kütüphaneden, istikrarlı, iyi belgelenmiş ve aktif bir şekilde sürdürülen bir çözüme taşır. Bu kılavuz, PDF Duo'nun belgelenmeyen API'sinin kapsamadığı işlevlere erişim sağlanırken, etkin değil bir bileşene bağlı olmanın risklerini ele alan adım adım bir geçiş yolu sunar.
Neden PDF Duo'dan IronPDF'e Geçiş Yapmalıyız
PDF Duo Risk Sorunu
PDF Duo .NET (DuoDimension Software), .NET için niş bir HTML-to-PDF bileşenidir. Kendi içinde bir DLL arayan ekipler için cazip olsa da, onu mevcut üretim uygulamaları için zayıf bir uyum yapan birkaç özellik vardır:
-
Tedarikçi ve Köken: DuoDimension Software tarafından yayımlandı (duodimension.com), kamu yol haritası ve GitHub depoları olmayan küçük bir ISV.
-
Seyrek Belgeler: Bir tedarikçi ürün sayfası, birkaç örnek snippet ve 2010 basın bülteni. API referans sitesi yok ve anlamlı bir Stack Overflow varlığı yok.
-
Etkili Bir Şekilde Terk Edilmiş: Son halka sürümü v2.4, 10 Aralık 2010 tarihlidir – yaklaşık 15 yıldır yeni bir sürüm çıkmamış.
-
Dökümantasyona Bölünmüş Dar Arayüz: Genel API temelde
DuoDimension.HtmlToPdf,OpenHTML(...)veSavePDF(...)ile birlikte. Filigranlama, şifreleme, imzalama, form doldurma, metin çıkarma veya PDF birleştirme için belgelenmiş yerel API yoktur. -
Render Motoru Açıklanmamış: Satıcı materyalleri, Office veya Acrobat'a bağımlı olmayan kendine yeten bir bileşen tanımlıyor, ancak hangi HTML/CSS motorunun kullanıldığını yayımlamıyor. CSS3, modern JavaScript, web fontları ve flex/grid düzenleme iddia edilmez.
- Pre-modern .NET Hedefleme: Belgelenmiş destek, Windows XP / Vista / 7 / 2000 / 2003'te .NET Framework 1.1'den 3.5'e kadardır. .NET Framework 4.x, .NET Core, .NET 5+, Linux veya Docker için belgelenmiş destek yok.
PDF Duo ve IronPDF Karşılaştırması
| Aspekt | PDF Duo .NET | IronPDF |
|---|---|---|
| Son sürüm | v2.4 (Aralık 2010) | Aktif, düzenli sürümler |
| Dağıtım | duodimension.com'dan DLL indirme (NuGet yok) | NuGet IronPdf |
| Çalışma zamanı desteği | .NET Framework 1.1 – 3.5, sadece Windows | .NET FX 4.6.2+, .NET 6/7/8/9/10, Linux, macOS, Docker |
| Dokümantasyon | Bir tedarikçi ürün sayfası | Kapsamlı belgeler + API referansı |
| Destek | Hiç görülmedi | Profesyonel destek ekibi |
| Topluluk | İhmal edilebilir | 41M+ NuGet indirme (Iron Software yığını) |
| İşleme | Motor açıklanmamış | Modern Krom |
| Özellikler | Sadece HTML-to-PDF | HTML-to-PDF, birleştirme, güvenlik, imzalar, OCR, formlar, filigranlar |
| Lisanslama | Tedarikçi fiyatlandırma sayfası başına | Ticari, süresiz veya abonelik |
Modern .NET'te çalışan ekipler için IronPDF, stabil bir temel sunar ve aktif geliştirme ve kapsamlı belgelerle, en son v2.4 sürümü Aralık 2010'da yayımlanmış bir bileşenin yerine geçen bir çözüm 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
Paket / Referans Değişiklikleri
PDF Duo .NET NuGet üzerinden dağıtılmaz. Onu kaldırmak manuel bir adımdır:
# In Visual Studio: References -> remove PDFDuo.dll (and any associated
# PDF Duo files) and delete the vendored binary from your /lib folder.
# Install IronPDF
dotnet add package IronPdf
# In Visual Studio: References -> remove PDFDuo.dll (and any associated
# PDF Duo files) and delete the vendored binary from your /lib folder.
# Install IronPDF
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"
PDF Duo Kullanımını Belirleme
# Find all PDF Duo references
grep -r "DuoDimension\|HtmlToPdf\b\|OpenHTML\|SavePDF" --include="*.cs" .
# Find all PDF Duo references
grep -r "DuoDimension\|HtmlToPdf\b\|OpenHTML\|SavePDF" --include="*.cs" .
API Referansı
Satıcının dokümante edilmiş kök ad alanı DuoDimension. Genel yüzey temelde HtmlToPdf sınıfı ile OpenHTML(...) ve SavePDF(...)'dir. Aşağıdaki alt ad alanları IronPDF'in yapısını yansıtıyor;PDF Duo .NETbelgelenmiş alt ad alanları dokümanı yok.
Ad Alanı Değişiklikleri
| PDF Duo .NET | IronPDF |
|---|---|
using DuoDimension; |
using IronPdf; |
| (belgelenmiş alt ad alanları yok) | using IronPdf.Rendering; |
HTML'den PDF'ye Dönüşüm Eşlemeleri
| PDF Duo .NET | IronPDF |
|---|---|
new DuoDimension.HtmlToPdf() |
new ChromePdfRenderer() |
conv.OpenHTML(htmlFile); conv.SavePDF(path); |
renderer.RenderHtmlFileAsPdf(htmlFile).SaveAs(path) |
conv.OpenHTML(url); conv.SavePDF(path); |
renderer.RenderUrlAsPdf(url).SaveAs(path) |
(string'i geçici .html dosyasına yazdır, sonra OpenHTML) |
renderer.RenderHtmlAsPdf(html).SaveAs(path) |
Sayfa Yapılandırma Eşlemeleri
DuoDimension.HtmlToPdf, kağıt boyutu, yönlendirme veya kenar boşlukları için bir ayar nesnesi dökümante etmez. Aşağıdaki IronPDF sütunu, RenderingOptions eşdeğerlerini açıkça gösterir.
| PDF Duo .NET | IronPDF |
|---|---|
| (belgelenmiş sayfa boyut seçeneği yok) | RenderingOptions.PaperSize = PdfPaperSize.A4 |
| (belgelenmiş sayfa boyut seçeneği yok) | RenderingOptions.PaperSize = PdfPaperSize.Letter |
| (belgelenmiş yönlendirme seçeneği yok) | RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape |
| (belgelenmiş kenar boşlukları nesnesi yok) | Bireysel kenar boşluğu özellikleri |
Kenar Boşlukları Eşlemeleri
| PDF Duo .NET | IronPDF |
|---|---|
| (belgelenmiş kenar boşlukları nesnesi yok) | Bireysel özellikler |
| (eşdeğeri yoktur) | RenderingOptions.MarginTop |
| (eşdeğeri yoktur) | RenderingOptions.MarginRight |
| (eşdeğeri yoktur) | RenderingOptions.MarginBottom |
| (eşdeğeri yoktur) | RenderingOptions.MarginLeft |
Belge İşlemleri Eşlemeleri
PDF Duo .NET yalnızca bir HTML-to-PDF dönüştürücüdür. Satıcı ürün sayfası, DuoDimension.HtmlToPdf üzerinde yükleme, bayt veya birleştirme API'lerini dökümante etmez. Aşağıdaki satırlar, PDF Duo kullanırken komşu kütüphanelerde (2010 dönem projelerinde yaygın olarak iTextSharp 4.x) olan kütüphane gereksinimleridir.
| Gereksinim | PDF Duo .NET | IronPDF |
|---|---|---|
| Mevcut PDF'yi yükle | yerel değil — iTextSharp 4.x veya benzeriyle eşleştirin | PdfDocument.FromFile(path) |
| PDF kaydet | conv.SavePDF(path) |
pdf.SaveAs(path) |
| PDF baytlarını alın | not native | pdf.BinaryData |
| PDF'leri birleştir | yerel değil — iTextSharp 4.x veya benzeriyle eşleştirin | PdfDocument.Merge(pdf1, pdf2) |
PDF Duo'nun Belgelenmeyen API'sinde Olmayan Yeni Özellikler
| Özellik | IronPDF |
|---|---|
| Başlıklar/Altbilgiler | RenderingOptions.HtmlHeader, HtmlFooter |
| Sayfa numaraları | {page}, {total-pages} yer tutucular |
| Filigranlar | pdf.ApplyWatermark(html) |
| Parola koruması | pdf.SecuritySettings |
| Form doldurma | pdf.Form.Fields |
| Dijital imzalar | pdf.SignWithFile() |
| Metin çıkarma | pdf.ExtractAllText() |
| PDF'den Görüntüye | pdf.RasterizeToImageFiles() |
Kod Göç Örnekleri
Örnek 1: HTML'den PDF'ye Dönüştürme
Önce (PDF Duo):
//PDF Duo .NETis not on NuGet — reference PDFDuo.dll from the vendor download.
using DuoDimension;
using System;
using System.IO;
class Program
{
static void Main()
{
// OpenHTML accepts a file path, URL, or stream; there is no documented
// "convert HTML string" call, so write the markup to a temp file first.
var tempHtml = Path.GetTempFileName() + ".html";
File.WriteAllText(tempHtml, "<h1>Hello World</h1><p>This is a PDF document.</p>");
var conv = new HtmlToPdf();
conv.OpenHTML(tempHtml);
conv.SavePDF("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
//PDF Duo .NETis not on NuGet — reference PDFDuo.dll from the vendor download.
using DuoDimension;
using System;
using System.IO;
class Program
{
static void Main()
{
// OpenHTML accepts a file path, URL, or stream; there is no documented
// "convert HTML string" call, so write the markup to a temp file first.
var tempHtml = Path.GetTempFileName() + ".html";
File.WriteAllText(tempHtml, "<h1>Hello World</h1><p>This is a PDF document.</p>");
var conv = new HtmlToPdf();
conv.OpenHTML(tempHtml);
conv.SavePDF("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
Imports DuoDimension
Imports System
Imports System.IO
Module Program
Sub Main()
' OpenHTML accepts a file path, URL, or stream; there is no documented
' "convert HTML string" call, so write the markup to a temp file first.
Dim tempHtml As String = Path.GetTempFileName() & ".html"
File.WriteAllText(tempHtml, "<h1>Hello World</h1><p>This is a PDF document.</p>")
Dim conv As New HtmlToPdf()
conv.OpenHTML(tempHtml)
conv.SavePDF("output.pdf")
Console.WriteLine("PDF created successfully!")
End Sub
End Module
Sonrası (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully!")
End Sub
End Class
Buradaki temel fark, API desenidir. PDF Duo'nun HtmlToPdf.OpenHTML(...) bir dosya yolu, URL veya akış kabul eder — bir 'bu HTML string'i işleme' çağrısını dökümante etmez, bu yüzden ekipler önce işaretlemeyi geçici bir dosyaya yazarlar ve sonra diske yazmak için SavePDF(path) çağrısını yaparlar. IronPDF'nin ChromePdfRenderer.RenderHtmlAsPdf() string'i doğrudan işler ve ardından SaveAs() ile kaydettiğiniz bir PdfDocument nesnesi döndürür.
Bu nesneye yönelik yaklaşım, PDF'yi kaydetmeden önce manipüle etmenizi sağlar (filigran ekle, belgeleri birleştir, güvenlik uygulayın, metin çıkarın) — bunların hiçbiri PDF Duo .NET'in belgelenmiş API'sinin parçası değildir. HTML'den PDF'ye belgelemeyi ek işleme seçenekleri için inceleyin.
Örnek 2: URL'den PDF'ye Dönüştürme
Önce (PDF Duo):
//PDF Duo .NETis not on NuGet — reference PDFDuo.dll from the vendor download.
using DuoDimension;
using System;
class Program
{
static void Main()
{
var conv = new HtmlToPdf();
conv.OpenHTML("https://www.example.com");
conv.SavePDF("webpage.pdf");
Console.WriteLine("Webpage converted to PDF!");
}
}
//PDF Duo .NETis not on NuGet — reference PDFDuo.dll from the vendor download.
using DuoDimension;
using System;
class Program
{
static void Main()
{
var conv = new HtmlToPdf();
conv.OpenHTML("https://www.example.com");
conv.SavePDF("webpage.pdf");
Console.WriteLine("Webpage converted to PDF!");
}
}
Imports DuoDimension
Imports System
Module Program
Sub Main()
Dim conv As New HtmlToPdf()
conv.OpenHTML("https://www.example.com")
conv.SavePDF("webpage.pdf")
Console.WriteLine("Webpage converted to PDF!")
End Sub
End Module
Sonrası (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
Console.WriteLine("Webpage converted to PDF!");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
Console.WriteLine("Webpage converted to PDF!");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("webpage.pdf")
Console.WriteLine("Webpage converted to PDF!")
End Sub
End Class
PDF Duo, URL dönüştürme için DuoDimension.HtmlToPdf sınıfını kullanır, URL'yi OpenHTML(...)'e, ardından SavePDF(path)'a göndererek. IronPDF, adanmış RenderUrlAsPdf(url) yöntemi ile kullanır ve bir PdfDocument nesnesi döndürür.
Önemli bir avantaj, IronPDF'in Krom tabanlı render motoru modern CSS3 ve JavaScript desteği sunarken, PDF Duo'nun satıcı materyalleri hangi HTML/CSS motorunun kullanıldığını açıklamaz. URL'den PDF'ye dönüşüm hakkında daha fazla bilgi edinin.
Örnek 3: PDF Birleştirme
Önce (PDF Duo):
PDF Duo .NET yerel bir PDF-birleştirme API'si sağlamaz. Belgelenen yüzey yalnızca HTML-to-PDF, ekiplerin genellikle her PDF'yi PDF Duo ile dönüştürdükleri ve ardından 2010'lu yıllardaki projelerde yaygın olan iTextSharp 4.x gibi ayrı bir kütüphane ile ilişkilendirdikleri anlamına gelir:
//PDF Duo .NETis not on NuGet — reference PDFDuo.dll from the vendor download.
using DuoDimension;
using System;
class Program
{
static void Main()
{
// Render each source HTML to its own PDF
var conv = new HtmlToPdf();
conv.OpenHTML("page1.html");
conv.SavePDF("document1.pdf");
conv = new HtmlToPdf();
conv.OpenHTML("page2.html");
conv.SavePDF("document2.pdf");
// Merging into a single PDF requires another library (e.g., iTextSharp).
Console.WriteLine("PDF Duo has no native merge — combine output with another library.");
}
}
//PDF Duo .NETis not on NuGet — reference PDFDuo.dll from the vendor download.
using DuoDimension;
using System;
class Program
{
static void Main()
{
// Render each source HTML to its own PDF
var conv = new HtmlToPdf();
conv.OpenHTML("page1.html");
conv.SavePDF("document1.pdf");
conv = new HtmlToPdf();
conv.OpenHTML("page2.html");
conv.SavePDF("document2.pdf");
// Merging into a single PDF requires another library (e.g., iTextSharp).
Console.WriteLine("PDF Duo has no native merge — combine output with another library.");
}
}
Imports DuoDimension
Imports System
Module Program
Sub Main()
' Render each source HTML to its own PDF
Dim conv As New HtmlToPdf()
conv.OpenHTML("page1.html")
conv.SavePDF("document1.pdf")
conv = New HtmlToPdf()
conv.OpenHTML("page2.html")
conv.SavePDF("document2.pdf")
' Merging into a single PDF requires another library (e.g., iTextSharp).
Console.WriteLine("PDF Duo has no native merge — combine output with another library.")
End Sub
End Module
Sonrası (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully!");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully!");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
Console.WriteLine("PDFs merged successfully!")
End Sub
End Class
Bu örnek, temel bir mimari farkı gösterir. PDF Duo .NET'in hiç birleştirme API'si yoktur — geçmişte PDF Duo iş akışında birleştirme, genellikle iTextSharp 4.x gibi ikinci bir kütüphane ile eşleştirilmek anlamına geliyordu.
IronPDF, bunu tek bir bağımlılıkta birleştirir: Her PDF'yi PdfDocument.FromFile() kullanarak PdfDocument olarak yükleyin, ardından bunları birleştirmek için statik PdfDocument.Merge() yöntemini kullanın. Bu, ayrı olarak SaveAs() ile kaydettiğiniz yeni bir PdfDocument nesnesi döndürür.
IronPDF yaklaşımı, birleşmeden önce herhangi bir PDF'yi manipüle etmenize, birleşik sonucu filigranlamanıza, güvenlik ayarlarını uygulamanıza ve daha fazlasına izin verir. Birçok dosyayı birleştirmek için LINQ kullanabilirsiniz:
var paths = new[] { "document1.pdf", "document2.pdf", "document3.pdf" };
var pdfs = paths.Select(PdfDocument.FromFile).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
var paths = new[] { "document1.pdf", "document2.pdf", "document3.pdf" };
var pdfs = paths.Select(PdfDocument.FromFile).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
Dim paths = {"document1.pdf", "document2.pdf", "document3.pdf"}
Dim pdfs = paths.Select(AddressOf PdfDocument.FromFile).ToList()
Dim merged = PdfDocument.Merge(pdfs)
merged.SaveAs("merged.pdf")
Daha fazla bilgi edinin PDF birleştirme ve bölme.
Geçiş Sonrası Yeni Özellikler
IronPDF'e geçtikten sonra, PDF Duo'nun sağlayamayacağı yetenekler kazanırsınız:
Sayfa Numaralı Başlıklar ve Alt Bilgiler
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
MaxHeight = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
MaxHeight = 25
};
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
MaxHeight = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
MaxHeight = 25
};
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
.MaxHeight = 25
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
.MaxHeight = 25
}
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("report.pdf")
PDF Duo başlıkları veya altbilgileri desteklemez — eşdeğer işlevsellik yoktur. IronPDF, dinamik içerik, örneğin sayfa numaraları gibi yerleşik yer tutucular ile tam HTML/CSS desteği sağlar. Başlıklar ve Altbilgiler kılavuzu inceleyin.
Filigranlar
using IronPdf;
using IronPdf.Editing;
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark(
"<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>",
45,
VerticalAlignment.Middle,
HorizontalAlignment.Center);
pdf.SaveAs("watermarked.pdf");
using IronPdf;
using IronPdf.Editing;
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark(
"<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>",
45,
VerticalAlignment.Middle,
HorizontalAlignment.Center);
pdf.SaveAs("watermarked.pdf");
Imports IronPdf
Imports IronPdf.Editing
Dim pdf = PdfDocument.FromFile("document.pdf")
pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>", 45, VerticalAlignment.Middle, HorizontalAlignment.Center)
pdf.SaveAs("watermarked.pdf")
PDF Duo filigranları desteklemiyor. IronPDF, tam CSS stil desteği ile HTML tabanlı filigranlar sağlar.
Şifre Koruma
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("secured.pdf");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("secured.pdf");
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SecuritySettings.UserPassword = "userpassword"
pdf.SecuritySettings.OwnerPassword = "ownerpassword"
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights
pdf.SaveAs("secured.pdf")
PDF Duo, parola korumasını veya güvenlik ayarlarını desteklemiyor.
Metin Çıkarma
var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();
var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();
Dim pdf = PdfDocument.FromFile("document.pdf")
Dim text As String = pdf.ExtractAllText()
PDF Duo, metin çıkartmayı desteklemiyor.
Kritik Taşıma Notları
PDF Duo'nun HtmlToPdf üzerinde Sayfa Düzeni Seçenekleri Yok
DuoDimension.HtmlToPdf, kağıt boyutu, yönlendirme veya kenar boşluklarını kapsayan bir ayar nesnesini dökümante etmez. IronPDF, onları RenderingOptions üzerinde açıkça ortaya çıkarır:
// PDF Duo: no documented per-instance settings — OpenHTML / SavePDF only.
// IronPDF:
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginRight = 15;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 15;
// PDF Duo: no documented per-instance settings — OpenHTML / SavePDF only.
// IronPDF:
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginRight = 15;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 15;
' PDF Duo: no documented per-instance settings — OpenHTML / SavePDF only.
' IronPDF:
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginRight = 15
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 15
Kaydetme Yöntemi Adlandırma
Dosyayı yazmak için farklı metod isimleri:
// PDF Duo:
conv.SavePDF("output.pdf");
// IronPDF:
pdf.SaveAs("output.pdf");
// PDF Duo:
conv.SavePDF("output.pdf");
// IronPDF:
pdf.SaveAs("output.pdf");
' PDF Duo:
conv.SavePDF("output.pdf")
' IronPDF:
pdf.SaveAs("output.pdf")
Mevcut PDF'ler Yükleme
PDF Duo .NET yalnızca PDF yazar — 'mevcut PDF' yükleme çağrısı belgelenmez. Mevcut bir PDF üzerinde çalışabilmek için IronPDF'e (veya başka bir kütüphaneye) geçmelisiniz:
// PDF Duo: no equivalent.
// IronPDF:
var pdf = PdfDocument.FromFile("document.pdf");
// PDF Duo: no equivalent.
// IronPDF:
var pdf = PdfDocument.FromFile("document.pdf");
Imports IronPdf
Dim pdf = PdfDocument.FromFile("document.pdf")
HTML String Girişi
PDF Duo'nun OpenHTML, bir 'bu HTML string'i işleme' çağrısını dökümante etmez; takımlar, önce işaretlemeyi geçici bir dosyaya yazar.IronPDF stringleri doğrudan işler:
// PDF Duo:
File.WriteAllText("temp.html", html);
var conv = new DuoDimension.HtmlToPdf();
conv.OpenHTML("temp.html");
conv.SavePDF("output.pdf");
// IronPDF:
var renderer = new ChromePdfRenderer();
renderer.RenderHtmlAsPdf(html).SaveAs("output.pdf");
// PDF Duo:
File.WriteAllText("temp.html", html);
var conv = new DuoDimension.HtmlToPdf();
conv.OpenHTML("temp.html");
conv.SavePDF("output.pdf");
// IronPDF:
var renderer = new ChromePdfRenderer();
renderer.RenderHtmlAsPdf(html).SaveAs("output.pdf");
' PDF Duo:
File.WriteAllText("temp.html", html)
Dim conv = New DuoDimension.HtmlToPdf()
conv.OpenHTML("temp.html")
conv.SavePDF("output.pdf")
' IronPDF:
Dim renderer = New ChromePdfRenderer()
renderer.RenderHtmlAsPdf(html).SaveAs("output.pdf")
Özellik Karşılaştırması
| Özellik | PDF Duo .NET | IronPDF |
|---|---|---|
| HTML'den PDF'ye | Evet (motor açıklanmamış) | Tam CSS3, JavaScript |
| URL'yi PDF'ye çevir | Evet | Kimlik doğrulama desteği ile tam |
| PDF Birleştirme | Belgelenmiş API'de yok | Evet |
| Başlıklar/Altbilgiler | Belgelenmiş API'de yok | Tam HTML desteği |
| Sayfa Numaraları | Belgelenmiş API'de yok | Yerleşik yer tutucular |
| Filigranlar | Belgelenmiş API'de yok | HTML tabanlı |
| Şifre Koruması | Belgelenmiş API'de yok | Tam güvenlik seçenekleri |
| Form Doldurma | Belgelenmiş API'de yok | Evet |
| Dijital İmzalar | Belgelenmiş API'de yok | Evet |
| Metin Çıkarma | Belgelenmiş API'de yok | Evet |
| PDF'den Görüntüye | Belgelenmiş API'de yok | Evet |
| Asenkron Destek | Belgelenmiş API'de yok | Tam async/await |
| .NET Core/5+ | Belgelenmiş çalışma zamanı listesinde yok | Desteklenen |
Geçiş Kontrol Listesi
Öncesi-Geçiş
- Kod tabanında tüm PDF Duo referanslarını bulun
- Mevcut ayarları belgeleyin (sayfa boyutu, kenar boşlukları, vb.)
- Kullanılan tüm PDF işlemlerini listeleyin
- Yeni özellikler için fırsatları tanımlayın (başlıklar, filigranlar, güvenlik) -IronPDF lisans anahtarını edinin
Paket Değişiklikleri
- Proje referansını
PDFDuo.dll'ten kaldırın (PDF Duo .NET NuGet'te değildir) ve satıcıya ait ikili dosyayı silin. IronPdfNuGet paketini yükleyin:dotnet add package IronPdf- Ad alanı ithalatlarını
using DuoDimension;yerineusing IronPdf;ile güncelleyin
Kod Değişiklikleri
Başlangıçta lisans anahtarı yapılandırmasını ekleyin
DuoDimension.HtmlToPdfyerineChromePdfRendererkoyunOpenHTML(path) + SavePDF(path)yerineRenderHtmlFileAsPdf(path).SaveAs(path)koyun- HTML string'leri için geçici dosya saptırmasını
RenderHtmlAsPdf(html).SaveAs(path)ile değiştirin OpenHTML(url) + SavePDF(path)yerineRenderUrlAsPdf(url).SaveAs(path)koyun- Herhangi bir harici birleştirme adımını
PdfDocument.Merge()ile değiştirin - Sayfa boyutunu ve kenar boşluklarını
RenderingOptionsile açıkça ayarlayın (PDF Duo eşdeğeri yoktur) SavePDF()yerineSaveAs()koyun- Herhangi bir 'mevcut PDF'yi yükleme' iş akışı için
PdfDocument.FromFile()kullanın (PDF Duo eşdeğeri yoktur)
Geçiş Sonrası
- PDF çıkışını karşılaştırmak için regresyon testlerini çalıştırın
- Sayfa boyutları ve kenar boşluklarının eşleştiğini doğrulayın
- Karmaşık HTML/CSS ile test yapın (IronPDF'in modern motoru bunu daha iyi işleyebilir)
- Yeni özellikler ekleyin (başlıklar, altbilgiler, filigranlar, güvenlik)
- Belgeleri güncelleyin

