IRONSOFTWAREHOME
PDF工具

IronPDF vs Accusoft PDF Viewer:哪個 C# 程式庫最適合 HTML 到 PDF?

Curtis Chau
Curtis Chau
Updated: 2026年9月4日

IronPDF 和 Accusoft PDF Viewer 都能在 .NET 中將 HTML 轉換為 PDF。 IronPDF 提供簡單的語法、本地處理無需雲端依賴,和無限次的轉換,起始於 $999。 相反地,Accusoft 需要網路連接,且按交易次數收費。

比較 IronPDF 與 Accusoft PDF Viewer

  • 將 HTML 轉換為 PDF
  • 為 PDF 設置頁眉和頁腳
  • 將 PDF 轉換為影像文件
  • 比較授權、免費試用選項等

概覽

什麼是 IronPDF 及其運作方式?

IronPDF 是一個C# HTML 到 PDF 的程式庫,讓開發人員能夠從來源建立 PDF 文件,例如HTML 字串網頁URL。 它還允許設置屬性,如浮水印書籤頁眉和頁腳。 此外,開發人員可以合併多個 PDF 文件為一個,或使用PDF 頁面轉換為圖像,反之亦然可以使用圖片到 PDF 的轉換

IronPDF 是免費用於開發並為現場項目提供30 天的部署試用。 它提供完整的文件程式範例API 參考,以幫助開發人員快速開始。

開發人員可以從此連結下載檔案項目。

什麼是 Accusoft PrizmDoc Viewer 及其運作方式?

PrizmDoc Viewer 是一個 REST API,可遠程處理PDF 文件並將其轉換為其他格式。 PrizmDoc 能夠將超過 100 種不同的文件格式轉換為 PDF 和 PDF 再PNG、JPGTIFF和 SVG。 它還為應用程式提供各種電子簽名選項

IronPDF 和 PrizmDoc Viewer 有何不同?

IronPDFPrizmDoc Viewer
Work with PDF files programmatically. 程式設計地與 PDF 文件工作。
Supports .NET Core with Windows, Mac, or Linux. 使用 Windows、Mac 或 Linux 支援 .NET Core。
Works Locally Sends Documents to a remote server.
Work with or without Asynchronous Programming. 必須使用 System.Threading.Tasks 進行非同步程式設計。
Works offline once installed. 需要互聯網連接以進行 PrizmDoc 伺服器請求。
Provides many predefined functions. 提供部分預定義功能。
Often requires minimal lines of code. 通常需要多行程式碼。
Unlimited conversions per project in each license. 雲托管授權中有限的交易量。
Free for development without time limits. 試用時有限的交易次數。

讓我們安裝兩個程式庫並比較程式碼。


步驟 1:安裝

如何在我的 .NET 專案中安裝 IronPDF?

有兩種方法來安裝 IronPDF於專案中,兩者之間沒有差異。 IronPDF 支援各種環境,包括Azure 部署AWS LambdaDocker 容器Blazor 應用程式

下載 IronPDF 的不同方式有哪些?

下載 IronPDF.dll 並將其引用加入至專案。 開發人員也可以使用Windows 安裝程式進行系統範圍的安裝。 在此之後,IronPDF 的命名空間可以使用如下:

using IronPdf;

現在,開發人員可以輕鬆存取 IronPDF 的提供的函式和類別,包括用於渲染的ChromePdfRendererPDF 文件操作安全功能

如何透過 NuGet Package Manager 安裝 IronPDF?


如何安裝 Accusoft 的 PrizmDoc Viewer?

PrizmDoc Viewer 有兩個部分:一個稱為 PrizmDoc Server 的伺服器端組件,行為如 RESTful API,與向 API 發送請求並接收回應的客戶端計劃。 與沒有外部依賴的 IronPDF本地運行不同,PrizmDoc 需要網路連接以進行基於雲的操作。

如何存取 PrizmDoc 伺服器?

PrizmDoc 伺服器是一個伺服器端應用程式,接受包含文件的基本資訊作為請求(輸入),將文件轉換為PDF 文件,然後將轉換後的 PDF 文件作為回應(輸出)發送回來。 它是該產品的技術核心 — 文件處理和轉換引擎。開發人員可以通過兩種不同的方法使用,兩者具有相同的程式結構和技術:

  1. 自行託管

這個選項需要安排一個伺服器。 下載 PrizmDoc 伺服器 並安裝。 瞭解更多有關如何在 Windows 上安裝 PrizmDoc 伺服器。

:自行託管 PrizmDoc 伺服器需要大量記憶體和處理資源 — 請諮詢Accusoft的大小指南以獲取當前需求。 相比之下,IronPDF 的系統需求要溫和得多。

  1. 雲託管

此基於雲的服務消除了安排伺服器的需求。 如要使用此選項,建立一個帳戶並從首頁的 API key 中複製 API Key

首先,讓我們檢查直接與Accusoft server互動來將文件轉換成 PDF 文件的 PrizmDoc Viewer 的基本結構,使用於 C# Console Application 中的 WebClient()

:以下範例概念性地展示 PrizmDoc 如何處理 PDF 文件。這是冗長的,因此可以跳過此範例和直接進入比較

Accusoft 的工作結構如何運作?

此範例將 myWebpage.html 轉換為 sample.pdf。 與IronPDF 直接的 HTML 到 PDF 轉換不同,PrizmDoc 需要多次 API 呼叫。

:必須安裝Newtonsoft.Json程式庫並在專案中引用。

首先,將以下程式庫新增到專案中:

using System;
using System.IO;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq; // Install Newtonsoft.Json via NuGet Package Manager

然後建立一個公共變數 Accusoft API Key 並將 API 金鑰粘貼在其中:

static string ApiKey = "Your-API-KEY";

使用 PrizmDoc Viewer 操作 PDF 文件分為三個步驟:

  1. 將檔案上傳到 PrizmDoc 伺服器。
  2. 轉換上傳的文件。
  3. PrizmDoc 伺服器下載轉換後的文件。

每一步都有一個單獨的功能處理:

static void Main(string[] args)
{
    //---Upload file to Server---
    JObject uploadResults = UploadToServer("myWebpage.html").Result;
    string fileID = (string)uploadResults.SelectToken("fileId");
    string affinityToken = (string)uploadResults.SelectToken("affinityToken");

    //---Convert the uploaded file to PDF---
    JObject convertResults = Convert(affinityToken, fileID).Result;
    string processId = (string)convertResults.SelectToken("processId");
    affinityToken = (string)convertResults.SelectToken("affinityToken");

    //---Check the status that conversion is completed---
    JObject convertStatusResults = ConvertStatus(processId, affinityToken).Result;
    string convertStatus = (string)convertStatusResults.SelectToken("state");

    //---Continuously checking whether conversion completed---
    while (!(convertStatus.Equals("complete")))
    {
        System.Threading.Thread.Sleep(30000);
        convertStatusResults = ConvertStatus(processId, affinityToken).Result;
        convertStatus = (string)convertStatusResults.SelectToken("state");
    }

    //---Download the converted file from server---
    string newFileID = (string)convertStatusResults.SelectToken("output.results[0].fileId");
    DownloadFromServer(affinityToken, newFileID, "sample.pdf").Wait();

    Console.WriteLine("PDF file created successfully...!");
    Console.ReadKey();
}

1. 上傳檔案至伺服器:

public static async Task<JObject> UploadToServer(string fileToUpload)
{
    FileInfo input = new FileInfo(fileToUpload);
    if (input == null)
    {
        throw new ArgumentException("Missing parameter input", nameof(input));
    }
    var fileName = input.Name;
    var endpoint = new Uri("___PROTECTED_URL_123___");
    using (var client = new WebClient())
    {
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Content-Type", "application/octet-stream");
        using (var reader = new BinaryReader(input.OpenRead()))
        {
            var data = reader.ReadBytes((int)reader.BaseStream.Length);
            var results = await client.UploadDataTaskAsync(endpoint, "POST", data);
            string getResult = Encoding.ASCII.GetString(results);
            return JObject.Parse(getResult);
        }
    }
}

2. 將上傳的檔案轉換為 PDF:

public static async Task<JObject> Convert(string affinityToken, string fileID)
{
    var endpoint = new Uri("___PROTECTED_URL_124___");
    using (var client = new WebClient())
    {
        client.Headers.Add("Content-Type", "application/json");
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
        JObject myJson =
            new JObject(
                new JProperty("input",
                    new JObject(
                        new JProperty("sources",
                            new JArray(
                                new JObject(
                                    new JProperty("fileId", fileID)
                                )
                            )
                        ),
                        new JProperty("dest",
                            new JObject(
                                new JProperty("format", "pdf")
                            )
                        )
                    )
                )
            );
        string results = await client.UploadStringTaskAsync(endpoint, "POST", myJson.ToString());
        return JObject.Parse(results);
    }
}

以下 JSON 是 myJson 物件的結果值:

{
  "input": {
    "sources": 
    [
      {"fileId": "Auto Generated FileId Value"}
    ],
    "dest": {
      "format": "pdf"
    }
  }
}
JSON

檢查是否已完成轉換的狀態

public static async Task<JObject> ConvertStatus(string processId, string affinityToken)
{
    string endpoint = "___PROTECTED_URL_125___" + processId;
    using (var client = new WebClient())
    {
        client.BaseAddress = endpoint;
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
        string results = await client.DownloadStringTaskAsync(endpoint);
        return JObject.Parse(results);
    }
}

3. 從伺服器下載轉換後的文件

public static async Task DownloadFromServer(string affinityToken, string fileId, string outfile)
{
    var endpoint = new Uri("___PROTECTED_URL_126___" + fileId);

    using (var client = new WebClient())
    {
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
        FileInfo output = new FileInfo(outfile);

        using (var writeStream = output.Create())
        {
            var results = await client.DownloadDataTaskAsync(endpoint);
            await writeStream.WriteAsync(results, 0, results.Length);
        }
    }
}

以上範例需要大量努力。 為了減少工作量,Accusoft 引入了一個名為 Accusoft.PrizmDocServerSDK 的 .NET 程式庫,一個 PrizmDoc 伺服器 REST API 的外殼。 讓我們檢查如何在 .NET 專案中安裝和使用此程式庫。

如何安裝 Accusoft.PrizmDocServerSDK?

有兩種方式安裝此外殼。

  • Package Manager Console:

    如果使用 Package Manager Console,請運行以下命令:

    CODEBLOCK_10

  • 管理解決方案的套件:

    如果使用 NuGet 包管理器 GUI,在搜尋欄中瀏覽 Accusoft.PrizmDocServerSDK 並安裝。

現在,開發人員可以輕鬆存取 Accusoft.PrizmDocServer 命名空間並使用它:

using Accusoft.PrizmDocServer;

如何操作指南

IronPDF 和 PrizmDoc Viewer 在程式碼範例中如何比較?

在檢查完兩個組件的簡介和安裝後,是時候使用兩者進行操作。 以下使用案例展示使用兩個構件的實施,以幫助理解程式設計結構並確定哪個適合專案要求。


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

在此比較中,讓我們將名為 myWebPage.html 的網頁轉換為PDF 文件並將其保存到目標位置。 IronPDF 的Chrome 渲染引擎可提供像素完美的轉換,全面支援CSSJavaScript網頁字型

IronPDF 如何將 HTML 轉換為 PDF?

using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var converter = new ChromePdfRenderer();
    // Render HTML file to PDF
    using var PDF = converter.RenderHTMLFileAsPdf("myWebPage.html");
    // Save to target location
    PDF.SaveAs("sample.pdf");
}

上面的程式碼會建立一個 sample.pdf 文件並將其保存到專案的 bin>debug 文件夾中。 IronPDF 也支援HTML 字串網址,甚至包含 HTML 的 ZIP 文件作為輸入來源。

開發人員也可以像這樣指定任何路徑:PDF.SaveAs("E:/sample.pdf");,或者保存記憶體流以便進行雲端部署。

閱讀更多有關使用 IronPDF 操作 PDF 文件的資訊。

現在,讓我們使用 PrizmDoc Viewer 執行相同任務以進行比較。

PrizmDoc Viewer 如何將 HTML 轉換為 PDF?

PrizmDoc Viewer 安裝部分中,討論了獲取 Accusoft API Key。 這是它的使用方法。

首先,向 PrizmDoc 伺服器發送請求並接收回應。 此過程需要時間,需要非同步程式設計。 IronPDF 也支援非同步方法以提高性能。

:在使用 PrizmDoc Viewer 的雲服務建立 PDF 文件時,請確保系統已連接到互聯網。

using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    ChromePdfRenderer().GetAwaiter().GetResult();
}

private static async Task ChromePdfRenderer()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_127___", "Your-API-KEY");
    // Specify HTML file and convert it to a PDF.
    ConversionResult result = await prizmDocServer.ConvertToPdfAsync("myWebPage.html");
    // Save PDF file to the target location
    await result.RemoteWorkFile.SaveAsync("sample.pdf");
}

閱讀更多有關 PrizmDoc Viewer 的工作方式。

哪個程式庫提供更簡單的 HTML 到 PDF 轉換?

這些範例展示了 IronPDF 提供了一種更簡單的方法來建立 PDF 文件,且需要更少的時間。IronPDF 還提供渲染選項來微調輸出,包括自定義紙張尺寸邊距視窗設置


如何使用 IronPDF 和 PrizmDoc Viewer 將圖像轉換為 PDF?

此比較展示如何從位於 debug 專案文件夾中的圖像建立 PDF 文件。 開發人員先從 IronPDF 開始。

IronPDF 如何將圖像轉換為 PDF?

using IronPdf;

static void Main(string[] args)
{
    // Specify the image to be converted
    using var converted = ImageToPdfConverter.ImageToPdf("google.png");
    // Save PDF file to the target location
    converted.SaveAs("sample.pdf");
}

IronPDF 也支援多框架 TIFF 轉換從 Azure Blob 儲存嵌入圖像Base64 圖像嵌入

輸出:

此螢幕截圖展示了使用上述程式碼建立的新 PDF 文件 sample.pdf

PDF 文件顯示了居中的 Google 圖標在白色背景上,展示了 IronPDF 將圖像轉換為 PDF 的能力

使用 IronPDF 從圖像建立 PDF 文件很簡單。 現在,讓我們使用 PrizmDoc Viewer 執行相同的任務,並檢查其生成的 PDF 文件。

PrizmDoc Viewer 如何將圖像轉換為 PDF?

using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    ImageToPDF().GetAwaiter().GetResult();
}

private static async Task ImageToPDF()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_128___", "Your-API-KEY");
    // Specify the image to be converted
    ConversionResult results = await prizmDocServer.ConvertToPdfAsync("google.png");
    // Save PDF file to the target location
    await results.RemoteWorkFile.SaveAsync("sample.pdf");
}

**輸出:**此螢幕截圖展示了使用上述程式碼生成的新 PDF 文件 sample.pdf

PDF viewer displaying the Google logo on a gray background, showing `PrizmDoc`'s image conversion result

哪個程式庫需要更少的程式碼來進行圖像轉換為 PDF?

IronPDF 僅需兩行程式碼。 相反,使用 PrizmDoc 伺服器涉及更多行程式碼以及非同步編程。 IronPDF 的輸出還自動提供了一個可用的全頁面文件。 IronPDF 還提供額外的選項以供圖像定位多圖像轉換


如何使用 IronPDF 和 PrizmDoc Viewer 合併多個 PDF 文件?

在此比較中,假設存在三個 PDF 文件,名稱為 B.pdfC.pdf。 任務是將它們合併為一個 PDF 文件。 這兩個具件均可執行此任務。 首先,這個例子展示如何使用 IronPDF 完成這個任務。

IronPDF 如何合併 PDF 文件?

using IronPdf;
using System.Collections.Generic;

static void Main(string[] args)
{
    // Create rendering converter  
    var Renderer = new IronPdf.ChromePdfRenderer();
    // Create a list of pdf files
    var PDFs = new List<PdfDocument>();
    PDFs.Add(PdfDocument.FromFile("A.pdf"));
    PDFs.Add(PdfDocument.FromFile("B.pdf"));
    PDFs.Add(PdfDocument.FromFile("C.pdf"));
    // Merge the list of pdf file
    using PdfDocument PDF = PdfDocument.Merge(PDFs);
    // Save merged file to the target location
    PDF.SaveAs("sample.pdf");

    foreach(var pdf in PDFs)
    {
        pdf.Dispose();
    }
}

上面的程式碼建立了一個 sample.pdf 文件,其中合併了 B.pdfC.pdf。 IronPDF 還支援在 PDF 之間新增和複製頁面拆分 PDF

現在,讓我們使用 PrizmDoc Viewer 執行相同的任務。

PrizmDoc Viewer 如何合併 PDF 文件?

using System.Threading.Tasks;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    PdfMerge().GetAwaiter().GetResult();
}

private static async Task PdfMerge()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_129___", "Your-API-KEY");
    // Pass the list of pdf files to PrizmDoc Server
    ConversionResult result = await prizmDocServer.CombineToPdfAsync(
        new []
        {
            new ConversionSourceDocument("A.pdf"),
            new ConversionSourceDocument("B.pdf"),
            new ConversionSourceDocument("C.pdf"),
        });
    // Save merged file to the target location
    await result.RemoteWorkFile.SaveAsync("sample.pdf");
}

上述程式碼還建立了一個 sample.pdf 文件,其中合併了 B.pdfC.pdf 文件。


如何使用 IronPDF 和 PrizmDoc Viewer 向 PDF 新增頁眉和頁腳?

在此比較中,假設存在一個簡單的 WebPage 名為 myWebPage.html,包含以下 HTML 和 CSS:

<html>
<head>
    <style>
        li {
            font-size: x-large;
            color: rgba(156, 89, 13, 0.897);
            list-style: square;
        }
    </style>
</head>
<body>
    <h1 style="text-align: center;">Hello World..!</h1>
    <h1>Main Menu</h1>
    <ul>
        <li>SubMenu 1</li>
        <li>SubMenu 2</li>
        <li>SubMenu 3</li>
        <li>SubMenu 4</li>
        <li>SubMenu 5</li>
    </ul>
</body>
</html>
HTML

目標是將此 WebPage 轉換為具有以下頁眉和頁腳屬性的 PDF 文件:

  • 頁眉左側的 Page Title
  • 頁眉右側的 DateTime
  • 頁腳右側的 Page Number of Total Pages

首先,我們來看看 IronPDF 如何處理頁眉和頁腳。

IronPDF 如何處理 PDF 頁眉和頁腳?

IronPDF 提供了一個 ChromePdfRenderer 類的屬性,以處理 PDF 頁眉和頁腳,稱為 RenderingOptions,可以如下使用:

  • 頁眉:

    CODEBLOCK_19

  • 頁腳:

    CODEBLOCK_20

在初始化 TextHeaderFooter() 時,可以設置以下屬性:

  • CenterText 用於在頁眉或頁腳中間列印文字
  • LeftText 用於在頁眉或頁腳左側列印文字
  • RightText 用於在頁眉或頁腳右側列印文字
  • DrawDividerLine 繪製線條以分隔頁面內容與頁眉或頁腳
  • FontFamily 用於指定頁眉或頁腳的字體
  • FontSize 用於指定頁眉或頁腳的字體大小
  • 間距 調整頁面內容與頁眉或頁腳之間的距離

以下預定義屬性有助於設置頁眉或頁腳的內容。 它們寫在大括號中 { }

  • {page} 在頁眉或頁腳列印當前頁號
  • {total-pages} 在頁眉或頁腳列印總頁數
  • {url} 在頁眉或頁腳列印渲染頁面的 URL
  • {date} 在頁眉或頁腳列印當前日期
  • {time} 在頁眉或頁腳列印當前時間
  • {html-title} 在頁眉或頁腳列印渲染網頁的標題
  • {pdf-title} 在頁眉或頁腳列印文件的標題

詳細閱讀以瞭解如何使用 IronPDF 設定頁眉和頁腳。 IronPDF 也支援HTML 頁眉和頁腳以便進行更複雜的設計。

範例展示了以下需求用例的實現,以演示如何使用上述屬性:

using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var converter = new ChromePdfRenderer();
    // Setting Header properties
    converter.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        DrawDividerLine = true,
        LeftText = "Page Title",
        RightText = "{date} {time}",
        FontSize = 13
    };
    // Setting footer properties
    converter.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        RightText = "Page {page} of {total-pages}",
        FontSize = 12
    };
    // Specify the file to be converted
    using var PDF = converter.RenderHTMLFileAsPdf("myWebPage.html");
    // Save to target location
    PDF.SaveAs("sample.pdf");
}

**輸出:**以上程式碼建立的 PDF 文件 sample.pdf 的截圖:

PDF 文件帶有自定義的頁眉顯示"頁面標題"和日期/時間,展示了 IronPDF 的頁眉和頁腳功能

使用 IronPDF 設置頁眉和頁腳時,建立 PDF 文件時語言直觀。 現在,此範例展示 PrizmDoc Viewer 如何處理頁眉和頁腳。

PrizmDoc Viewer 如何處理 PDF 頁眉和頁腳?

PrizmDoc Viewer 提供 HeaderFooterOptions 類來處理頁眉和頁腳,具有以下屬性:

  • 指定頁眉和頁腳的行(s),每行都有以下屬性:
    • 在頁眉或頁腳行左側列印文字
    • 中心 在頁眉或頁腳行中心列印文字
    • 在頁眉或頁腳行右側列印文字
  • FontFamily 用於指定頁眉或頁腳文字的字體
  • FontSize 用於指定頁眉或頁腳文字的字體大小
  • 顏色 用於指定頁眉或頁腳文字的顏色

瞭解更多有關使用 PrizmDoc 伺服器設置 PDF 頁面頁眉和頁腳的資訊。

此範例展示如何使用上述屬性實現需求用例:

using System.Threading.Tasks;
using System.Collections.Generic;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    SetHeaderFooter().GetAwaiter().GetResult();
}

private static async Task SetHeaderFooter()
{
    // Instantiate PrizmDocServerClient object with Header and footer properties
    var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_130___", "Your-API-KEY");
    
    ConversionResult result = await prizmDocServer.ConvertToPdfAsync(
        "myWebPage.html",
        header: new HeaderFooterOptions
        {
            Lines = new List<HeaderFooterLine>
            {
                new HeaderFooterLine { Left = "Page Title", Right = DateTime.Now.ToString() }
            },
        },
        footer: new HeaderFooterOptions
        {
            Lines = new List<HeaderFooterLine>
            {
                new HeaderFooterLine { Right = "Page {{pageNumber}} of {{pageCount}}" },
            },
        });
    
    // Save to the target location
    await result.RemoteWorkFile.SaveAsync("sample.pdf");
}

輸出:

上面的程式碼建立的 PDF 文件的截圖:

PDF with header showing 'Page Title' and timestamp, comparing `PrizmDoc`'s header/footer implementation

哪個程式庫在設置頁眉和頁腳方面提供更多靈活性?

IronPDF 提供更多功能來設置頁眉和頁腳的屬性,並且程式設計結構較為簡單,與 PrizmDoc Viewer 相比。 IronPDF 生成的 PDF 文件在可讀性和吸引力方面也比 PrizmDoc Viewer 生成的文件要好。IronPDF 還支援頁碼頁面中斷以改善文件控制。


如何使用 IronPDF 和 PrizmDoc Viewer 將 PDF 頁面轉換為圖像?

在此比較中,假設您有一個名為 Sample_PDF.pdf 的簡單 PDF 文件,其中包含兩頁。

Page1Page2
PDF 檢視器顯示範例 PDF 的第 1 頁,帶有 Lorem ipsum 文字和標準檢視器控制項
PDF 檢視器顯示範例 PDF 的第 2 頁,帶有 Lorem ipsum 文字和導航控制項

任務是為每個頁面建立圖像。 首先,該例子將如何使用 IronPDF 來執行此操作。

IronPDF 如何將 PDF 頁面轉換為圖像?

using IronPdf;

static void Main(string[] args)
{
    // Specify file to be converted
    var pdf = PdfDocument.FromFile("Sample_PDF.pdf");
    // Save images to the target location
    pdf.RasterizeToImageFiles("image_*.png");
}

IronPDF 還支援將圖像保存到記憶體流不同的圖像格式,包括 JPEG、TIFF 等。

輸出:

上面的程式碼建立了以下兩個 .png 圖像:

頁面1 圖像頁面2 圖像
從 PDF 頁面 1 生成的 PNG 圖像,顯示 Virtual Mechanics 教程內容,並具有清晰的文字渲染
從 PDF 頁面 2 生成的 PNG 圖像,顯示 IronPDF 的光柵化質量所繼續的文字內容

使用 IronPDF 建立 PDF 頁面的圖像很簡單。 現在,讓我們使用 PrizmDoc Viewer 執行相同的任務。

PrizmDoc Viewer 如何將 PDF 頁面轉換為圖像?

using System.Linq;
using System.Collections.Generic;
using System.Threading.Tasks;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    PdfToImage().GetAwaiter().GetResult();
}

private static async Task PdfToImage()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_131___", "Your-API-KEY");
    // Convert PDF file to images
    IEnumerable<ConversionResult> results = await prizmDocServer.ConvertAsync("Sample_PDF.pdf", DestinationFileFormat.Png);
    
    // Save each image.
    for (int i = 0; i < results.Count(); i++)
    {
        await results.ElementAt(i).RemoteWorkFile.SaveAsync($"page-{i + 1}.png");
    }
}

輸出:

上面的程式碼還建立了以下兩個 .png 圖像:

Page1Page2
使用 PrizmDoc 的轉換服務從 PDF 頁面 1 生成的 PNG 圖像,其中包含範例文字內容
從 PDF 頁面 2 生成的 PNG 圖像,顯示 PrizmDoc 的圖像轉換輸出品質

哪個程式庫讓 PDF 到圖像轉換更容易?

PrizmDoc Viewer 相比,IronPDF 允許開發人員輕鬆建立每頁的圖像,甚至不需要遍訪各頁,且使用的程式碼很少。


我可以在 IronPDF 中使用 Bootstrap 5 資料表嗎?

IronPDF 的Chrome V8 渲染引擎Bootstrap 5 資料表提供了卓越的支援,使開發人員能夠生成具有複雜表格式樣的專業PDF 報告。 此範例展示了漸層頁眉、狀態徽章、分頁控制項和摘要指標 — 這些功能突顯了 IronPDF 相較於傳統 PDF 檢視器如 PrizmDoc 的優勢。 IronPDF 完全支援現代 CSS 功能,包括flexbox 佈局漸層響應設計

using IronPdf;

var renderer = new ChromePdfRenderer();

string dataTableReport = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='___PROTECTED_URL_132___ rel='stylesheet'>
    <style>
        .table-header {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            padding: 30px;
            border-radius: 10px 10px 0 0;
        }
        .table-container {
            background: white;
            border-radius: 0 0 10px 10px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.1);
            overflow: hidden;
        }
        .table th {
            background: #f8f9fa;
            font-weight: 600;
            text-transform: uppercase;
            font-size: 0.85rem;
            letter-spacing: 0.5px;
        }
        .status-badge {
            padding: 0.35em 0.65em;
            border-radius: 0.25rem;
            font-weight: 600;
            font-size: 0.75rem;
        }
        .trend-positive { color: #198754; font-weight: 700; }
        .trend-negative { color: #dc3545; font-weight: 700; }
        @media print {
            .table-container { page-break-inside: avoid; }
        }
    </style>
</head>
<body class='bg-light'>
    <div class='container py-5'>
        <div class='table-container'>
            <div class='table-header'>
                <div class='row align-items-center'>
                    <div class='col-md-8'>
                        <h2 class='mb-2'>Sales Performance Report</h2>
                        <p class='mb-0 opacity-75'>Q4 2024 Regional Analysis</p>
                    </div>
                    <div class='col-md-4 text-end'>
                        <div class='btn-group btn-group-sm'>
                            <button class='btn btn-light'>Export</button>
                            <button class='btn btn-light'>Filter</button>
                            <button class='btn btn-light'>Sort</button>
                        </div>
                    </div>
                </div>
            </div>

            <div class='p-4'>
                <div class='row mb-3'>
                    <div class='col-md-4'>
                        <input type='text' class='form-control form-control-sm' placeholder='Search regions...'>
                    </div>
                    <div class='col-md-8 text-end'>
                        <span class='text-muted small'>Showing 1-10 of 48 results</span>
                    </div>
                </div>

                <div class='table-responsive'>
                    <table class='table table-hover align-middle'>
                        <thead>
                            <tr>
                                <th>Region</th>
                                <th>Revenue</th>
                                <th>Units Sold</th>
                                <th>Growth</th>
                                <th>Status</th>
                                <th>Action</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>
                                    <strong>North America</strong><br>
                                    <small class='text-muted'>USA, Canada, Mexico</small>
                                </td>
                                <td>$4,280,000</td>
                                <td>12,450</td>
                                <td><span class='trend-positive'>↑ 18.5%</span></td>
                                <td><span class='status-badge bg-success text-white'>Exceeding</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Europe</strong><br>
                                    <small class='text-muted'>EU, UK, Switzerland</small>
                                </td>
                                <td>$3,650,000</td>
                                <td>10,890</td>
                                <td><span class='trend-positive'>↑ 12.3%</span></td>
                                <td><span class='status-badge bg-success text-white'>On Track</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Asia Pacific</strong><br>
                                    <small class='text-muted'>Japan, Australia, Singapore</small>
                                </td>
                                <td>$2,940,000</td>
                                <td>8,320</td>
                                <td><span class='trend-positive'>↑ 24.7%</span></td>
                                <td><span class='status-badge bg-primary text-white'>Growing</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Latin America</strong><br>
                                    <small class='text-muted'>Brazil, Argentina, Chile</small>
                                </td>
                                <td>$1,580,000</td>
                                <td>4,670</td>
                                <td><span class='trend-positive'>↑ 8.9%</span></td>
                                <td><span class='status-badge bg-info text-white'>Stable</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Middle East</strong><br>
                                    <small class='text-muted'>UAE, Saudi Arabia, Israel</small>
                                </td>
                                <td>$980,000</td>
                                <td>2,890</td>
                                <td><span class='trend-negative'>↓ 3.2%</span></td>
                                <td><span class='status-badge bg-warning text-dark'>Review</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                        </tbody>
                        <tfoot class='table-light'>
                            <tr>
                                <td><strong>Total</strong></td>
                                <td><strong>$13,430,000</strong></td>
                                <td><strong>39,220</strong></td>
                                <td><strong class='trend-positive'>↑ 14.8%</strong></td>
                                <td colspan='2'></td>
                            </tr>
                        </tfoot>
                    </table>
                </div>

                <div class='d-flex justify-content-between align-items-center mt-4'>
                    <div>
                        <select class='form-select form-select-sm' style='width: auto; display: inline-block;'>
                            <option>10 per page</option>
                            <option>25 per page</option>
                            <option>50 per page</option>
                        </select>
                    </div>
                    <nav>
                        <ul class='pagination pagination-sm mb-0'>
                            <li class='page-item disabled'><a class='page-link' href='#'>Previous</a></li>
                            <li class='page-item active'><a class='page-link' href='#'>1</a></li>
                            <li class='page-item'><a class='page-link' href='#'>2</a></li>
                            <li class='page-item'><a class='page-link' href='#'>3</a></li>
                            <li class='page-item'><a class='page-link' href='#'>Next</a></li>
                        </ul>
                    </nav>
                </div>
            </div>
        </div>

        <div class='row g-3 mt-4'>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-primary mb-1'>$13.4M</h3>
                        <small class='text-muted'>Total Revenue</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-success mb-1'>39,220</h3>
                        <small class='text-muted'>Units Sold</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-info mb-1'>14.8%</h3>
                        <small class='text-muted'>Growth Rate</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-warning mb-1'>5</h3>
                        <small class='text-muted'>Active Regions</small>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(dataTableReport);
pdf.SaveAs("data-table-report.pdf");

此程式碼生成了一個複雜的資料表報告,具有漸變頁眉、響應桌、狀態徽章和摘要指標。 IronPDF 的 Chrome 渲染引擎保存了所有 Bootstrap 樣式,包含桌子懸停效果、徽章顏色和分頁控制項 — 能力超出了傳統 PDF 檢視器的應用範圍。 該引擎還支持動態內容的JavaScript 渲染自訂字型UTF-8 國際字元

相對於 PrizmDoc 檢視器的主要優勢:

欲了解更多 Bootstrap PDF 生成的詳細資訊,請參閱完整的渲染文件。 開發人員還可以探索Angular 到 PDF 的轉換以及其他JavaScript 框架支援。## IronPDF 和 PrizmDoc 檢視器之間的授權費用如何比較?

在審查了這兩個元件的技術結構和可用功能後,下述內容概述了授權價格。 這很重要,因為開發人員旨在在預算限制內滿足需求。

IronPDF 的授權選項有哪些?

IronPDF 的授權起價為**$999**,適用於單一開發者。 IronPDF 提供靈活的授權選項,包括開發授權、部署授權擴展選項,以獲得持續的支持和更新。

對於在為多個客戶服務的公司或代理工作的開發人員,IronPDF 提供分級授權,可以根據團隊規模和專案數量進行調整。 隨著需求的演變,IronPDF 提供授權升級路徑

所有 IronPDF 的授權包都包括1 年的支持和更新閱讀更多有關授權包、級別和價格的資訊。 開發人員還可以以各種方式應用授權金鑰,包括Web.config和環境變數。

PrizmDoc 檢視器的授權選項有哪些?

自我託管 PrizmDoc 的成本是多少?

自我託管的 PrizmDoc 伺服器提供年度授權。 聯絡 Accusoft 以獲取 PrizmDoc 檢視器的當前價格和可用套件。

基於雲的 PrizmDoc 的成本是多少?

此授權涵蓋基於雲的 PrizmDoc 檢視器服務,並根據交易量進行縮放。

術語:

Transaction 指的是向 PrizmDoc 檢視器伺服器發送請求並接收輸出(生成的文件)。

Prepaid Buckets 意味著支付一次並接收不會過期的交易。

雲定價是基於使用情況,並隨著交易量的增長而擴大。 聯絡 Accusoft 查詢當前雲定價級別和費率。


教程快速存取

獲取 C# IronPDF 快速入門手冊

免費的 PDF 資源指導,簡化了 .NET 的 PDF 開發,內含操作指南,展示如何在 C# 和 VB.NET 專案中操縱、編輯、生成和儲存 PDF。

下載指南

探索 IronPDF API 參考

探索 IronPDF C# 程式庫的 API 參考,包括 IronPDF 的所有功能、類別、方法欄位、命名空間和枚舉的詳細資訊。

查看 API 參考
請注意: Accusoft 的 PrizmDoc 檢視器是其各自所有者的註冊商標。 本網站與 Accusoft 的 PrizmDoc 檢視器無關聯、未獲其認可或贊助。 所有產品名稱、徽標和品牌均為其各自所有者的財產。 比較僅供資訊參考,並反映了撰寫時的公開可用資訊。
Curtis Chau
技術作家

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

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
預訂您的免費現場演示
Booking Badge

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表格或電子郵件sales@ironsoftware.com
您的詳細資訊將始終保密
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立