Altbilgi içeriğine atla
GEçIş KıLAVUZLARı

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:

  1. Tedarikçi ve Köken: DuoDimension Software tarafından yayımlandı (duodimension.com), kamu yol haritası ve GitHub depoları olmayan küçük bir ISV.

  2. 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.

  3. 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ış.

  4. Dökümantasyona Bölünmüş Dar Arayüz: Genel API temelde DuoDimension.HtmlToPdf, OpenHTML(...) ve SavePDF(...) ile birlikte. Filigranlama, şifreleme, imzalama, form doldurma, metin çıkarma veya PDF birleştirme için belgelenmiş yerel API yoktur.

  5. 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.

  6. 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

  1. .NET Ortamı: .NET Framework 4.6.2+ veya .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet Erişimi: NuGet paketlerini yükleyebilme
  3. 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
SHELL

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"
$vbLabelText   $csharpLabel

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" .
SHELL

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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()
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

Ö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.
  • IronPdf NuGet paketini yükleyin: dotnet add package IronPdf
  • Ad alanı ithalatlarını using DuoDimension; yerine using IronPdf; ile güncelleyin

Kod Değişiklikleri

Başlangıçta lisans anahtarı yapılandırmasını ekleyin

  • DuoDimension.HtmlToPdf yerine ChromePdfRenderer koyun
  • OpenHTML(path) + SavePDF(path) yerine RenderHtmlFileAsPdf(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) yerine RenderUrlAsPdf(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ı RenderingOptions ile açıkça ayarlayın (PDF Duo eşdeğeri yoktur)
  • SavePDF() yerine SaveAs() 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

Lütfen dikkate alınPDF Duo .NET, ilgili sahibinin kayıtlı ticari markasıdır. Bu site, DuoDimension ile bağlantılı, onaylanmış veya desteklenmiş 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ı...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara