如何將 Markdown 轉換為 PDF
ExpertPdf 是Outside Software Inc.發布的商業 HTML-to-PDF 轉換器。最新版本可在 nuget.org 上找到,是 v20.1.0 (2025年4月),所以這套套件仍在積極發布中—問題在於產品的形態,而非被廢棄。ExpertPdf依賴 Trident (IE) 引擎和 v12.2 中新增的"WebKit2"引擎; 現代 Chromium 並非預設。 公開的 ComponentSource 清單顯示 HtmlToPdf Converter 每層約為 $550–$1,200(直接與供應商核實)。 該工具包也分成不同的 NuGet 套件—HtmlToPdf、MergePdf、PdfSecurity、SplitPdf、PdfToImage、PdfCreator—每個通常需分開授權。 本指南提供從ExpertPdf遷移到IronPDF的逐步遷移路徑,IronPDF 是一個擁有最新 Chromium 渲染、頻繁更新,以及一體化套件的 .NET PDF 程式庫。
為何從ExpertPdf遷移到 IronPDF?
ExpertPdf 呈現了數個挑戰,迫使開發團隊評估現代替代方案。 了解這些問題對於計劃遷移策略至關重要。
ExpertPdf的問題
-
文件稀少,更新速度慢: 參考文件存在於 html-to-pdf.net 上,但教學、功能文章和變更記錄條目並不頻繁。 v20.1 (2025年4月) 的發行說明列出了"錯誤修復和性能改進",並無引人注目的功能。
-
過時的渲染管道:ExpertPdf附帶一個 Trident (IE) 引擎以及在 v12.2 中新增的"WebKit2"引擎; 現代 Chromium 並非預設。 像 Flexbox、Grid 和 CSS 變數等 CSS3 功能在 WebKit2 引擎上呈現最佳效果—在遷移大型資產之前,請確認與您的目標 HTML 配合使用。
-
老化堆疊的高級定價: 公開的 ComponentSource 列表顯示 HtmlToPdf Converter 每層約為 $550–$1,200(直接向承包商核實—在撰寫本文時,expertpdf.net 上的訂單頁面無法存取)。
-
產品套件碎片化:ExpertPdf銷售的產品分為個別的包—
ExpertPdf.HtmlToPdf.NetCore/ExpertPdf.PdfCreator—每個通常需分開授權。 - 沒有本地的現代 .NET 目標:
.NetCore套件目標是 .NET Standard 2.0 / .NET Framework 4.6.1,所以它們運行在 .NET 5/6/7/8/9 上—但您無法獲得本地多目標構建、支持削減的程式集或優先異步 API。
架構比較
| 方面 | ExpertPdf | IronPDF |
|---|---|---|
| 供應商 | Outside Software Inc. | Iron Software |
| 最新版本 (nuget.org) | v20.1.0 (2025年4月) | 持續更新 |
| 文件 | 僅參考文件,教程稀少 | 持續更新 |
| 渲染引擎 | Trident (IE) + "WebKit2"(新增於 v12.2) | 最新的 Chromium |
| CSS 支援 | CSS3 最佳運行於 WebKit2; 舊版上部分支持 | 完全支持CSS3(Flexbox, Grid) |
| 價格 | 約 $550–$1,200 (請與供應商確認) | 參見 ironpdf.com/pricing |
| 產品模型 | 碎片化 (六個以上的 NuGet 套件) | 一體化程式庫 |
| 現代 .NET | .NET Standard 2.0 (用於 .NET 5-9) | .NET 6/7/8/9+ 多目標 |
| 異步支援 | 有限 | 完全支持 async/await |
主要遷移利益
- 現代渲染: 最新的 Chromium 引擎提供像素級完美的輸出
- 一體化套件: 包括 PDF 生成、合併、安全和提取的單一 NuGet 套件
- 積極的開發: 每月更新新功能和安全補丁
- 更好的文件: 完整的教程和範例
- 真正的跨平台: 支持 Windows, Linux, macOS, 和 Docker
遷移前準備
前提條件
確保您的環境符合以下要求:
- .NET Framework 4.6.2+ or .NET Core 3.1 / .NET 5-9
- Visual Studio 2019+或VS Code與C#擴展
- NuGet包管理器存取 -IronPDF許可證金鑰(免費試用可在 ironpdf.com 獲得)
審核ExpertPdf使用情況
在您的解決方案目錄中運行這些命令以識別所有ExpertPdf引用:
# Find allExpertPdfreferences
grep -r "ExpertPdf\|PdfConverter\|PDFMerge\|PdfSecurityManager" --include="*.cs" .
# Check NuGet packages
dotnet list package | grep -i "ExpertPdf"
# Find allExpertPdfreferences
grep -r "ExpertPdf\|PdfConverter\|PDFMerge\|PdfSecurityManager" --include="*.cs" .
# Check NuGet packages
dotnet list package | grep -i "ExpertPdf"
常見的ExpertPdf套件名稱(請在 nuget.org 上核實確切名稱—該套件使用不一致的大寫):
ExpertPdfHtmlToPdf(.NET Framework) /ExpertPdf.HtmlToPdf.NetCore(.NET Core / 5-9) — HTML to PDFExpertPdf.MergePdf— PDF 合併ExpertPdf.PdfSecurity— 加密和密碼ExpertPdf.SplitPdf— PDF 拆分ExpertPdf.PdfToImage— PDF 到圖像轉換ExpertPdf.PdfCreator— 完整的 PDF SDK (繪圖、表單、簽名)
理解核心模式變更
ExpertPdf 使用 PdfConverter 提供直接返回字節陣列的方法。IronPDF使用 ChromePdfRenderer 返回提供附加操作能力的 PdfDocument 物件,然後再保存。
逐步遷移過程
步驟1:更新NuGet包
移除所有ExpertPdf套件並安裝 IronPDF:
# Remove allExpertPdfpackages (use whichever variants you have installed)
dotnet remove package ExpertPdfHtmlToPdf
dotnet remove package ExpertPdf.HtmlToPdf.NetCore
dotnet remove package ExpertPdf.MergePdf
dotnet remove package ExpertPdf.PdfSecurity
dotnet remove package ExpertPdf.SplitPdf
dotnet remove package ExpertPdf.PdfToImage
dotnet remove package ExpertPdf.PdfCreator
# InstallIronPDF(includes all features)
dotnet add package IronPdf
# Remove allExpertPdfpackages (use whichever variants you have installed)
dotnet remove package ExpertPdfHtmlToPdf
dotnet remove package ExpertPdf.HtmlToPdf.NetCore
dotnet remove package ExpertPdf.MergePdf
dotnet remove package ExpertPdf.PdfSecurity
dotnet remove package ExpertPdf.SplitPdf
dotnet remove package ExpertPdf.PdfToImage
dotnet remove package ExpertPdf.PdfCreator
# InstallIronPDF(includes all features)
dotnet add package IronPdf
步驟 2:更新命名空間引用
將ExpertPdf命名空間替換為 IronPDF:
// Remove these
using ExpertPdf.HtmlToPdf;
// Add this
using IronPdf;
// Remove these
using ExpertPdf.HtmlToPdf;
// Add this
using IronPdf;
Imports IronPdf
步驟3:配置授權
ExpertPdf 使用每個轉換器授權。IronPDF使用單一全球授權:
// 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"
完整 API 遷移參考
核心類映射
| ExpertPdf 類別 | IronPDF等價 |
|---|---|
PdfConverter |
ChromePdfRenderer |
PdfDocumentOptions |
ChromePdfRenderOptions |
PdfHeaderOptions |
TextHeaderFooter 或 HtmlHeaderFooter |
PdfFooterOptions |
TextHeaderFooter 或 HtmlHeaderFooter |
PDFMerge |
PdfDocument.Merge() |
方法映射
| ExpertPdf 方法 | IronPDF方法 |
|---|---|
pdfConverter.GetPdfBytesFromHtmlString(html) |
renderer.RenderHtmlAsPdf(html).BinaryData |
pdfConverter.GetPdfBytesFromUrl(url) |
renderer.RenderUrlAsPdf(url).BinaryData |
pdfConverter.GetPdfBytesFromHtmlFile(path) |
renderer.RenderHtmlFileAsPdf(path).BinaryData |
pdfConverter.SavePdfFromUrlToFile(url, path) |
renderer.RenderUrlAsPdf(url).SaveAs(path) |
選項映射
| ExpertPdf 選項 | IronPDF RenderingOptions |
|---|---|
PdfDocumentOptions.PdfPageSize = PdfPageSize.A4 |
PaperSize = PdfPaperSize.A4 |
PdfDocumentOptions.PdfPageOrientation = Portrait |
PaperOrientation = PdfPaperOrientation.Portrait |
PdfDocumentOptions.MarginTop |
MarginTop |
PdfHeaderOptions.HeaderText |
TextHeader.CenterText |
PdfFooterOptions.FooterText |
TextFooter.RightText |
頁碼標記轉換
ExpertPdf 和IronPDF使用不同的頁碼佔位符語法:
| ExpertPdf | IronPDF |
|---|---|
&p; |
{page} |
&P; |
{total-pages} |
程式碼遷移範例
HTML到PDF轉換
基本的 HTML 到 PDF 轉換展示了從ExpertPdf的字節陣列模式到IronPDF的文件物件方法的轉變。
ExpertPdf 實施:
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;
class Program
{
static void Main()
{
// Create the PDF converter
PdfConverter pdfConverter = new PdfConverter();
// Convert HTML string to PDF
byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlString("<h1>Hello World</h1><p>This is a PDF document.</p>");
// Save to file
System.IO.File.WriteAllBytes("output.pdf", pdfBytes);
Console.WriteLine("PDF created successfully!");
}
}
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;
class Program
{
static void Main()
{
// Create the PDF converter
PdfConverter pdfConverter = new PdfConverter();
// Convert HTML string to PDF
byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlString("<h1>Hello World</h1><p>This is a PDF document.</p>");
// Save to file
System.IO.File.WriteAllBytes("output.pdf", pdfBytes);
Console.WriteLine("PDF created successfully!");
}
}
Imports ExpertPdf.HtmlToPdf
Imports System
Module Program
Sub Main()
' Create the PDF converter
Dim pdfConverter As New PdfConverter()
' Convert HTML string to PDF
Dim pdfBytes As Byte() = pdfConverter.GetPdfBytesFromHtmlString("<h1>Hello World</h1><p>This is a PDF document.</p>")
' Save to file
System.IO.File.WriteAllBytes("output.pdf", pdfBytes)
Console.WriteLine("PDF created successfully!")
End Sub
End Module
IronPDF實現:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF from HTML string
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF document.</p>");
// Save to file
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF from HTML string
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF document.</p>");
// Save to file
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
' Create a PDF from HTML string
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF document.</p>")
' Save to file
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully!")
End Sub
End Class
IronPDF 方法返回一個 PdfDocument 物件,允許在保存之前進行額外的操作(合併、加水印、安全)。 有關更多選項,請參閱HTML轉PDF文件。
具有頁面設置的 URL 到 PDF
ExpertPdf 實施:
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;
class Program
{
static void Main()
{
// Create the PDF converter
PdfConverter pdfConverter = new PdfConverter();
// Set page size and orientation
pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
pdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait;
// Convert URL to PDF
byte[] pdfBytes = pdfConverter.GetPdfBytesFromUrl("https://www.example.com");
// Save to file
System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes);
Console.WriteLine("PDF from URL created successfully!");
}
}
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;
class Program
{
static void Main()
{
// Create the PDF converter
PdfConverter pdfConverter = new PdfConverter();
// Set page size and orientation
pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
pdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait;
// Convert URL to PDF
byte[] pdfBytes = pdfConverter.GetPdfBytesFromUrl("https://www.example.com");
// Save to file
System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes);
Console.WriteLine("PDF from URL created successfully!");
}
}
Imports ExpertPdf.HtmlToPdf
Imports System
Module Program
Sub Main()
' Create the PDF converter
Dim pdfConverter As New PdfConverter()
' Set page size and orientation
pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4
pdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait
' Convert URL to PDF
Dim pdfBytes As Byte() = pdfConverter.GetPdfBytesFromUrl("https://www.example.com")
' Save to file
System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes)
Console.WriteLine("PDF from URL created successfully!")
End Sub
End Module
IronPDF實現:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Set page size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
// Convert URL to PDF
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
// Save to file
pdf.SaveAs("webpage.pdf");
Console.WriteLine("PDF from URL created successfully!");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Set page size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
// Convert URL to PDF
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
// Save to file
pdf.SaveAs("webpage.pdf");
Console.WriteLine("PDF from URL created successfully!");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
' Create a PDF renderer
Dim renderer = New ChromePdfRenderer()
' Set page size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait
' Convert URL to PDF
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
' Save to file
pdf.SaveAs("webpage.pdf")
Console.WriteLine("PDF from URL created successfully!")
End Sub
End Class
IronPDF 的 RenderingOptions 提供頁面配置的直接屬性存取。 有關更多選項,請參閱URL轉PDF文件。
帶有頁碼的頁眉和頁腳
此範例展示了頁眉/頁腳配置的關鍵區別—ExpertPdf 使用分開的 PdfHeaderOptions 和 PdfFooterOptions 類別及 &P; 標記,而IronPDF使用 TextHeaderFooter 及 {total-pages} 佔位符。
ExpertPdf 實施:
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;
class Program
{
static void Main()
{
// Create the PDF converter
PdfConverter pdfConverter = new PdfConverter();
// Enable header
pdfConverter.PdfHeaderOptions.ShowHeader = true;
pdfConverter.PdfHeaderOptions.HeaderText = "Document Header";
pdfConverter.PdfHeaderOptions.HeaderTextAlignment = HorizontalTextAlign.Center;
// Enable footer with page numbers
pdfConverter.PdfFooterOptions.ShowFooter = true;
pdfConverter.PdfFooterOptions.FooterText = "Page &p; of &P;";
pdfConverter.PdfFooterOptions.FooterTextAlignment = HorizontalTextAlign.Right;
// Convert HTML file to PDF
byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlFile("input.html");
// Save to file
System.IO.File.WriteAllBytes("output-with-header-footer.pdf", pdfBytes);
Console.WriteLine("PDF with headers and footers created successfully!");
}
}
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;
class Program
{
static void Main()
{
// Create the PDF converter
PdfConverter pdfConverter = new PdfConverter();
// Enable header
pdfConverter.PdfHeaderOptions.ShowHeader = true;
pdfConverter.PdfHeaderOptions.HeaderText = "Document Header";
pdfConverter.PdfHeaderOptions.HeaderTextAlignment = HorizontalTextAlign.Center;
// Enable footer with page numbers
pdfConverter.PdfFooterOptions.ShowFooter = true;
pdfConverter.PdfFooterOptions.FooterText = "Page &p; of &P;";
pdfConverter.PdfFooterOptions.FooterTextAlignment = HorizontalTextAlign.Right;
// Convert HTML file to PDF
byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlFile("input.html");
// Save to file
System.IO.File.WriteAllBytes("output-with-header-footer.pdf", pdfBytes);
Console.WriteLine("PDF with headers and footers created successfully!");
}
}
Imports ExpertPdf.HtmlToPdf
Imports System
Class Program
Shared Sub Main()
' Create the PDF converter
Dim pdfConverter As New PdfConverter()
' Enable header
pdfConverter.PdfHeaderOptions.ShowHeader = True
pdfConverter.PdfHeaderOptions.HeaderText = "Document Header"
pdfConverter.PdfHeaderOptions.HeaderTextAlignment = HorizontalTextAlign.Center
' Enable footer with page numbers
pdfConverter.PdfFooterOptions.ShowFooter = True
pdfConverter.PdfFooterOptions.FooterText = "Page &p; of &P;"
pdfConverter.PdfFooterOptions.FooterTextAlignment = HorizontalTextAlign.Right
' Convert HTML file to PDF
Dim pdfBytes As Byte() = pdfConverter.GetPdfBytesFromHtmlFile("input.html")
' Save to file
System.IO.File.WriteAllBytes("output-with-header-footer.pdf", pdfBytes)
Console.WriteLine("PDF with headers and footers created successfully!")
End Sub
End Class
IronPDF實現:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Configure header
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Document Header",
DrawDividerLine = true
};
// Configure footer with page numbers
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true
};
// Convert HTML file to PDF
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
// Save to file
pdf.SaveAs("output-with-header-footer.pdf");
Console.WriteLine("PDF with headers and footers created successfully!");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Configure header
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Document Header",
DrawDividerLine = true
};
// Configure footer with page numbers
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true
};
// Convert HTML file to PDF
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
// Save to file
pdf.SaveAs("output-with-header-footer.pdf");
Console.WriteLine("PDF with headers and footers created successfully!");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
' Create a PDF renderer
Dim renderer = New ChromePdfRenderer()
' Configure header
renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.CenterText = "Document Header",
.DrawDividerLine = True
}
' Configure footer with page numbers
renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True
}
' Convert HTML file to PDF
Dim pdf = renderer.RenderHtmlFileAsPdf("input.html")
' Save to file
pdf.SaveAs("output-with-header-footer.pdf")
Console.WriteLine("PDF with headers and footers created successfully!")
End Sub
End Class
IronPDF 的 TextHeaderFooter 提供 CenterText、和 RightText 屬性並有可選的分隔線。 對於基於 HTML 的頁眉,使用 HtmlHeaderFooter。 欲了解更多選項,請參見 頁眉和頁腳文件。
關鍵遷移注意事項
授權金鑰位置
ExpertPdf 使用每個轉換器授權。IronPDF在啟動時設置一次單一的全球授權:
//ExpertPdf- per converter
pdfConverter.LicenseKey = "EXPERTPDF-LICENSE";
//IronPDF- global, set once
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
//ExpertPdf- per converter
pdfConverter.LicenseKey = "EXPERTPDF-LICENSE";
//IronPDF- global, set once
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
'ExpertPdf- per converter
pdfConverter.LicenseKey = "EXPERTPDF-LICENSE"
'IronPDF- global, set once
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
頁碼標記轉換
用IronPDF的佔位符替換ExpertPdf的標記:
// ExpertPdf
"Page &p; of &P;"
// IronPDF
"Page {page} of {total-pages}"
// ExpertPdf
"Page &p; of &P;"
// IronPDF
"Page {page} of {total-pages}"
合併的套件
ExpertPdf 的單獨套件 (PDFMerge, PDFSecurity, PDFSplit, PdfToImage) 全部包含在IronPDF的單一套件中:
//ExpertPdf- requires separate ExpertPdf.MergePdf package
PDFMerge merger = new PDFMerge();
merger.AppendPDFFile("file1.pdf");
merger.AppendPDFFile("file2.pdf");
merger.SaveMergedPDFToFile("merged.pdf");
//IronPDF- included in main package
var pdf1 = PdfDocument.FromFile("file1.pdf");
var pdf2 = PdfDocument.FromFile("file2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
//ExpertPdf- requires separate ExpertPdf.MergePdf package
PDFMerge merger = new PDFMerge();
merger.AppendPDFFile("file1.pdf");
merger.AppendPDFFile("file2.pdf");
merger.SaveMergedPDFToFile("merged.pdf");
//IronPDF- included in main package
var pdf1 = PdfDocument.FromFile("file1.pdf");
var pdf2 = PdfDocument.FromFile("file2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
' ExpertPdf- requires separate ExpertPdf.MergePdf package
Dim merger As New PDFMerge()
merger.AppendPDFFile("file1.pdf")
merger.AppendPDFFile("file2.pdf")
merger.SaveMergedPDFToFile("merged.pdf")
' IronPDF- included in main package
Dim pdf1 = PdfDocument.FromFile("file1.pdf")
Dim pdf2 = PdfDocument.FromFile("file2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
欲知更多合併選項,請參見PDF 合併文件。
自定義頁面大小
ExpertPdf 使用點。 IronPDF使用毫米。 轉換:points / 72 * 25.4 = mm
後遷移檢查清單
完成程式碼遷移後,請驗證以下內容:
- 生成的PDF文件的視覺比較
- 驗證頁眉/頁腳和頁碼
- 測試安全/加密設置
- 驗證合併操作
- 檢查自定義頁面大小
- 性能基準測試
- 跨平台測試
- 移除ExpertPdf授權文件
- 更新文件
其他資源
從ExpertPdf遷移到IronPDF取代了稀少的文件、舊的渲染管道和拼湊的產品授權,改用一個在最新 Chromium 引擎上積極維護的程式庫—使您的 PDF 生成與當前的 Web 標準和現代 .NET 目標保持一致。
[(ExpertPDF 是其相關擁有者 (Outside Software Inc.) 的註冊商標。 本網站與Outside Software Inc.無關,未經授權或贊助。所有產品名稱、標誌和品牌均為其各自擁有者的財產。 比較僅供參考,反映撰寫時公開可用的資訊。)}]

