如何用 C# 從 HiQPdf 轉移到 IronPDF
從HiQPdf轉移到 IronPDF:完整的 C# 遷移指南。
從HiQPdf轉移到IronPDF可將您的 .NET PDF 工作流程從基於 WebKit 且有頁面限制的舊式渲染引擎,轉換為完全支援 JavaScript Framework 的現代 Chromium Powered 函式庫。 本指南為專業的 .NET 開發人員提供了一個全面、循序漸進的轉換路徑,消除了 3 頁紙的限制和零散的套件結構。
為什麼要從HiQPdf轉移到 IronPDF?
HiQPdf的限制
HiQPdf 是一個商用 HTML-to-PDF 函式庫,有幾個影響生產應用程式的限制:
1.具限制性的"免費"版本:免費版本有 3 頁的限制,並帶有侵擾性的水印 - 基本上無法用於需要完整文件生成的生產工作負載。
2.較舊的 WebKit 引擎:HiQPdf 使用較舊的 WebKit 為基礎的渲染引擎,在與 React、Angular 和 Vue 等現代 JavaScript 架構溝通時有困難。
3.未明確說明 .NET Core 支援:說明文件沒有明確說明 .NET Core / .NET 5+ 支援,為現代應用程式開發造成不確定性。
4.Fragmented Packages:適用於不同平台的多個 NuGet 套件 (HiQPdf、HiQPdf.Free、HiQPdf.NetCore、HiQPdf.NetCore.x64、HiQPdf.Client),使相依性管理變得複雜。
5.複雜的 API:需要透過Document、Header、Footer屬性鏈進行冗長的設定,而非流暢、直覺的方法。
6.有限的 JavaScript 支援:WebKit 引擎在呈現由現代 JavaScript 框架和複雜動態版面所產生的內容時,會遇到困難。
HiQPdf與IronPDF的比較
| 範疇 | HiQPdf | IronPDF |
|---|---|---|
| 渲染引擎 | 基於 WebKit (較舊) | 現代 Chromium |
| 免費等級 | 3 頁限制 + 水印 | 30 天完整試用 |
| 現代 JS 支援 | 限額 | 完整 (React、Angular、Vue) |
| .NET Core/5+ 支援 | 需要多個套件 | 單一統一套件 |
| API 設計 | 複雜的屬性鏈 | 乾淨流暢的 API |
| CSS3 支持 | 部分的 | 全面支援 |
| 文件 | 零碎 | 全面性 |
| NuGet 套件 | 多種變體 | 單一套件 |
對於計劃在 2025 年和 2026 年之前採用 .NET 10 和 C# 14 的團隊而言,IronPDF 提供了一個面向未來的基礎,對最新的 .NET 版本和現代 Chromium 渲染引擎提供了文件化的支援。
遷移複雜性評估
按功能估計的工作量
| 特點 | 遷移複雜性 | 筆記 |
|---|---|---|
| HTML 至 PDF | 非常低 | 直接方法替換 |
| URL 至 PDF | 非常低 | 直接方法替換 |
| 合併 PDF | 低 | 不同的合併方式 |
| 頁首/頁尾 | 語言 | 占位符語法變更 |
| 頁面大小/邊界 | 低 | 相同單位 (mm) |
| 觸發模式/延遲 | 低 | 屬性對應 |
範式轉移
這次HiQPdf遷移的基本轉變是從 屬性鏈配置到 流暢的渲染選項:
HiQPdf:converter.Document.Header.Height = 50;
converter.Document.Header.Add(new HtmlToPdfVariableElement(...));
IronPdf: renderer.RenderingOptions.TextHeader = new TextHeaderFooter() { ... };開始之前
先決條件
1..NET 版本:IronPDF 支持 .NET Framework 4.6.2+ 和 .NET Core 3.1+ / .NET 5/6/7/8/9+ 。 2.許可金鑰:從ironpdf.com取得您的IronPDF授權金鑰。 3.移除 HiQPdf:計劃移除所有HiQPdfNuGet 套件變體
識別所有HiQPdf使用方式
# FindHiQPdfnamespace usage
grep -r "using HiQPdf\|HtmlToPdf\|PdfDocument" --include="*.cs" .
# Find header/footer usage
grep -r "\.Header\.\|\.Footer\.\|HtmlToPdfVariableElement" --include="*.cs" .
# Find placeholder syntax
grep -r "CrtPage\|PageCount" --include="*.cs" .
# Find NuGet references
grep -r "HiQPdf" --include="*.csproj" .# FindHiQPdfnamespace usage
grep -r "using HiQPdf\|HtmlToPdf\|PdfDocument" --include="*.cs" .
# Find header/footer usage
grep -r "\.Header\.\|\.Footer\.\|HtmlToPdfVariableElement" --include="*.cs" .
# Find placeholder syntax
grep -r "CrtPage\|PageCount" --include="*.cs" .
# Find NuGet references
grep -r "HiQPdf" --include="*.csproj" .NuGet 套件變更
# Remove allHiQPdfvariants
dotnet remove package HiQPdf
dotnet remove package HiQPdf.Free
dotnet remove package HiQPdf.NetCore
dotnet remove package HiQPdf.NetCore.x64
dotnet remove package HiQPdf.Client
# InstallIronPDF(single package for all platforms)
dotnet add package IronPdf# Remove allHiQPdfvariants
dotnet remove package HiQPdf
dotnet remove package HiQPdf.Free
dotnet remove package HiQPdf.NetCore
dotnet remove package HiQPdf.NetCore.x64
dotnet remove package HiQPdf.Client
# InstallIronPDF(single package for all platforms)
dotnet add package IronPdf快速啟動遷移
步驟 1:更新授權組態
之前 (HiQPdf):
HtmlToPdf converter = new HtmlToPdf();
converter.SerialNumber = "HIQPDF-SERIAL-NUMBER";HtmlToPdf converter = new HtmlToPdf();
converter.SerialNumber = "HIQPDF-SERIAL-NUMBER";IRON VB CONVERTER ERROR developers@ironsoftware.comAfter (IronPDF):
// Set globally at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";// Set globally at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";IRON VB CONVERTER ERROR developers@ironsoftware.com步驟 2:更新命名空間匯入
// Before (HiQPdf)
using HiQPdf;
// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;// Before (HiQPdf)
using HiQPdf;
// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;IRON VB CONVERTER ERROR developers@ironsoftware.com完整的 API 參考資料
主類映射
| HiQPdf 類別 | IronPdf 類別 | 筆記 |
|---|---|---|
| <編碼>HtmlToPdf</編碼 | <代碼>ChromePdfRenderer</代碼 | 主要轉換器類別 |
| <編碼>PDF 文件</編碼 | <編碼>PDF 文件</編碼 | 相同的名稱,不同的命名空間 |
| <編碼>HtmlToPdfVariableElement</編碼 | TextHeaderFooter 或 HtmlHeaderFooter | 標題/頁腳內容 |
轉換方法映射
| HiQPdf 方法 | IronPdf 方法 | 筆記 |
|---|---|---|
ConvertHtmlToMemory(html,baseUrl)。 | RenderHtmlAsPdf(html) | 返回 PdfDocument |
| <編碼>ConvertUrlToMemory(url)</編碼 | <代碼>RenderUrlAsPdf(url)</代碼 | 返回 PdfDocument |
File.WriteAllBytes(path, bytes)File.WriteAllBytes(path, bytes)File.WriteAllBytes(path) | <代碼>pdf.SaveAs(路徑)</代碼 | 直接儲存方法 |
PDF 文件方法映射
| HiQPdf 方法 | IronPdf 方法 | 筆記 |
|---|---|---|
PdfDocument.FromFile(path) | PdfDocument.FromFile(path) | 相同的方法名稱 |
| <代碼>document1.AddDocument(document2)</代碼 | PdfDocument.Merge(pdf1,pdf2)。 | 靜態合併法 |
document.WriteToFile(path)。 | <代碼>pdf.SaveAs(路徑)</代碼 | 不同的方法名稱 |
頁首/頁尾占位符對應
| HiQPdf 占位符 | IronPdf 占位符 | 說明 |
|---|---|---|
| <編碼>{CrtPage}</編碼 | {page} | 目前頁數 |
| <編碼>{頁數}</編碼 | {總頁數} | 總頁數 |
程式碼遷移範例
範例 1:HTML 到 PDF 的轉換
之前 (HiQPdf):
// NuGet: Install-Package HiQPdf
using HiQPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
byte[] pdfBuffer = htmlToPdfConverter.ConvertUrlToMemory("https://example.com");
System.IO.File.WriteAllBytes("output.pdf", pdfBuffer);
// Convert HTML string
string html = "<h1>Hello World</h1><p>This is a PDF document.</p>";
byte[] pdfFromHtml = htmlToPdfConverter.ConvertHtmlToMemory(html, "");
System.IO.File.WriteAllBytes("fromhtml.pdf", pdfFromHtml);
}
}// NuGet: Install-Package HiQPdf
using HiQPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
byte[] pdfBuffer = htmlToPdfConverter.ConvertUrlToMemory("https://example.com");
System.IO.File.WriteAllBytes("output.pdf", pdfBuffer);
// Convert HTML string
string html = "<h1>Hello World</h1><p>This is a PDF document.</p>";
byte[] pdfFromHtml = htmlToPdfConverter.ConvertHtmlToMemory(html, "");
System.IO.File.WriteAllBytes("fromhtml.pdf", pdfFromHtml);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comAfter (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("output.pdf");
// Convert HTML string
string html = "<h1>Hello World</h1><p>This is a PDF document.</p>";
var pdfFromHtml = renderer.RenderHtmlAsPdf(html);
pdfFromHtml.SaveAs("fromhtml.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("output.pdf");
// Convert HTML string
string html = "<h1>Hello World</h1><p>This is a PDF document.</p>";
var pdfFromHtml = renderer.RenderHtmlAsPdf(html);
pdfFromHtml.SaveAs("fromhtml.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comHiQPdf 方法需要創建一個<編碼>HtmlToPdf</編碼實例,呼叫 ConvertUrlToMemory() 或 ConvertHtmlToMemory() 以獲得一個位元組陣列,然後手動寫入位元組到檔案中。IronPDF 的<代碼>ChromePdfRenderer</代碼會返回一個<編碼>PDF 文件</編碼物件,並直接提供 SaveAs() 方法,省去手動寫入檔案的步驟。現代的 Chromium 引擎也能為複雜的 HTML/CSS/JavaScript 內容提供更好的呈現效果。 請參閱 HTML to PDF 文件,以瞭解其他渲染選項。
範例 2:合併多個 PDF 檔案
之前 (HiQPdf):
// NuGet: Install-Package HiQPdf
using HiQPdf;
using System;
class Program
{
static void Main()
{
// Create first PDF
HtmlToPdf converter1 = new HtmlToPdf();
byte[] pdf1 = converter1.ConvertHtmlToMemory("<h1>First Document</h1>", "");
System.IO.File.WriteAllBytes("doc1.pdf", pdf1);
// Create second PDF
HtmlToPdf converter2 = new HtmlToPdf();
byte[] pdf2 = converter2.ConvertHtmlToMemory("<h1>Second Document</h1>", "");
System.IO.File.WriteAllBytes("doc2.pdf", pdf2);
// Merge PDFs
PdfDocument document1 = PdfDocument.FromFile("doc1.pdf");
PdfDocument document2 = PdfDocument.FromFile("doc2.pdf");
document1.AddDocument(document2);
document1.WriteToFile("merged.pdf");
}
}// NuGet: Install-Package HiQPdf
using HiQPdf;
using System;
class Program
{
static void Main()
{
// Create first PDF
HtmlToPdf converter1 = new HtmlToPdf();
byte[] pdf1 = converter1.ConvertHtmlToMemory("<h1>First Document</h1>", "");
System.IO.File.WriteAllBytes("doc1.pdf", pdf1);
// Create second PDF
HtmlToPdf converter2 = new HtmlToPdf();
byte[] pdf2 = converter2.ConvertHtmlToMemory("<h1>Second Document</h1>", "");
System.IO.File.WriteAllBytes("doc2.pdf", pdf2);
// Merge PDFs
PdfDocument document1 = PdfDocument.FromFile("doc1.pdf");
PdfDocument document2 = PdfDocument.FromFile("doc2.pdf");
document1.AddDocument(document2);
document1.WriteToFile("merged.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comAfter (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
// Create first PDF
var pdf1 = renderer.RenderHtmlAsPdf("<h1>First Document</h1>");
pdf1.SaveAs("doc1.pdf");
// Create second PDF
var pdf2 = renderer.RenderHtmlAsPdf("<h1>Second Document</h1>");
pdf2.SaveAs("doc2.pdf");
// Merge PDFs
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
// Create first PDF
var pdf1 = renderer.RenderHtmlAsPdf("<h1>First Document</h1>");
pdf1.SaveAs("doc1.pdf");
// Create second PDF
var pdf2 = renderer.RenderHtmlAsPdf("<h1>Second Document</h1>");
pdf2.SaveAs("doc2.pdf");
// Merge PDFs
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comHiQPdf 的方法需要使用 PdfDocument.FromFile() 從檔案載入文件,在第一個文件上呼叫 AddDocument() 來追加第二個文件,然後再使用 WriteToFile() 來儲存。IronPDF提供了一個更乾淨的靜態 PdfDocument.Merge() 方法,可直接接受多個<編碼>PDF 文件</編碼物件 - 不需要中間檔案操作。 進一步瞭解 合併與分割 PDF 的相關資訊。
範例 3:帶有頁碼的 PDF 頁首和頁尾
之前 (HiQPdf):
// NuGet: Install-Package HiQPdf
using HiQPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
// Add header
htmlToPdfConverter.Document.Header.Height = 50;
HtmlToPdfVariableElement headerHtml = new HtmlToPdfVariableElement("<div style='text-align:center'>Page Header</div>", "");
htmlToPdfConverter.Document.Header.Add(headerHtml);
// Add footer with page number
htmlToPdfConverter.Document.Footer.Height = 50;
HtmlToPdfVariableElement footerHtml = new HtmlToPdfVariableElement("<div style='text-align:center'>Page {CrtPage} of {PageCount}</div>", "");
htmlToPdfConverter.Document.Footer.Add(footerHtml);
byte[] pdfBuffer = htmlToPdfConverter.ConvertHtmlToMemory("<h1>Document with Headers and Footers</h1>", "");
System.IO.File.WriteAllBytes("header-footer.pdf", pdfBuffer);
}
}// NuGet: Install-Package HiQPdf
using HiQPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
// Add header
htmlToPdfConverter.Document.Header.Height = 50;
HtmlToPdfVariableElement headerHtml = new HtmlToPdfVariableElement("<div style='text-align:center'>Page Header</div>", "");
htmlToPdfConverter.Document.Header.Add(headerHtml);
// Add footer with page number
htmlToPdfConverter.Document.Footer.Height = 50;
HtmlToPdfVariableElement footerHtml = new HtmlToPdfVariableElement("<div style='text-align:center'>Page {CrtPage} of {PageCount}</div>", "");
htmlToPdfConverter.Document.Footer.Add(footerHtml);
byte[] pdfBuffer = htmlToPdfConverter.ConvertHtmlToMemory("<h1>Document with Headers and Footers</h1>", "");
System.IO.File.WriteAllBytes("header-footer.pdf", pdfBuffer);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comAfter (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
// Configure header and footer
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Page Header",
FontSize = 12
};
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
CenterText = "Page {page} of {total-pages}",
FontSize = 10
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Document with Headers and Footers</h1>");
pdf.SaveAs("header-footer.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
// Configure header and footer
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Page Header",
FontSize = 12
};
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
CenterText = "Page {page} of {total-pages}",
FontSize = 10
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Document with Headers and Footers</h1>");
pdf.SaveAs("header-footer.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comHiQPdf 方法需要設定 Document.Header.Height, 建立<編碼>HtmlToPdfVariableElement</編碼物件,並在 header/footer 部分呼叫 Add() 。 頁數占位符使用<編碼>{CrtPage}</編碼和<編碼>{頁數}</編碼語法。 IronPdf 提供了更簡潔的 TextHeaderFooter 設定,具有 CenterText 屬性和不同的佔位符語法:{page} 和 {total-pages}. 請參閱 標頭和頁尾文件,以瞭解其他選項,包括基於 HTML 的標頭。
關鍵遷移注意事項
占位符語法變更
對於有頁碼的文件,最重要的改變是佔位符語法:
//HiQPdfplaceholders
"Page {CrtPage} of {PageCount}"
//IronPDFplaceholders
"Page {page} of {total-pages}"//HiQPdfplaceholders
"Page {CrtPage} of {PageCount}"
//IronPDFplaceholders
"Page {page} of {total-pages}"IRON VB CONVERTER ERROR developers@ironsoftware.com完整的占位符映射: -<編碼>{CrtPage}</編碼→ {page} -<編碼>{頁數}</編碼→{總頁數}總頁數
合併方法差異
HiQPdf 將第一份文件修改到位:
// HiQPdf: Modifies document1
document1.AddDocument(document2);
document1.WriteToFile("merged.pdf");// HiQPdf: Modifies document1
document1.AddDocument(document2);
document1.WriteToFile("merged.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.comIronPdf 返回一個新的合併文件:
// IronPDF: Returns new document
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");// IronPDF: Returns new document
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.com無 3 頁限制
HiQPdf 的免費版本輸出上限為 3 頁,並附有水印。IronPDF可生成完整的文件,在試用期間不會受到人為的限制。
重複使用 ChromePdfRenderer
IronPDF 的<代碼>ChromePdfRenderer</代碼應該可以重複使用,不像HiQPdf每次轉換時都可能會建立新的<編碼>HtmlToPdf</編碼實體:
// IronPDF: Create once, reuse
var renderer = new ChromePdfRenderer();
var pdf1 = renderer.RenderHtmlAsPdf(html1);
var pdf2 = renderer.RenderHtmlAsPdf(html2);// IronPDF: Create once, reuse
var renderer = new ChromePdfRenderer();
var pdf1 = renderer.RenderHtmlAsPdf(html1);
var pdf2 = renderer.RenderHtmlAsPdf(html2);IRON VB CONVERTER ERROR developers@ironsoftware.com疑難排解
問題 1:HtmlToPdf 未找到
問題:HtmlToPdf 類在IronPDF中不存在。
解決方案:以<代碼>ChromePdfRenderer</代碼取代:
// HiQPdf
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
// IronPDF
var renderer = new ChromePdfRenderer();// HiQPdf
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
// IronPDF
var renderer = new ChromePdfRenderer();IRON VB CONVERTER ERROR developers@ironsoftware.com問題 2:未找到 ConvertHtmlToMemory。
問題:ConvertHtmlToMemory() 方法不存在。
解決方案:使用 RenderHtmlAsPdf():
// HiQPdf
byte[] pdfBytes = converter.ConvertHtmlToMemory(html, "");
// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
byte[] pdfBytes = pdf.BinaryData;// HiQPdf
byte[] pdfBytes = converter.ConvertHtmlToMemory(html, "");
// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
byte[] pdfBytes = pdf.BinaryData;IRON VB CONVERTER ERROR developers@ironsoftware.com問題 3:頁碼占位符無法運作
問題:{CrtPage} 和<編碼>{頁數}</編碼在輸出中出現字面意義。
解決方案:更新 IronPdf 占位符語法:
//HiQPdfsyntax (won't work)
"Page {CrtPage} of {PageCount}"
//IronPDFsyntax
"Page {page} of {total-pages}"//HiQPdfsyntax (won't work)
"Page {CrtPage} of {PageCount}"
//IronPDFsyntax
"Page {page} of {total-pages}"IRON VB CONVERTER ERROR developers@ironsoftware.com問題 4:HtmlToPdfVariableElement 未找到
問題:HtmlToPdfVariableElement 類不存在。
解決方案:使用TextHeaderFooter或HtmlHeaderFooter:
// HiQPdf
HtmlToPdfVariableElement headerHtml = new HtmlToPdfVariableElement("<div>Header</div>", "");
converter.Document.Header.Add(headerHtml);
// IronPDF
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Header",
FontSize = 12
};// HiQPdf
HtmlToPdfVariableElement headerHtml = new HtmlToPdfVariableElement("<div>Header</div>", "");
converter.Document.Header.Add(headerHtml);
// IronPDF
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Header",
FontSize = 12
};IRON VB CONVERTER ERROR developers@ironsoftware.com遷移清單
預遷移
- [在程式碼庫中清點所有HiQPdfAPI 呼叫
- [文件目前的頁面大小、邊界和設定
- [ ] 識別頁首/頁尾配置和占位符
- [ ] 獲得 IronPdf 授權金鑰
- [ ] 在開發環境中測試 IronPdf
程式碼遷移
- [ ] 移除所有HiQPdfNuGet 套件 (所有變體)
- [ ] 安裝 IronPdf NuGet 套件:
dotnet add package IronPdf。 - [ ] 更新命名空間匯入
- [ ] 將<編碼>HtmlToPdf</編碼替換為
ChromePdfRenderer - [ ] 將
ConvertHtmlToMemory()轉換為RenderHtmlAsPdf()。 - [ ] 將
ConvertUrlToMemory()轉換為RenderUrlAsPdf()。 - [ ] 更新頁首/頁尾占位符 (
{CrtPage}→{page},<編碼>{頁數}</編碼→{total-pages}) - [ ] 將<編碼>HtmlToPdfVariableElement</編碼替換為
TextHeaderFooter - [ ] 更新合併作業 (
AddDocument→PdfDocument.Merge) - [ ] 在啟動時加入授權金鑰初始化
測試
- [ ] 測試 HTML 至 PDF 的轉換
- [測試 URL 至 PDF 的轉換
- [ ] 確認頁首/頁尾的呈現
- [ ] 核實頁碼占位符
- [ ] 測試 PDF 合併
- [ ] 測試 JavaScript 繁重的頁面(現已支援 Chromium)
後遷移
- [ ] 從配置中移除HiQPdf序列號
- [ ] 更新文件
- [ ] 監控任何渲染差異
結論
從HiQPdf轉移到IronPDF為 .NET 應用程式提供了幾項顯著的優勢。 您將獲得現代化的 Chromium 渲染引擎,並完全支援 React、Angular、Vue 以及複雜的 JavaScript 框架。 帶有水印的 3 頁限制消失了,取而代之的是真正的全功能試用版。 單一統一的 NuGet 套件可取代零散的HiQPdf變體。
本次轉換的主要變更如下 1.類取代:HtmlToPdf → ChromePdfRenderer. 2.方法替換:ConvertHtmlToMemory() → RenderHtmlAsPdf().BinaryData. 3.合併方式:document1.AddDocument(document2) → PdfDocument.Merge(pdf1, pdf2) 4.Placeholder 語法:{CrtPage} → {page},<編碼>{頁數}</編碼→ {total-pages}. 5.頁首/頁腳:HtmlToPdfVariableElement→TextHeaderFooter






