跳至頁尾內容
影片

如何使用 C# 在 PDF 文件中嵌入 UTF-8 字元

從PDF Duo .NET遷移到IronPDF將您的.NET PDF工作流從一個小眾、文件稀少且沒有最新發行的程式庫轉移到一個穩定、文件詳實並積極維護的解決方案。 本指南提供了一個逐步的遷移路徑,解決了依賴非活動組件的風險,並獲得PDF Duo文件API未涵蓋的功能的存取權限。

為何從PDF Duo遷移到IronPDF

PDF Duo風險問題

PDF Duo .NET(DuoDimension Software)是一個小眾的HTML到PDF的.NET組件。 儘管它可能吸引那些尋求自成一體DLL的團隊,但有幾個特點使其不適合當前的生產應用:

  1. 供應商和來源:由DuoDimension Software(duodimension.com)發布,一個沒有公開路線圖和沒有GitHub倉庫的小ISV。

  2. 文件稀少:一個供應商產品頁、一小部分範例片段和一篇2010年的新聞稿。 沒有API參考網站,也沒有有意義的Stack Overflow存在。

  3. 基本被遺棄:最後一次公開發布是v2.4,日期是2010年12月10日——大約15年沒有新版本。

  4. 狹窄的文件表面:公共API實質上是SavePDF(...)一起。 沒有為水印、加密、簽名、表單填寫、文字提取或PDF合併提供本地API文件。

  5. 未披露的渲染引擎:供應商材料描述了一個不依賴於Office或Acrobat的自成一體的組件,但不知道使用了什麼HTML/CSS引擎。 未聲稱支持CSS3、現代JavaScript、網頁字體,以及flex/grid佈局。

  6. 預現代.NET目標:文件支持在Windows XP / Vista / 7 / 2000 / 2003上運行的.NET Framework 1.1至3.5。沒有文件記錄支持.NET Framework 4.x、.NET Core、.NET 5+、Linux或Docker。

PDF Duo與IronPDF比較

方面 PDF Duo .NET IronPDF
最後發行 v2.4(2010年12月) 主動、定期發布
分發 dll下載自duodimension.com(無NuGet) NuGet IronPdf
運行時支持 .NET Framework 1.1 – 3.5,僅限Windows .NET FX 4.6.2+、.NET 6/7/8/9/10、Linux、macOS、Docker
文件 一個供應商產品頁 詳盡的文件 + API參考
支持 無可見 專業支持團隊
社區支持 微不足道 41M+次NuGet下載(Iron Software堆棧)
渲染 未披露引擎 現代 Chromium
功能 只有HTML到PDF HTML到PDF、合併、安全性、簽名、OCR、表單、水印
授權 按供應商定價頁 商用,永久或訂閱

對於現代.NET上的團隊來說,IronPDF提供了一個穩定的基礎,具有積極的開發和詳盡的文件,而不是最後在2010年12月發布的v2.4的組件。


開始之前

前提條件

  1. .NET環境:.NET Framework 4.6.2+ 或.NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet存取: 有能力安裝NuGet套件
  3. IronPDF授權:ironpdf.com獲取您的授權金鑰

包 / 參考變更

PDF Duo .NET 不透過NuGet分發。 移除了它是一個手動步驟:

# 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

授權配置

// 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使用情況

# 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參考

供應商的已記錄的根名稱空間是DuoDimension。 公共表面實際上是SavePDF(...)一起。 下方顯示的子名稱空間反映了IronPDF的結構; PDF Duo .NET不記錄子名稱空間。

名稱空間變更

PDF Duo .NET IronPDF
using DuoDimension; using IronPdf;
(無文件子名稱空間) using IronPdf.Rendering;

HTML到PDF轉換映射

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)
(將字串寫到臨時.html,然後OpenHTML) renderer.RenderHtmlAsPdf(html).SaveAs(path)

頁面配置映射

DuoDimension.HtmlToPdf沒有記錄紙張大小、方向或邊距的設置物件。 下面的IronPDF專欄顯示了明確的RenderingOptions等效項。

PDF Duo .NET IronPDF
(無文件頁面大小選項) RenderingOptions.PaperSize = PdfPaperSize.A4
(無文件頁面大小選項) RenderingOptions.PaperSize = PdfPaperSize.Letter
(無文件方向選項) RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
(無文件邊距物件) 個別邊距屬性

邊距映射

PDF Duo .NET IronPDF
(無文件邊距物件) 個別屬性
(無等價物) RenderingOptions.MarginTop
(無等價物) RenderingOptions.MarginRight
(無等價物) RenderingOptions.MarginBottom
(無等價物) RenderingOptions.MarginLeft

文件操作映射

PDF Duo .NET僅是HTML到PDF的轉換器。 供應商產品頁不記錄DuoDimension.HtmlToPdf上的載入、字節或合併API。 以下行顯示了團隊在使用PDF Duo時通常在相鄰庫中尋找的東西,IronPDF呼叫將其整合到了這項工作。

需要 PDF Duo .NET IronPDF
載入現有 PDF 非本地的——與iTextSharp 4.x或類似的配對 PdfDocument.FromFile(path)
保存PDF conv.SavePDF(path) pdf.SaveAs(path)
獲取PDF字節 not native pdf.BinaryData
合併PDF 非本地的——與iTextSharp 4.x或類似的配對 PdfDocument.Merge(pdf1, pdf2)

PDF Duo文件API中不可用的新功能

功能 IronPDF
頁眉/頁腳 RenderingOptions.HtmlHeader, HtmlFooter
頁碼 {page}, {total-pages} 占位符
浮水印 pdf.ApplyWatermark(html)
密碼保護 pdf.SecuritySettings
表單填寫 pdf.Form.Fields
數位簽名 pdf.SignWithFile()
文字提取 pdf.ExtractAllText()
PDF到圖像 pdf.RasterizeToImageFiles()

程式碼遷移範例

範例1:HTML轉PDF轉換

之前(PDF Duo):

// PDF Duo .NET is 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 .NET is 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

之後(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

此處的基本區別是API模式。 PDF Duo的SavePDF(path)寫入磁碟。 IronPDF的SaveAs()保存它。

這種面向物件的方法提供了額外的靈活性:您可以在保存之前操作PDF(新增水印、合併文件、增加安全性、提取文字)——這些都是PDF Duo .NET的文件API的一部分。 查看HTML到PDF文件以獲取其他渲染選項。

範例2:URL轉PDF轉換

之前(PDF Duo):

// PDF Duo .NET is 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 .NET is 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

Class Program
    Shared 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 Class
$vbLabelText   $csharpLabel

之後(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使用相同的SavePDF(path)進行URL轉換。 IronPDF使用PdfDocument物件。

一個關鍵優勢是IronPDF基於Chromium的渲染引擎提供了現代的CSS3和JavaScript支持,而PDF Duo的供應商材料未公開所使用的HTML/CSS引擎。 了解有關URL到PDF轉換的更多資訊。

範例3:PDF合併

之前(PDF Duo):

PDF Duo .NET不提供本地PDF合併API。 記錄表面僅是HTML到PDF,因此需要合併的團隊通常使用PDF Duo呈現每個PDF,然後使用另一個程式庫(通常是2010年代項目中的iTextSharp 4.x)將它們拼接在一起:

// PDF Duo .NET is 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 .NET is 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

之後(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

此範例顯示了一個基本的架構差異。 PDF Duo .NET完全沒有合併API—在PDF Duo工作流程中合併歷史上意味著將其與其他程式庫如iTextSharp 4.x配對。

IronPDF將此整合為一個單一的依賴項:用PdfDocument.Merge()方法將其合併。 這會返回一個新SaveAs()單獨保存。

IronPDF的方法還允許您在合併之前操作任何PDF,向合併的結果新增水印,應用安全性設置等等。 對於合併多個文件,您可以使用LINQ:

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

了解更多合併和拆分PDF的資訊。


遷移後的新能力

遷移到IronPDF後,您可以獲得PDF Duo無法提供的能力:

帶有頁碼的頁眉和頁腳

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不支持頁眉或頁腳——沒有相對應的功能。 IronPDF提供完整的HTML/CSS支持,具有用於動態內容如頁碼的內建佔位符。 請參閱頁眉和頁腳指南

水印

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不支持水印。 IronPDF提供基於HTML的水印,支持完整的CSS樣式。

密碼保護

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不支持密碼保護或安全設置。

文字提取

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不支持文字提取。


關鍵遷移注意事項

在PDF Duo的HtmlToPdf上沒有頁面佈局選項

DuoDimension.HtmlToPdf未記錄涵蓋紙張大小、方向或邊距的設置物件。 IronPDF在RenderingOptions上明確地暴露了它們:

// 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

保存方法命名

為寫入文件提供不同的方法名稱:

// 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

載入現有PDF

PDF Duo .NET僅編寫PDF—沒有記錄的"載入現有PDF"調用。 要操作現有的PDF,您必須轉向IronPDF(或其他程式庫):

// 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字串輸入

PDF Duo的OpenHTML不記錄"渲染此HTML字串"的調用; 團隊先將標記寫到一個臨時文件中。IronPDF直接渲染字串:

// 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

功能比較

功能 PDF Duo .NET IronPDF
HTML轉PDF 是的(未披露引擎) 完整CSS3,JavaScript
URL到PDF 完整,具有身份驗證支持
PDF合併 不在記錄API中
頁眉/頁腳 不在記錄API中 完整的HTML支持
頁碼 不在記錄API中 內建佔位符
浮水印 不在記錄API中 基於HTML
密碼保護 不在記錄API中 完整的安全選項
表單填寫 不在記錄API中
數位簽名 不在記錄API中
文字提取 不在記錄API中
PDF轉圖像 不在記錄API中
異步支援 不在記錄API中 完全支持 async/await
.NET Core/5+ 不在記錄運行時列表中 支援

遷移檢查表

遷移前

  • 在程式碼庫中找到所有PDF Duo引用
  • 記錄當前設置(頁面大小,邊距等)
  • 列出使用的所有PDF操作
  • 確定新功能的機會(頁眉、水印、安全)
  • 獲得IronPDF授權金鑰

套件變更

  • 移除項目對PDFDuo.dll的引用(PDF Duo .NET不在NuGet上)並刪除受贈的二進制文件
  • 安裝dotnet add package IronPdf
  • 將名稱空間導入從using IronPdf;

程式碼變更

  • 在啟動時加入授權金鑰配置
  • ChromePdfRenderer
  • RenderHtmlFileAsPdf(path).SaveAs(path)
  • RenderHtmlAsPdf(html).SaveAs(path)替換HTML字串的臨時文件繞路
  • RenderUrlAsPdf(url).SaveAs(path)
  • 將任何外部合併步驟替換為PdfDocument.Merge()
  • 通過RenderingOptions明確設置頁面大小和邊距(無PDF Duo等效項)
  • SaveAs()
  • 對於任何"載入現有PDF"工作流程,請使用PdfDocument.FromFile()(沒有PDF Duo等效項)

遷移後

  • 執行回歸測試比較 PDF 輸出
  • 驗證頁面大小和邊距是否匹配
  • 用複雜的HTML/CSS進行測試(IronPDF的現代引擎應該能更好地處理它)
  • 新增新功能(頁眉、頁腳、水印、安全)
  • 更新文件

  • 請注意PDF Duo .NET是其各自所有者的註冊商標。) 本網站不隸屬於、非DuoDimension之推薦或贊助。 所有產品名稱、標誌和品牌均為其各自所有者的財產。 比較僅供參考,反映撰寫時公開可用的資訊。
Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話