如何在 C# 中從 PDFmyURL 轉移到 IronPDF
Migrating fromPDFmyURLto IronPDF:完整的 C# 開發人員指南。
PDFmyURL 是一項以雲端為基礎的 API 服務,專為將 URL 和 HTML 內容轉換為 PDF 文件而設計。 該服務在外部伺服器上處理所有轉換,提供直接的整合路徑,只需最少的本機基礎架構。 然而,對於處理敏感資料、需要離線功能或需要避免持續訂閱成本的生產應用程式來說,這種依賴雲端的架構造成了很大的疑慮。
本指南提供了從PDFmyURL到IronPDF的完整轉換路徑,為評估此轉換的 .NET 專業開發人員提供了分步說明、程式碼比較以及實用範例。
為何要從PDFmyURL遷移?
PDFmyURL 的雲端處理模式引入了幾項開發團隊必須考慮的挑戰:
隱私權與資料安全性:您轉換的每一份文件都會傳送到PDFmyURL的伺服器,並經由PDFmyURL的伺服器處理,包括敏感的合約、財務報告和個人資料。
持續訂閱成本:起價為 39 美元/月,在無擁有權的情況下,每年成本超過 468 美元/年。這種訂閱模式意味著無論使用模式如何,都會持續支出。
網際網路依賴性:每次轉換都需要網路連線。 應用程式無法在離線或網路中斷時處理 PDF。
速率限制與節流:在使用高峰期,API 呼叫可能會被節流,從而可能影響應用程式的效能。
服務可用性:您的應用程式有賴於第三方服務的線上運作。
廠商鎖定:API 變更可能會在未經通知的情況下破壞您的整合,因此需要反應式的程式碼更新。
IronPDFvs PDFmyURL:功能比較
了解架構上的差異有助於技術決策者評估遷移投資:
| 範疇 | PDFmyURL | IronPDF |
|---|---|---|
| 處理地點 | 外部伺服器 | 本地(您的伺服器) |
| 類型 | API 包裝 | .NET 圖書館 |
| 驗證 | 每個請求的 API 金鑰 | 一次性授權金鑰 |
| 網路需求 | 每次轉換 | 只有初始設定 |
| 定價模式 | 按月訂閱 ($39+) | 提供永久授權 |
| 費率限制 | 是 (依計劃而定) | 無 |
| 資料隱私權 | 從外部傳送的資料 | 資料保持在本地 |
| HTML/CSS/JS 支援。 | 符合 W3C 標準 | 完整的 Chromium 引擎 |
| 同步模式 | 必需 (僅限於 async) | 同步與同步選項 |
| PDF 操作 | 限額 | 全套(合併、分割、編輯) |
| 使用個案 | 少量應用程式 | 高產量和企業級 |
快速入門:PDFmyURL 到IronPDF的遷移。
只要完成這些基本步驟,就可以立即開始遷移。
步驟 1:取代 NuGet 套件
移除PDFmyURL套件:
# RemovePDFmyURLpackages
dotnet remove package PdfMyUrl
dotnet remove package Pdfcrowd# RemovePDFmyURLpackages
dotnet remove package PdfMyUrl
dotnet remove package Pdfcrowd安裝 IronPDF:
# Install IronPDF
dotnet add package IronPdf# Install IronPDF
dotnet add package IronPdf步驟 2:更新命名空間
用 IronPdf 取代PDFmyURL命名空間:
// Before: PDFmyURL
using PdfMyUrl;
using Pdfcrowd;
// After: IronPDF
using IronPdf;
using IronPdf.Rendering;// Before: PDFmyURL
using PdfMyUrl;
using Pdfcrowd;
// After: IronPDF
using IronPdf;
using IronPdf.Rendering;IRON VB CONVERTER ERROR developers@ironsoftware.com步驟 3:初始化授權
在應用程式啟動時加入授權初始化:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"程式碼遷移範例
將 URL 轉換為 PDF
URL-to-PDF 操作展示了PDFmyURL與IronPDF之間基本的 API 差異。
PDFmyURL 方法:
// InstallPDFmyURLSDK
using System;
using Pdfcrowd;
class Example
{
static void Main()
{
try
{
var client = new HtmlToPdfClient("username", "apikey");
client.convertUrlToFile("https://example.com", "output.pdf");
}
catch(Error why)
{
Console.WriteLine("Error: " + why);
}
}
}// InstallPDFmyURLSDK
using System;
using Pdfcrowd;
class Example
{
static void Main()
{
try
{
var client = new HtmlToPdfClient("username", "apikey");
client.convertUrlToFile("https://example.com", "output.pdf");
}
catch(Error why)
{
Console.WriteLine("Error: " + why);
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDF 方法:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Example
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Example
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comPDFmyURL 要求為每個轉換請求建立一個HtmlToPdfClient並附上使用者名稱和 API 金鑰認證,然後以 URL 和輸出路徑呼叫 convertUrlToFile() 。 整個操作必須包裝在PDFmyURL自訂 Error 類型的 try-catch 中。
IronPDF 將此簡化為三行:建立 ChromePdfRenderer, 呼叫 RenderUrlAsPdf(), 並使用內建的 SaveAs() 方法。 不需要每次要求的憑證 - 授權會在應用程式啟動時設定一次。
如需進階的 URL-to-PDF 方案,請參閱 URL to PDF 文件。
將 HTML 字串轉換為 PDF
HTML 字串轉換可清楚顯示模式差異。
PDFmyURL 方法:
// InstallPDFmyURLSDK
using System;
using Pdfcrowd;
class Example
{
static void Main()
{
try
{
var client = new HtmlToPdfClient("username", "apikey");
string html = "<html><body><h1>Hello World</h1></body></html>";
client.convertStringToFile(html, "output.pdf");
}
catch(Error why)
{
Console.WriteLine("Error: " + why);
}
}
}// InstallPDFmyURLSDK
using System;
using Pdfcrowd;
class Example
{
static void Main()
{
try
{
var client = new HtmlToPdfClient("username", "apikey");
string html = "<html><body><h1>Hello World</h1></body></html>";
client.convertStringToFile(html, "output.pdf");
}
catch(Error why)
{
Console.WriteLine("Error: " + why);
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDF 方法:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Example
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Example
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comPDFmyURL 使用 convertStringToFile() 將 HTML 內容傳送至外部伺服器進行處理。IronPDF的 RenderHtmlAsPdf() 使用 Chromium 渲染引擎在本地處理所有內容。
探索 HTML 至 PDF 轉換指南 以取得其他選項。
具有頁面設定的 HTML 檔案轉換
配置紙張大小、方向和頁邊需要在每個圖書館採用不同的方法。
PDFmyURL 方法:
// InstallPDFmyURLSDK
using System;
using Pdfcrowd;
class Example
{
static void Main()
{
try
{
var client = new HtmlToPdfClient("username", "apikey");
client.setPageSize("A4");
client.setOrientation("landscape");
client.setMarginTop("10mm");
client.convertFileToFile("input.html", "output.pdf");
}
catch(Error why)
{
Console.WriteLine("Error: " + why);
}
}
}// InstallPDFmyURLSDK
using System;
using Pdfcrowd;
class Example
{
static void Main()
{
try
{
var client = new HtmlToPdfClient("username", "apikey");
client.setPageSize("A4");
client.setOrientation("landscape");
client.setMarginTop("10mm");
client.convertFileToFile("input.html", "output.pdf");
}
catch(Error why)
{
Console.WriteLine("Error: " + why);
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDF 方法:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;
class Example
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 10;
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
pdf.SaveAs("output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;
class Example
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 10;
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
pdf.SaveAs("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comPDFmyURL 使用具有字串參數的 setter 方法,例如setPageSize("A4")和setMarginTop("10mm")。IronPDF透過 RenderingOptions 提供強式類型的屬性,其中包含諸如 PdfPaperSize.A4 之類的枚數,以及以毫米為單位的邊界整數值。
PDFmyURLAPI 至IronPDF映射參考。
此對應可透過顯示直接的 API 對應關係來加速遷移:
核心類別
| PDFmyURL | IronPDF | 筆記 |
|---|---|---|
HtmlToPdfClient | <代碼>ChromePdfRenderer</代碼 | 主要轉換類 |
| <編碼>PdfMyUrlClient</編碼 | <代碼>ChromePdfRenderer</代碼 | 替代客戶端類別 |
| API 回應物件 | <編碼>PDF 文件</編碼 | 結果 PDF 物件 |
方法
| PDFmyURL | IronPDF | 筆記 |
|---|---|---|
client.convertUrlToFile(url,file)。 | renderer.RenderUrlAsPdf(url).SaveAs(file)。 | URL 至 PDF |
client.convertStringToFile(html, file) | renderer.RenderHtmlAsPdf(html).SaveAs(file)。 | HTML 字串至 PDF |
client.convertFileToFile(輸入、輸出)。 | renderer.RenderHtmlFileAsPdf(input).SaveAs(output)。 | 檔案對檔案 |
| <代碼>response.GetBytes()</代碼 | <編碼>pdf.BinaryData</編碼 | 取得原始位元組 |
| <編碼>response.GetStream()</編碼 | <代碼>pdf.Stream</代碼 | 以串流方式取得 |
設定選項
| PDFmyURL (setXxx 方法) | IronPdf (RenderingOptions) | 筆記 |
|---|---|---|
setPageSize("A4") | .PaperSize = PdfPaperSize.A4. | 紙張大小 |
setPageSize("Letter") | .PaperSize = PdfPaperSize.Letter. | 美國信件 |
setOrientation("landscape") | .PaperOrientation = PdfPaperOrientation.Landscape. | 導向 |
| <代碼>setOrientation("portrait")</代碼 | .PaperOrientation=PdfPaperOrientation.Portrait。 | 肖像 |
setMarginTop("10mm") | .MarginTop = 10 | 上邊距離 (mm) |
setMarginBottom("10mm") | .MarginBottom = 10. | 底邊距離 (mm) |
setMarginLeft("10mm") | .MarginLeft = 10. | 左邊距離 (mm) |
setMarginRight("10mm") | .MarginRight = 10 | 右邊距 (mm) |
setHeaderHtml(html) | .HtmlHeader = new HtmlHeaderFooter { HtmlFragment = html } | 標題 |
setFooterHtml(html) | .HtmlFooter = new HtmlHeaderFooter { HtmlFragment = html } | 頁尾 |
setJavascriptDelay(500)。 | .RenderDelay = 500. | JS 等待時間 (ms) |
| <編碼>setDisableJavascript(true)</編碼 | .EnableJavaScript = false. | 停用 JS |
| <代碼>setUsePrintMedia(true)</代碼 | .CssMediaType = PdfCssMediaType.Print。 | 列印 CSS |
驗證比較
| PDFmyURL | IronPDF |
|---|---|
new HtmlToPdfClient("username", "apikey") | IronPDF.License.LicenseKey = "LICENSE-KEY" |
| 每個請求的 API 金鑰 | 啟動時一次性 |
| 每次通話都需要 | 全球設定一次 |
常見的遷移問題與解決方案
問題 1:API 金鑰 vs 授權金鑰
PDFmyURL: 每次轉換請求都需要憑證。
解決方案:在應用程式啟動時設定一次IronPDF授權:
// PDFmyURL: API key per request
var client = new HtmlToPdfClient("username", "apikey");
// IronPDF: One-time license at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Set once, typically in Program.cs or Startup.cs// PDFmyURL: API key per request
var client = new HtmlToPdfClient("username", "apikey");
// IronPDF: One-time license at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Set once, typically in Program.cs or Startup.csIRON VB CONVERTER ERROR developers@ironsoftware.com問題 2:標題/頁腳中的占位符語法
PDFmyURL: 使用 {page_number} 和 {total_pages} 占位符。
解決方案:更新為IronPDF的占位格式:
// PDFmyURL: "Page {page_number} of {total_pages}"
// IronPDF: "Page {page} of {total-pages}"// PDFmyURL: "Page {page_number} of {total_pages}"
// IronPDF: "Page {page} of {total-pages}"IRON VB CONVERTER ERROR developers@ironsoftware.com第 3 期:Async 模式
PDFmyURL: 需要 async/await 模式。
解決方案:IronPDF預設是同步的; 如有需要,可為 async 包裝:
// PDFmyURL: Native async
var response = await client.ConvertUrlAsync(url);
// IronPDF: Sync by default, wrap for async
var pdf = await Task.Run(() => renderer.RenderUrlAsPdf(url));// PDFmyURL: Native async
var response = await client.ConvertUrlAsync(url);
// IronPDF: Sync by default, wrap for async
var pdf = await Task.Run(() => renderer.RenderUrlAsPdf(url));IRON VB CONVERTER ERROR developers@ironsoftware.com問題 4:錯誤處理
PDFmyURL: 使用自訂的 Pdfcrowd.Error 異常類型。
解決方案:更新IronPDF異常的 catch 區塊:
// PDFmyURL: Pdfcrowd.Error
catch (Pdfcrowd.Error e) { ... }
// IronPDF: Standard exceptions
catch (IronPdf.Exceptions.IronPdfRenderingException e) { ... }// PDFmyURL: Pdfcrowd.Error
catch (Pdfcrowd.Error e) { ... }
// IronPDF: Standard exceptions
catch (IronPdf.Exceptions.IronPdfRenderingException e) { ... }IRON VB CONVERTER ERROR developers@ironsoftware.com第 5 期:組態樣式
PDFmyURL: 使用具有字串值的 setter 方法。
解決方案:使用強式類型的 RenderingOptions 屬性:
// PDFmyURL: Setter methods
client.setPageSize("A4");
client.setOrientation("landscape");
// IronPDF: Properties with enums
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;// PDFmyURL: Setter methods
client.setPageSize("A4");
client.setOrientation("landscape");
// IronPDF: Properties with enums
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;IRON VB CONVERTER ERROR developers@ironsoftware.comPDFmyURL遷移清單
遷移前的任務
審核您的程式碼庫,找出所有PDFmyURL的使用情況:
# FindPDFmyURLusage
grep -r "PdfMyUrl\|Pdfcrowd\|HtmlToPdfClient" --include="*.cs" .
# Find API key references
grep -r "apikey\|api-key\|api_key" --include="*.cs" --include="*.json" --include="*.config" .
# Find placeholder patterns to migrate
grep -r "{page_number}\|{total_pages}" --include="*.cs" .# FindPDFmyURLusage
grep -r "PdfMyUrl\|Pdfcrowd\|HtmlToPdfClient" --include="*.cs" .
# Find API key references
grep -r "apikey\|api-key\|api_key" --include="*.cs" --include="*.json" --include="*.config" .
# Find placeholder patterns to migrate
grep -r "{page_number}\|{total_pages}" --include="*.cs" .記錄目前使用的組態選項。 使用環境變數規劃授權金鑰儲存。
程式碼更新任務
1.移除 PDFmyURL/Pdfcrowd NuGet 套件 2.安裝 IronPdf NuGet 套件 3.更新所有命名空間的匯入 4.使用IronPDF授權金鑰取代 API 金鑰驗證 5.將 setter 方法轉換為 RenderingOptions 屬性 6.更新頁頭/頁尾的占位符語法({page_number} → {page}, {total_pages} → {total-pages}) 7.更新 IronPdf 異常類型的錯誤處理程式碼 8.在啟動時增加 IronPdf 授權初始化功能
後遷移測試
轉移後,驗證這些方面:
- 測試 PDF 輸出品質是否符合預期
- 驗證 async 模式是否正常運作
- 比較與先前輸出的渲染保真度
- 測試所有範本變化是否能正確呈現
- 驗證頁面設定(大小、方向、邊界)
- 如果部署到 Linux 伺服器,請安裝 Linux 相依性
遷移到IronPDF的主要優點。
從PDFmyURL轉移到IronPDF提供了幾個關鍵優勢:
完全隱私:文件從未離開您的伺服器。 所有處理都在本機進行,消除敏感內容的資料安全疑慮。
一次性成本:永久授權選項可免除經常性的訂閱費用。 無論使用量多少,都不再需要每月付款。
離線功能:初始設定後,無需網路即可使用。網路中斷不會影響 PDF 的產生。
無速率限制:處理無限制的文件,沒有節流的顧慮。
更低的延遲時間:無網路開銷意味著更快的轉換速度,特別是對於高容量的應用程式。
完全控制:您控制處理環境,而非第三方服務。
現代 Chromium 引擎:使用與 Chrome 瀏覽器相同的渲染引擎,提供完整的 CSS3 與 JavaScript 支援。
主動開發:隨著 .NET 10 和 C# 14 的採用增加至 2026 年,IronPDF 的定期更新可確保與目前和未來的 .NET 版本相容。
結論
PDFmyURL 提供直接的雲端解決方案,可滿足少量 PDF 製作的需求。 然而,外部處理模式會造成隱私權疑慮、持續成本和依賴風險,許多生產應用程式都無法接受。
IronPdf 提供本機處理功能,可將敏感資料保留在伺服器上,以永久授權免除訂閱費用,並提供基於 Chromium 的現代化渲染引擎。遷移路徑簡單直接:取代 NuGet 套件、更新 setter 方法為強式類型的屬性,以及調整佔位符語法。
立即使用 免費試用 IronPDF 開始您的遷移,體驗本機 PDF 處理的優點。
如需全面的實施指導,請探索 IronPDF 文件和 教學。






