跳至頁尾內容
產品對比

IronPDF 與 PDFShift:C# HTML 轉 PDF API 比較

IronPDF 提供可靠的本地 C# 庫,永久許可起價為 749 美元,而 PDFShift 提供雲端 API,按轉換次數付費定價。 對於每月處理超過 500 個 PDF 文件的新創公司而言,IronPDF 更具成本效益,提供更好的資料隱私和離線功能。

便攜式文件格式 (PDF)是一種在單一文件中表示文字、連結、圖形等的標準格式。 在 C# 中操作 PDF 需要專門用於 .NET 應用程式的 PDF 程式庫。 本文比較了兩種不同的 PDF 產生 API,檢視了它們的效能、功能和授權。 在建立 .NET 應用程式時,開發人員需要能夠處理複雜 HTML 佈局、 CSS 樣式和 JavaScript 渲染的PDF 生成功能

本文討論的PDF API包括:

  • IronPDF
  • PDFShift

IronPDF是什麼?

IronPDF 是一個完整的HTML 到 PDF 轉換API,專為 .NET 和 .NET Core 開發而設計。 此庫可轉換 HTML 網站並提供豐富的 PDF 處理功能。 IronPDF 讓開發人員能夠在 .NET 環境中建立修改提取 PDF 文件中的內容。 該程式庫簡化了從 HTML 頁面產生 PDF 的過程,並支援 MVC 應用程式和Razor PagesCSHTML 到 PDF 轉換

PDF文件可以進行編輯、添加印章,還可以透過增加頁首和頁尾來改進。 該庫簡化了PDF 文字的讀取圖像的提取。 IronPDF 使用.NET Chromium 引擎進行 HTML 到 PDF 的渲染。 此引擎可確保像素級完美渲染,並支援包括JavaScript 轉換為 PDF 的現代 Web 技術。 Chrome渲染引擎的這一里程碑標誌著渲染精度和效能優化方面取得了重大進展。

IronPDF提供哪些功能?

有哪些PDF轉換選項?

HTMLHTML 字串MVC 視圖Web 表單URL建立 PDF。 同時支援MarkdownXMLRTF格式轉換。 轉換功能包括DOCX 轉 PDF影像轉 PDF轉換。 對於 Web 應用程序,IronPDF 可處理ASPX 頁面轉換並支援無頭 CSHTML 渲染

PDF成像的工作原理是什麼?

從 PDF 建立圖像,以及從圖像建立 PDF 。 包括影像擷取、多種格式和PDF 列印。 支援SVG 圖形Azure Blob 儲存影像。 該庫可處理多幀 TIFF 轉換,並提供高品質的 PDF 到影像轉換。 為了實現記憶體高效的處理,請使用MemoryStream 進行光柵化

包含哪些檔案I/O功能?

IronPDF 提供128 位元加密、密碼保護和數位簽章。 包括HSM 簽名PDF/A 合規性PDF/A 里程碑擴展了對歸檔格式的支持,包括PDF/A-3 和 ZUGFeRD 。 其他安全功能包括清理 PDF 文件和管理修訂歷史記錄

如何編輯PDF文件?

IronPDF 提供浮水印頁面管理背景、前景和完整的PDF 操作功能。 包括繪圖註釋表單管理。 進階編輯功能包括文字替換編輯轉換 PDF 頁面PDFium DOM 里程碑改善了對複雜 PDF 結構的處理。

如何從PDF文件中提取內容?

直接從PDF文件中提取嵌入文字。 對於圖像中嵌入的文本,請使用IronOCRPDF DOM 物件提供對 PDF 結構的程式化存取。 進階提取功能包括讀取 PDF 文字管理字體。 對於文字分析,使用OpenAI 整合進行智慧文件處理。

頁首和頁尾是如何運作的?

建立 PDF 檔案時可以新增頁首和頁尾,也可以加入現有的 PDF 檔案中。 支援帶有動態頁碼的文字和 HTML 標題。 進階選項包括在特定頁面上新增頁首和管理分頁符號渲染選項可對版面和紙張尺寸進行精細控制。

相容哪些平台?

IronPDF 支援與 C# 相容的作業系統和框架:

相容性里程碑擴大了平台支援範圍。 有關部署指南,請參閱IronPDF 和 IIS以及部署故障排除

什麼是PDFShift?

PDFShift 是一個 HTML 轉 PDF 轉換 API,可透過雲端服務提供快速轉換。 此 API 提供平行轉換、非同步查詢、原始 HTML 支援等功能。 PDFShift 支援 Ruby、Python、JavaScript、Node 和 PHP。對於VB.NETF#開發人員,IronPDF 提供原生支持,而 PDFShift 則需要透過 HTTP 整合。 如需與其他雲端服務進行比較,請參閱Aspose 與 IronPDF 的比較以及Syncfusion 與 IronPDF 的比較

PDFShift 支援自訂頁首/頁尾、CSS 應用程式和檔案加密。 然而,該服務缺乏進階操作功能,例如PDF 壓縮線性化PDF/UA 合規性。 對於企業需求,請查看安全 CVE 揭露Kerberos 驗證

PDFShift提供哪些功能?

並行轉換是如何運作的?

PDFShift支援並行轉換,可同時處理多個文件。 有關類似功能,請參閱 IronPDF 的非同步和多執行緒指南。 IronPDF 提供並行 PDF 生成範例多執行緒產生範例,並附有效能基準測試。 非同步範例演示了批次最佳化。

有哪些頁首和頁尾選項可供選擇?

建立帶有頁碼和 CSS/JavaScript 的自訂頁首/頁尾。 IronPDF 提供進階選項,包括重複的表格標題自訂 HTML 標題傳統的文字標題實作起來比較簡單,而HTML 標題則可以實現複雜的版面。 對於動態內容,請使用JavaScript 訊息監聽器

我可以在不公開頁面的情況下轉換原始HTML嗎?

PDFShift轉換不包含公用頁面的原始HTML。 IronPDF 提供類似的功能,包括基本 URL 配置DataURI 嵌入嵌入圖像 base64 範例展示了獨立的 HTML 轉換。 為了確保轉換安全,請使用自訂日誌記錄HTTP 請求標頭

PDF文件的品質如何?

PDFShift 可以快速建立高保真 PDF 檔案。 IronPDF 的Chrome 渲染引擎可產生與瀏覽器輸出完全匹配的像素級完美 PDF 檔案。 這篇像素級精細教學講解了品質優化。 針對特定需求,配置視口設定渲染延遲

非同步請求是如何運作的?

透過簡單的整合實現轉換完成的即時通知。 IronPDF 提供完整的非同步支持,並附有大量處理範例。 非同步 PDF 生成範例展示了效能提升。 對於大規模處理,請參閱記憶體管理效能說明

如何在 Visual Studio 中建立新專案?

開啟 Visual Studio,選擇"檔案">"新專案">"控制台應用程式"。 本範例使用控制台應用程式。 有關安裝說明,請參閱安裝概述快速入門指南。 其他專案範本包括Blazor 教學課程MAUI PDF 檢視器。 如需排查安裝問題,請參閱快速故障排除指南

請輸入項目名稱和路徑。 點擊創建。 選擇所需的 .NET 框架:

Visual Studio 專案設定對話框,顯示新控制台應用程式 (.NET Framework) 專案的設定選項,包括專案名稱、位置和框架版本等欄位。

Visual Studio 產生應用程式結構並開啟program.cs以供程式碼輸入:

Visual Studio Code 編輯器顯示一個帶有語法高亮顯示的 C# 控制台應用程式模板,其中包含 using 語句和 Main 方法入口點。

如何安裝 IronPDF 庫?

四種安裝 IronPDF 的方法:

Visual Studio NuGet 套件管理器 Visual Studio 命令列

  • 直接從 NuGet 下載
  • 直接從 IronPDF 下載

其他方法,請參閱Windows Installer 指南進階 NuGet 安裝。 平台特定指南包括Linux 設定macOS 安裝Docker 部署。 對於空間受限的環境,請使用IronPDF Slim

如何使用 Visual Studio NuGet 套件管理器?

Visual Studio 提供NuGet 套件管理器,可直接安裝:

Visual Studio Code IDE 顯示了 NuGet 套件管理器介面,其中包含 .NET 開發的搜尋結果和套件安裝選項。

在軟體包管理器中搜尋"IronPDF":

Visual Studio NuGet 套件管理器顯示 IronPDF 套件的搜尋結果,包括各種 IronPDF 庫的版本號碼、下載次數和說明。

選擇 IronPDF 並安裝該軟體包。 對於較小的部署,請考慮使用IronPDF Slim 。 如果遇到問題,請參閱NuGet 套件部署失敗部署異常

如何使用 Visual Studio 命令列?

前往"工具">"NuGet 套件管理員">"套件管理器控制台":

Visual Studio 工具選單已展開,其中

在控制台中輸入:

Install-Package IronPdf

該軟體包將下載並安裝。 特定平台的安裝,請參閱LinuxmacOSDocker 部署。 如果出現依賴項錯誤,請檢查Chrome 依賴項Pdfium 相依性

Visual Studio 套件管理器控制台視窗顯示空白的命令提示符,介面則採用深色主題。

我可以直接從 NuGet 網頁下載嗎?

直接下載 NuGet 套件:

有關套件管理,請參閱IronPDF 運行時資料夾指南。 如果遇到版本衝突,請檢查組件版本不符ClickOnce 相容性

我可以直接從 IronPDF 網頁下載嗎?

IronPDF 下載頁面下載。 下載完成後:

  • 在解決方案視窗中右鍵點選項目 選擇參考文獻並瀏覽文件 按一下"確定"

有關許可設置,請參閱使用許可證密鑰應用許可證。 其他設定選項包括在 Web.config 中設定許可證和管理許可證擴充

PDFShift 的工作原理是什麼?

PDFShift 透過 API 進行遠端操作。 使用 C# RestClient和 API 金鑰驗證提交 POST 請求。 伺服器處理請求並透過 HTTP 返回 PDF 檔案。對於本機處理,IronPDF 的原生引擎可提供更佳的效能和安全性。 比較原生引擎和遠端引擎選項。 對於 API 替代方案,請查看Apryse 與 IronPDF以及iText 與 IronPDF 的比較。

如何將HTML轉換為PDF?

這兩種工具都提供HTML轉換功能,但方式不同。 IronPDF 提供豐富的選項,包括HTML ZIP 檔案自訂渲染建立 PDF 教程涵蓋了完整的生成方法。 對於進階場景,請探索JavaScript 渲染響應式 CSS 處理

如何使用 IronPDF 從 URL 建立 PDF?

從 URL 建立 PDF 需要三行程式碼。 此程式碼範例展示了 IronPDF 如何允許開發人員實現URL 到 PDF 的轉換

using IronPdf;

var Renderer = new IronPdf.ChromePdfRenderer();

// Configure render options for better results
Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
Renderer.RenderingOptions.MarginTop = 25;
Renderer.RenderingOptions.MarginBottom = 25;

// Create a PDF from a URL or local file path
using var pdf = Renderer.RenderUrlAsPdf("___PROTECTED_URL_68___");

// Export to a file or Stream
pdf.SaveAs("url.pdf");
using IronPdf;

var Renderer = new IronPdf.ChromePdfRenderer();

// Configure render options for better results
Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
Renderer.RenderingOptions.MarginTop = 25;
Renderer.RenderingOptions.MarginBottom = 25;

// Create a PDF from a URL or local file path
using var pdf = Renderer.RenderUrlAsPdf("___PROTECTED_URL_68___");

// Export to a file or Stream
pdf.SaveAs("url.pdf");
$vbLabelText   $csharpLabel

已驗證的頁面,請參閱TLS 網站登入。 對於 JavaScript 網站,請使用WaitFor 延遲自訂 JavaScript 。 進階選項包括渲染延遲JavaScript 到 PDF 的轉換。 有關效能最佳化,請參閱初始渲染緩慢的解決方案

輸出:

亞馬遜巴基斯坦網站在玩具和遊戲購物頁面上顯示一個更改收貨地址的彈出窗口,頁面上可以看到遊戲配件和電子產品類別。

如何使用 IronPDF 將 HTML 轉換為 PDF?

輕鬆將HTML轉換為PDF

using IronPdf;

var pdf = new ChromePdfRenderer();

// Add custom CSS for better formatting
pdf.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
pdf.RenderingOptions.EnableJavaScript = true;

// Include web fonts and icons
pdf.RenderingOptions.WaitFor.FontsLoaded();

PdfDocument doc = pdf.RenderHtmlAsPdf("<h1>This is a heading</h1>");
doc.SaveAs("FirstPDFDocument.pdf");
using IronPdf;

var pdf = new ChromePdfRenderer();

// Add custom CSS for better formatting
pdf.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
pdf.RenderingOptions.EnableJavaScript = true;

// Include web fonts and icons
pdf.RenderingOptions.WaitFor.FontsLoaded();

PdfDocument doc = pdf.RenderHtmlAsPdf("<h1>This is a heading</h1>");
doc.SaveAs("FirstPDFDocument.pdf");
$vbLabelText   $csharpLabel

對於複雜的 HTML 程式碼,請使用基本 URL而非相對路徑。 新增網頁字體和圖示以優化排版。 其他格式選項包括自訂字體國際語言。 有關字體故障排除,請參閱字體管理字體字距調整問題

PDF 檢視器介面顯示了一個簡單的文檔,其中包含

如何使用 PDFShift 從 URL 建立 PDF?

使用 PDFShift 轉換 URL 需要 POST 請求:

using System;
using RestSharp;
using RestSharp.Authenticators;
using System.IO;

namespace PDFShiftExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new RestClient("___PROTECTED_URL_69___");
            client.Authenticator = new HttpBasicAuthenticator("api", "your_api_key");

            var request = new RestRequest(Method.POST);

            var json = new
            {
                source = "___PROTECTED_URL_70___",
                // Additional options
                landscape = false,
                use_print = false
            };
            request.AddJsonBody(json);

            var response = client.Execute(request);
            if (!response.IsSuccessful)
            {
                // Handle the unsuccessful response
                Console.WriteLine($"Error: {response.StatusCode} - {response.ErrorMessage}");
            }
            else
            {
                File.WriteAllBytes("result.pdf", response.RawBytes);
            }
        }
    }
}
using System;
using RestSharp;
using RestSharp.Authenticators;
using System.IO;

namespace PDFShiftExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new RestClient("___PROTECTED_URL_69___");
            client.Authenticator = new HttpBasicAuthenticator("api", "your_api_key");

            var request = new RestRequest(Method.POST);

            var json = new
            {
                source = "___PROTECTED_URL_70___",
                // Additional options
                landscape = false,
                use_print = false
            };
            request.AddJsonBody(json);

            var response = client.Execute(request);
            if (!response.IsSuccessful)
            {
                // Handle the unsuccessful response
                Console.WriteLine($"Error: {response.StatusCode} - {response.ErrorMessage}");
            }
            else
            {
                File.WriteAllBytes("result.pdf", response.RawBytes);
            }
        }
    }
}
$vbLabelText   $csharpLabel

如何使用 PDFShift 將 HTML 轉換為 PDF?

PDFShift 提供 HTML 轉 PDF 功能:

using System;
using System.IO;
using RestSharp;
using RestSharp.Authenticators;

namespace PDFShiftExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new RestClient("___PROTECTED_URL_71___");
            client.Authenticator = new HttpBasicAuthenticator("api", "your_api_key");

            var request = new RestRequest(Method.POST);

            string documentContent = File.ReadAllText("document.html");
            var json = new
            {
                source = documentContent,
                // Additional formatting options
                margin = "20px",
                format = "A4"
            };
            request.AddJsonBody(json);

            var response = client.Execute(request);
            if (!response.IsSuccessful)
            {
                // Handle the unsuccessful response
                Console.WriteLine($"Error: {response.StatusCode}");
            }
            else
            {
                File.WriteAllBytes("result.pdf", response.RawBytes);
            }
        }
    }
}
using System;
using System.IO;
using RestSharp;
using RestSharp.Authenticators;

namespace PDFShiftExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new RestClient("___PROTECTED_URL_71___");
            client.Authenticator = new HttpBasicAuthenticator("api", "your_api_key");

            var request = new RestRequest(Method.POST);

            string documentContent = File.ReadAllText("document.html");
            var json = new
            {
                source = documentContent,
                // Additional formatting options
                margin = "20px",
                format = "A4"
            };
            request.AddJsonBody(json);

            var response = client.Execute(request);
            if (!response.IsSuccessful)
            {
                // Handle the unsuccessful response
                Console.WriteLine($"Error: {response.StatusCode}");
            }
            else
            {
                File.WriteAllBytes("result.pdf", response.RawBytes);
            }
        }
    }
}
$vbLabelText   $csharpLabel

如何新增自訂頁首和頁尾?

頁首和頁尾透過提供跨頁面一致的資訊來改善 PDF 文件。 IronPDF 和 PDFShift 都支援此功能。 對於進階場景,請參閱為頁面新增頁首分頁符號控制頁碼和分頁符號範例展示了完整的實作方式。 如需控制佈局,請探索自訂邊距PDF 頁面方向

如何使用 IronPDF 增加頁首和頁尾?

IronPDF 提供了兩種實現頁首和頁尾的方法:

TextHeaderFooter :此方法使用具有動態資料的文字標題。

HtmlHeaderFooter :這種方法允許使用模板渲染 HTML 格式的頁首和頁尾。

using IronPdf;

var Renderer = new IronPdf.ChromePdfRenderer();

// Configure text header with merge fields
Renderer.RenderingOptions.FirstPageNumber = 1; // use 2 if a cover page will be appended
Renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
Renderer.RenderingOptions.TextHeader.CenterText = "{url}";
Renderer.RenderingOptions.TextHeader.Font = IronPdf.Font.FontTypes.Helvetica;
Renderer.RenderingOptions.TextHeader.FontSize = 12;

// Add HTML footer with page numbers
Renderer.RenderingOptions.HtmlFooter = new IronPdf.HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>",
    Height = 25,
    DrawDividerLine = true
};

// Apply custom margins
Renderer.RenderingOptions.MarginTop = 40;
Renderer.RenderingOptions.MarginBottom = 40;

var pdf = Renderer.RenderHtmlAsPdf("<h1>Document with Headers</h1>");
pdf.SaveAs("headers-footers.pdf");
using IronPdf;

var Renderer = new IronPdf.ChromePdfRenderer();

// Configure text header with merge fields
Renderer.RenderingOptions.FirstPageNumber = 1; // use 2 if a cover page will be appended
Renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
Renderer.RenderingOptions.TextHeader.CenterText = "{url}";
Renderer.RenderingOptions.TextHeader.Font = IronPdf.Font.FontTypes.Helvetica;
Renderer.RenderingOptions.TextHeader.FontSize = 12;

// Add HTML footer with page numbers
Renderer.RenderingOptions.HtmlFooter = new IronPdf.HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>",
    Height = 25,
    DrawDividerLine = true
};

// Apply custom margins
Renderer.RenderingOptions.MarginTop = 40;
Renderer.RenderingOptions.MarginBottom = 40;

var pdf = Renderer.RenderHtmlAsPdf("<h1>Document with Headers</h1>");
pdf.SaveAs("headers-footers.pdf");
$vbLabelText   $csharpLabel

對於複雜的佈局,可以考慮使用目錄書籤大綱和書籤範例提供了導航結構。 為了精確定位,請使用自訂邊距範例轉換 PDF 頁面

如何使用 PDFShift 新增頁首和頁尾?

PDFShift允許對文件進行自訂,新增頁首和頁尾以進行識別或品牌推廣:

using System;
using RestSharp;
using RestSharp.Authenticators;
using System.IO;

namespace PDFShiftExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new RestClient("___PROTECTED_URL_72___");
            client.Authenticator = new HttpBasicAuthenticator("api", "your_api_key");

            var request = new RestRequest(Method.POST);

            var json = new
            {
                source = "___PROTECTED_URL_73___",
                footer = new { 
                    source = "<div style=\"font-size: 12px\">Page {{page}} of {{total}}</div>", 
                    spacing = "50px" 
                },
                header = new {
                    source = "<div>Company Name</div>",
                    spacing = "30px"
                }
            };
            request.AddJsonBody(json);

            var response = client.Execute(request);
            if (!response.IsSuccessful)
            {
                // Handle the unsuccessful response
            }
            else
            {
                File.WriteAllBytes("result.pdf", response.RawBytes);
            }
        }
    }
}
using System;
using RestSharp;
using RestSharp.Authenticators;
using System.IO;

namespace PDFShiftExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new RestClient("___PROTECTED_URL_72___");
            client.Authenticator = new HttpBasicAuthenticator("api", "your_api_key");

            var request = new RestRequest(Method.POST);

            var json = new
            {
                source = "___PROTECTED_URL_73___",
                footer = new { 
                    source = "<div style=\"font-size: 12px\">Page {{page}} of {{total}}</div>", 
                    spacing = "50px" 
                },
                header = new {
                    source = "<div>Company Name</div>",
                    spacing = "30px"
                }
            };
            request.AddJsonBody(json);

            var response = client.Execute(request);
            if (!response.IsSuccessful)
            {
                // Handle the unsuccessful response
            }
            else
            {
                File.WriteAllBytes("result.pdf", response.RawBytes);
            }
        }
    }
}
$vbLabelText   $csharpLabel

如何在PDF文件中加入浮水印?

在PDF文件上新增浮水印可以為文件增加品牌標識和安全性。 IronPDF 和 PDFShift 都支援浮水印功能。 有關其他選項,請參閱"為文字和圖像新增印章""為新內容新增印章"PDF水印範例示範了高級技術。 對於批次處理,請使用高效率的 HTML 時間戳記

如何使用 IronPDF 加水印?

IronPDF 可以使用 HTML 為 PDF 新增浮水印。 水印可以包含不透明度、旋轉角度和超連結。 例如,請參閱PDF 水印範例。 對於多個印章,請考慮使用高效能的 HTML 印章。 其他選項包括背景和前景範例以及繪製文字和點陣圖

using IronPdf;

var Renderer = new IronPdf.ChromePdfRenderer();
using var Pdf = Renderer.RenderUrlAsPdf("___PROTECTED_URL_74___");

// Add text watermark with opacity and rotation
Pdf.WatermarkAllPages("<h2 style='color:red'>SAMPLE</h2>", 
    IronPdf.Editing.WaterMarkLocation.MiddleCenter, 
    50, // opacity
    -45, // rotation
    "___PROTECTED_URL_75___");

// Add image watermark
Pdf.ApplyWatermark("<img src='logo.png' style='width:200px'>", 
    30, // opacity
    IronPdf.Editing.VerticalAlignment.Top,
    IronPdf.Editing.HorizontalAlignment.Right);

Pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
using IronPdf;

var Renderer = new IronPdf.ChromePdfRenderer();
using var Pdf = Renderer.RenderUrlAsPdf("___PROTECTED_URL_74___");

// Add text watermark with opacity and rotation
Pdf.WatermarkAllPages("<h2 style='color:red'>SAMPLE</h2>", 
    IronPdf.Editing.WaterMarkLocation.MiddleCenter, 
    50, // opacity
    -45, // rotation
    "___PROTECTED_URL_75___");

// Add image watermark
Pdf.ApplyWatermark("<img src='logo.png' style='width:200px'>", 
    30, // opacity
    IronPdf.Editing.VerticalAlignment.Top,
    IronPdf.Editing.HorizontalAlignment.Right);

Pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
$vbLabelText   $csharpLabel

對於高級浮水印,可結合背景和前景自訂印章附件封面範例展示了文件品牌標識。 為了實現精確控制,請使用旋轉文字縮放 PDF 物件

IronPDF NuGet 套件頁面顯示版本 2022.6.6115,包含安裝指令、370 萬次下載量以及用於 C# PDF 建立和操作的功能。

如何使用PDFShift加入浮水印?

PDFShift允許在文件中添加浮水印以作識別之用:

using System;
using RestSharp;
using RestSharp.Authenticators;
using System.IO;

namespace PDFShiftExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new RestClient("___PROTECTED_URL_76___");
            client.Authenticator = new HttpBasicAuthenticator("api", "your_api_key");

            var request = new RestRequest(Method.POST);

            var json = new
            {
                source = "___PROTECTED_URL_77___",
                watermark = new { 
                    image = "___PROTECTED_URL_78___", 
                    offset_x = 50, 
                    offset_y = "100px", 
                    rotate = 45,
                    opacity = 0.5
                }
            };
            request.AddJsonBody(json);

            var response = client.Execute(request);
            if (!response.IsSuccessful)
            {
                // Handle the unsuccessful response
            }
            else
            {
                File.WriteAllBytes("result.pdf", response.RawBytes);
            }
        }
    }
}
using System;
using RestSharp;
using RestSharp.Authenticators;
using System.IO;

namespace PDFShiftExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new RestClient("___PROTECTED_URL_76___");
            client.Authenticator = new HttpBasicAuthenticator("api", "your_api_key");

            var request = new RestRequest(Method.POST);

            var json = new
            {
                source = "___PROTECTED_URL_77___",
                watermark = new { 
                    image = "___PROTECTED_URL_78___", 
                    offset_x = 50, 
                    offset_y = "100px", 
                    rotate = 45,
                    opacity = 0.5
                }
            };
            request.AddJsonBody(json);

            var response = client.Execute(request);
            if (!response.IsSuccessful)
            {
                // Handle the unsuccessful response
            }
            else
            {
                File.WriteAllBytes("result.pdf", response.RawBytes);
            }
        }
    }
}
$vbLabelText   $csharpLabel

這些工具對Bootstrap和現代CSS的支援程度如何?

現代網頁開發依賴 CSS 框架來實現響應式設計,而 PDF 庫必須準確地轉換這些框架。 請參閱Bootstrap 和 Flex CSS 指南。 對於響應式設計,請檢查視窗和縮放設定以及自訂紙張尺寸自訂 PDF 紙張尺寸範例顯示了精確的尺寸。 對於佈局控制,請探索適應紙張大小、縮放響應式 HTML 轉 PDF

IronPDF是否支援Bootstrap和現代CSS框架?

IronPDF 的Chrome 渲染引擎為 CSS 框架提供了廣泛的支援:

Bootstrap 5:完整的 Flexbox 和 CSS Grid 佈局,以及響應式實用工具 Bootstrap 4:完整的卡片系統、導航、表單元件

  • Tailwind CSS:所有實用類別和響應式修飾符 -基礎:完整的網格和組件系統 現代CSS3: Flexbox、Grid、自訂屬性、動畫、變換

驗證: Bootstrap 首頁模板轉換準確無誤。 請參閱渲染選項指南。 IronPDF 支援Angular 轉 PDF及其他框架。 其他框架支援包括JavaScript 圖表WebGL 渲染。 為了獲得最佳效果,請使用HTML 渲染設定像素級精確格式

程式碼範例:使用 Bootstrap 的聯絡表單

using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure for improve Bootstrap rendering
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 500; // Allow JS to execute
renderer.RenderingOptions.ViewPortWidth = 1200; // Desktop viewport

string bootstrapContact = @"
<!DOCTYPE html>
<html>
<head>
    <link href='___PROTECTED_URL_79___ rel='stylesheet'>
    <style>
        @media print {
            .no-print { display: none; }
        }
    </style>
</head>
<body>
    <div class='container my-5'>
        <div class='row justify-content-center'>
            <div class='col-lg-8'>
                <div class='card shadow'>
                    <div class='card-header bg-primary text-white'>
                        <h2 class='mb-0'>Contact Us</h2>
                    </div>
                    <div class='card-body'>
                        <form>
                            <div class='row g-3'>
                                <div class='col-md-6'>
                                    <label class='form-label'>First Name</label>
                                    <input type='text' class='form-control' placeholder='John'>
                                </div>
                                <div class='col-md-6'>
                                    <label class='form-label'>Last Name</label>
                                    <input type='text' class='form-control' placeholder='Doe'>
                                </div>
                            </div>

                            <div class='mt-3'>
                                <label class='form-label'>Email Address</label>
                                <div class='input-group'>
                                    <span class='input-group-text'>@</span>
                                    <input type='email' class='form-control' placeholder='john.doe@example.com'>
                                </div>
                            </div>

                            <div class='mt-3'>
                                <label class='form-label'>Subject</label>
                                <select class='form-select'>
                                    <option>General Inquiry</option>
                                    <option>Technical Support</option>
                                    <option>Sales Question</option>
                                    <option>Partnership Opportunity</option>
                                </select>
                            </div>

                            <div class='mt-3'>
                                <label class='form-label'>Message</label>
                                <textarea class='form-control' rows='5' placeholder='Your message here...'></textarea>
                            </div>

                            <div class='d-flex justify-content-between align-items-center mt-4'>
                                <div class='form-check'>
                                    <input class='form-check-input' type='checkbox' id='newsletter'>
                                    <label class='form-check-label' for='newsletter'>
                                        Subscribe to newsletter
                                    </label>
                                </div>
                                <button type='submit' class='btn btn-primary px-4'>Submit</button>
                            </div>
                        </form>
                    </div>
                </div>

                <div class='alert alert-info mt-4 d-flex align-items-center' role='alert'>
                    <svg class='bi flex-shrink-0 me-2' width='24' height='24'></svg>
                    <div>We typically respond within 24 hours during business days.</div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapContact);
pdf.SaveAs("contact-form.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure for improve Bootstrap rendering
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 500; // Allow JS to execute
renderer.RenderingOptions.ViewPortWidth = 1200; // Desktop viewport

string bootstrapContact = @"
<!DOCTYPE html>
<html>
<head>
    <link href='___PROTECTED_URL_79___ rel='stylesheet'>
    <style>
        @media print {
            .no-print { display: none; }
        }
    </style>
</head>
<body>
    <div class='container my-5'>
        <div class='row justify-content-center'>
            <div class='col-lg-8'>
                <div class='card shadow'>
                    <div class='card-header bg-primary text-white'>
                        <h2 class='mb-0'>Contact Us</h2>
                    </div>
                    <div class='card-body'>
                        <form>
                            <div class='row g-3'>
                                <div class='col-md-6'>
                                    <label class='form-label'>First Name</label>
                                    <input type='text' class='form-control' placeholder='John'>
                                </div>
                                <div class='col-md-6'>
                                    <label class='form-label'>Last Name</label>
                                    <input type='text' class='form-control' placeholder='Doe'>
                                </div>
                            </div>

                            <div class='mt-3'>
                                <label class='form-label'>Email Address</label>
                                <div class='input-group'>
                                    <span class='input-group-text'>@</span>
                                    <input type='email' class='form-control' placeholder='john.doe@example.com'>
                                </div>
                            </div>

                            <div class='mt-3'>
                                <label class='form-label'>Subject</label>
                                <select class='form-select'>
                                    <option>General Inquiry</option>
                                    <option>Technical Support</option>
                                    <option>Sales Question</option>
                                    <option>Partnership Opportunity</option>
                                </select>
                            </div>

                            <div class='mt-3'>
                                <label class='form-label'>Message</label>
                                <textarea class='form-control' rows='5' placeholder='Your message here...'></textarea>
                            </div>

                            <div class='d-flex justify-content-between align-items-center mt-4'>
                                <div class='form-check'>
                                    <input class='form-check-input' type='checkbox' id='newsletter'>
                                    <label class='form-check-label' for='newsletter'>
                                        Subscribe to newsletter
                                    </label>
                                </div>
                                <button type='submit' class='btn btn-primary px-4'>Submit</button>
                            </div>
                        </form>
                    </div>
                </div>

                <div class='alert alert-info mt-4 d-flex align-items-center' role='alert'>
                    <svg class='bi flex-shrink-0 me-2' width='24' height='24'></svg>
                    <div>We typically respond within 24 hours during business days.</div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapContact);
pdf.SaveAs("contact-form.pdf");
$vbLabelText   $csharpLabel

輸出:一個專業的聯絡表單,採用 Bootstrap 的表單控制項、網格版面配置、卡片樣式和輸入組-所有內容均以 PDF 格式精確呈現。

更多範例請參閱渲染圖表WebGL 網站在 HTML 中新增條碼的範例顯示了其他 HTML 元素。 為了最佳化效能,請使用PDF 資源和效能指南以及套件大小管理

PDFShift 是否支援 Bootstrap 和現代 CSS?

-雲端 API:所有轉換均透過 HTTP API 呼叫 PDFShift 伺服器完成

  • Bootstrap 支援:通常能很好地處理 Bootstrap 4/5 佈局。
  • CSS3 支援:良好的 flexbox 和現代 CSS 渲染 -需要連網:無法離線產生 PDF 文件 -按文件計費:按轉換次數收費,而非按開發者許可收費。

PDFShift 的關鍵考量: -外部依賴:所有 PDF 產生都需要網路連線和外部 API 的可用性。 -資料隱私:傳送至第三方伺服器處理的 HTML 內容 -批量成本:按文件計費在大規模應用時可能會變得非常昂貴。 -延遲:網路往返會為每次轉換增加延遲 -不支援離線功能:無法在實體隔離或離線環境下工作

開發影響:雖然 PDFShift 對 Bootstrap 的支援很好,但雲端架構引入了一些操作上的權衡:

  1. 持續的按文件計費成本與 IronPDF 的一次性按開發者許可相比
  2. 外部服務依賴性與本地處理
  3. 敏感內容的資料處理注意事項
  4. 網路連線需求與離線能力

發展影響:雲架構引入了營運方面的考量:

  1. 持續的單份文件成本與一次性授權成本
  2. 外部依賴性與本地處理控制
  3. 敏感內容的資料處理要求
  4. 網路連線前提條件

對於大批量應用或敏感數據,IronPDF 的本地處理功能可提供更好的控制和價值。 為了提高效能,可以考慮並行生成多執行緒多線程範例展示了並發處理。 有關雲端替代方案,請參閱Azure 部署AWS Lambda 整合

請參閱Bootstrap 和 Flexbox CSS 指南以及HTML 渲染設定。 為了支援現代 CSS,請查看國際語言、CMYK元資料可見度

有哪些授權許可選項?

IronPDF 提供免費的開發者許可證。 輕量級套餐起價為$799 ,無任何隱藏費用。 該軟體包包含SaaS 和 OEM 再分發。 所有許可證均提供 30 天退款保證、一年支援和升級,並永久有效,可用於開發、測試、預發布和生產環境。 請參閱IronPDF 的定價和許可資訊。 如需許可證管理,請參閱應用程式許可證密鑰許可證密鑰配置許可證密鑰指南涵蓋所有配置方法。 如需授權故障排除,請參閱"無法連線至授權伺服器""使用聲明"

IronPDF 的許可頁面顯示三個等級:Lite 版(499 美元)、Professional 版(999 美元)和 Unlimited 版(2,999 美元),每個等級都有開發者和專案數量的限制。

PDFShift提供五種套餐,可使用積分按月或按年付費:

1.免費:每月 50 點 2.新創企業:每月 500 點(9 美元)或每年 6,000 點(99 美元) 3.加速計畫:每月 2,500 點(24 美元)或每年 30,000 點(240 美元) 4.成長:每月 5,000 點(39 美元)或每年 60,000 點(390 美元) 5.企業版:每月 25,000 點(99 美元)

檔案大小限制:1MB(免費),5MB(付費方案)。

PDFShift 定價對比,展示了三種年度套餐:Startup(90 美元)、Boost(240 美元)和 Growth(390 美元),每種套餐的每月額度限額和超額費用各不相同。

造訪PDFShift 定價頁面

我應該選擇哪個PDF API?

IronPDF對獨立開發者免費,並提供豐富的 PDF 修改和轉換功能。 IronPDF 提供卓越的編輯格式化工具。 此函式庫可將HTML 轉換為向量 PDF,用於商業印刷,輸出清晰、高品質。 請參閱Iron 軟體許可資訊。 如需更多功能,請探索PDF 的組織PDF 的簽名和保護以及PDF 轉換選項完整的功能清單涵蓋所有功能。 對於企業功能,請查看數位簽章範例以及加密和解密

PDFShift 是一個基於雲端的 HTML 轉 PDF API,具有簡單的介面並支援多種語言。 PDFShift 透過伺服器請求處理並行轉換。 然而,該服務缺乏高級功能,例如PDF 表單建立PDF 合併文字替換元資料編輯。 有關表單處理比較,請參閱表單資料範例填寫及編輯表單。 關於文件組織,請查看合併 PDF 範例分割 PDF 頁面

IronPDF 許可證是針對開發者,一次性購買即可使用。 PDFShift採用每月或按年計費的積分制許可,需持續訂閱。 IronPDF支援OEM和SaaS分發; PDFShift 則不然。 有關許可證管理,請參閱IronPDF 擴充升級選項變更日誌記錄所有產品更新。 有關支援選項,請參閱工程支援請求指南最佳支援實務

比較兩款工具:IronPDF 提供的功能多很多。 PDFShift提供的PDF操作功能有限。 IronPDF 只需三行程式碼即可將URL 轉換為 PDF,而 PDFShift 則需要更複雜的程式碼。 IronPDF 可以快速輕鬆地整合到 .NET 專案中。 PDFShift 的雲端系統依賴RestSharp和外部 API,這增加了整合的複雜性。 有關故障排除資源,請參閱快速故障排除指南工程支援。 其他資源包括Azure 日誌檔案AWS 日誌檔案。 有關部署指南,請參閱Azure 部署故障排除偵錯 Azure Functions

Iron Software 以兩款工具的價格提供五款工具。 鐵娘子套房包括:

IronBarcode - 條碼產生與讀取 IronXL - 無需 Office 即可操作 Excel 文件 IronOCR - 進階文字擷取 OCR IronPDF - 完整的 PDF 操作庫 IronWebScraper - 網路爬蟲與資料擷取

請造訪Iron Suite 頁面,了解 IRONSUITE。如需了解其他 Iron Software 產品,請參閱IronSecureDoc 文檔,滿足您的文檔安全需求。 產品演示展示了實際應用場景。 如需進行競爭分析,請查看QuestPDF 與 IronPDF 的比較。 里程碑頁面重點介紹了自 2015 年以來的主要成就。

請注意PDFShift 是其各自所有者的註冊商標。 本網站與 PDFShift 無任何關聯,也未獲得其認可或贊助。 所有產品名稱、標誌和品牌均為其各自所有者的財產。 文中比較僅供參考,反映的是撰寫本文時可公開取得的資訊。

常見問題解答

如何在C#中將HTML轉換為PDF?

您可以使用 IronPDF 的RenderHtmlAsPdf方法將 HTML 字串轉換為 PDF。您也可以使用RenderHtmlFileAsPdf將 HTML 檔案轉換為 PDF。

使用 IronPDF 進行 PDF 處理有哪些好處?

IronPDF 提供了一套強大的 PDF 處理功能,包括從各種格式建立 PDF、影像擷取、加密、編輯功能,以及與 Windows、Linux 等多個平台和 Azure、AWS 等雲端服務的兼容性。

PDFShift的主要特點有哪些?

PDFShift 是一個基於雲端的 API,支援快速的 HTML 到 PDF 轉換,具有並行轉換、自訂標頭、非同步請求以及與多種程式語言相容等功能。

IronPDF 和 PDFShift 在授權方面有何不同?

IronPDF 提供基於開發者的許可模式,一次性購買即可享有 30 天退款保證。相比之下,PDFShift 採用基於積分的授權系統,提供每月和年度套餐。

IronPDF 可以在雲端環境中使用嗎?

是的,IronPDF 支援 Microsoft Azure 和 AWS 等雲端環境,使其能夠靈活應用於不同的部署場景。

如何使用 IronPDF 為 PDF 新增頁首和頁尾?

IronPDF 允許您使用其內建方法為 PDF 添加頁首和頁腳,這些方法可以進行自訂,以包含文字、圖像或頁碼。

IronPDF 支援哪些平台?

IronPDF 支援幾乎所有與 C# 相容的作業系統和框架,包括 Windows、Linux、.NET Core,也可以在雲端環境中使用。

如何在我的 Visual Studio 專案中安裝 IronPDF?

IronPDF 可以透過 Visual Studio NuGet 套件管理器、Visual Studio 命令列進行安裝,也可以直接從 NuGet 或 IronPDF 網頁下載安裝。

是否可以使用 IronPDF 從 PDF 中擷取影像?

是的,IronPDF 提供了從 PDF 中提取影像的功能,可讓開發人員在原始文件之外操作和重複使用影像。

柯蒂斯·週
技術撰稿人

Curtis Chau擁有卡爾頓大學電腦科學學士學位,專長於前端開發,精通Node.js、TypeScript、JavaScript和React。他熱衷於打造直覺美觀的使用者介面,喜歡使用現代框架,並擅長撰寫結構清晰、視覺效果出色的使用者手冊。

除了開發工作之外,柯蒂斯對物聯網 (IoT) 也抱有濃厚的興趣,致力於探索硬體和軟體整合的創新方法。閒暇時,他喜歡玩遊戲和製作 Discord 機器人,將他對科技的熱愛與創造力結合。