跳過到頁腳內容
使用IRONPDF

如何在ASP.NET Core中創建PDF查看器

使用 .NET 建立 Web 應用程式通常需要直接在瀏覽器中顯示 PDF 文件。 無論是發票、報告還是互動式 PDF 表單,最終用戶都希望獲得無縫的文件檢視體驗,而無需 Adobe Acrobat Reader 或其他第三方瀏覽器工具。

在本教學中,我們將向您展示如何使用 IronPDF為 ASP.NET 和 .NET Core 實作 PDF 檢視器。 這款強大的 PDF 檢視器控制項可讓開發人員在其 .NET 應用程式中建立、渲染和顯示 PDF 文件,為處理業務關鍵型文件提供專業的解決方案。

ASP.NET Core 中 PDF 檢視的工作原理是什麼?

現代瀏覽器都內建了 PDF 檢視器。 當您使用正確的 MIME 類型(application/pdf)提供 PDF 檔案時,瀏覽器會自動將其內嵌顯示。這意味著您無需外部外掛程式即可查看 PDF 文件或顯示 PDF 文件。 關鍵在於產生高品質的 PDF 檔案並配置正確的回應標頭。

IronPDF 是一個經常更新的 .NET PDF 庫,它擅長從 HTML、Razor 視圖或現有文件創建像素級完美的 PDF 頁面。 它基於 Chrome 的渲染確保了對 CSS、JavaScript 和圖像的精確支持,為最終用戶提供類似於桌面 PDF 檢視器的檢視體驗。

設定您的 ASP.NET Core 項目

首先建立一個新的 ASP.NET Core MVC 應用程式:

dotnet new mvc -n PdfViewerApp
cd PdfViewerApp

這將建立一個支援 MVC 的基本 .NET 應用程式。 然後您可以安裝 PDF 處理和渲染所需的 IronPDF NuGet 套件。

如何安裝和配置 IronPDF?

安裝 IronPDF 只需幾個步驟。 在 Visual Studio 中開啟程式包管理器控制台,並執行以下命令:

Install-Package IronPdf

或使用 .NET CLI:

dotnet add package IronPdf

在 Program.cs 或 Startup.cs 中設定 IronPDF:

// Add this at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // Use your trial or commercial key
// Add this at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // Use your trial or commercial key
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

安裝完成後,在 Program.cs 中設定您的許可證密鑰。 IronPDF 的文件提供了更多設定資訊和範例。

如何產生可供檢視的PDF檔案?

IronPDF 讓您可以從原始 HTML、網頁或 Razor 視圖建立 PDF 檔案。 然後,只需幾行 C# 原始程式碼即可將產生的 PDF 文件內嵌顯示。 例如,使用 ChromePdfRenderer,您可以渲染 HTML 並將其作為 PDF 文件傳回瀏覽器,該 PDF 檔案將顯示在您的 ASP.NET PDF 檢視器控制項中。

這種方法避免了強制下載,使用戶能夠直接在您的 Web 表單或 Blazor 專案中檢視、列印、搜尋和保存 PDF 檔案。

從 HTML 字串建立 PDF

最簡單的方法是將HTML直接轉換成PDF:

using IronPdf;
public class PdfController : Controller
{
    public IActionResult GenerateFromHtml()
    {
        var renderer = new ChromePdfRenderer();
        // Create PDF from HTML
        var html = @"
            <html>
            <head>
                <style>
                    body { font-family: Arial; padding: 20px; }
                    h1 { color: #333; }
                </style>
            </head>
            <body>
                <h1>Sample PDF Document</h1>
                <p>This PDF was generated using IronPDF in ASP.NET Core.</p>
            </body>
            </html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        // Return PDF to browser for viewing
        return File(pdf.BinaryData, "application/pdf");
    }
}
using IronPdf;
public class PdfController : Controller
{
    public IActionResult GenerateFromHtml()
    {
        var renderer = new ChromePdfRenderer();
        // Create PDF from HTML
        var html = @"
            <html>
            <head>
                <style>
                    body { font-family: Arial; padding: 20px; }
                    h1 { color: #333; }
                </style>
            </head>
            <body>
                <h1>Sample PDF Document</h1>
                <p>This PDF was generated using IronPDF in ASP.NET Core.</p>
            </body>
            </html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        // Return PDF to browser for viewing
        return File(pdf.BinaryData, "application/pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

本範例展示如何直接從 HTML 字串產生 PDF。 創建了一個 ChromePdfRenderer,它使用 Chromium 進行精確渲染。 將 HTML(包含內嵌 CSS)傳遞給 RenderHtmlAsPdf,產生 PdfDocument。 返回文件時使用 application/pdf MIME 類型可確保瀏覽器以內聯方式顯示該文件。這對於在 ASP.NET Core 中動態產生報表或發票非常有用。

從 URL 生成 PDF。

將現有網頁轉換為 PDF:

public IActionResult GenerateFromUrl(string url = "https://ironpdf.com")
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.WaitFor.JavaScript(3000);
    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    var pdf = renderer.RenderUrlAsPdf(url);
    Response.Headers.Add("Content-Disposition", "inline; filename=webpage.pdf");
    return File(pdf.BinaryData, "application/pdf");
}
public IActionResult GenerateFromUrl(string url = "https://ironpdf.com")
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.WaitFor.JavaScript(3000);
    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    var pdf = renderer.RenderUrlAsPdf(url);
    Response.Headers.Add("Content-Disposition", "inline; filename=webpage.pdf");
    return File(pdf.BinaryData, "application/pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF 將即時網頁轉換為 PDF 檔案。 RenderUrlAsPdf 方法取得頁面,套用樣式和腳本,並輸出精美的 PDF。 將 Content-Disposition 標頭設定為 inline 會使檔案在瀏覽器的 PDF 檢視器中開啟。 這非常適合將網頁內容存檔或以 PDF 文件形式共用。

輸出

如何在 ASP.NET Core 中建立 PDF 檢視器:圖 2 - PDF 檢視器中顯示的 PDF 輸出 URL

將 Razor 視圖轉換為 PDF

動態地將 Razor 視圖轉換為 PDF:

public async Task<IActionResult> ViewToPdf()
{
    // Render the view to HTML string first
    var htmlContent = await RenderViewToString("Invoice", invoiceModel);
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(htmlContent);
    return File(pdf.BinaryData, "application/pdf");
}
private async Task<string> RenderViewToString(string viewName, object model)
{
    ViewData.Model = model;
    using (var sw = new StringWriter())
    {
        var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
        var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
        viewResult.View.Render(viewContext, sw);
        return sw.ToString();
    }
}
public async Task<IActionResult> ViewToPdf()
{
    // Render the view to HTML string first
    var htmlContent = await RenderViewToString("Invoice", invoiceModel);
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(htmlContent);
    return File(pdf.BinaryData, "application/pdf");
}
private async Task<string> RenderViewToString(string viewName, object model)
{
    ViewData.Model = model;
    using (var sw = new StringWriter())
    {
        var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
        var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
        viewResult.View.Render(viewContext, sw);
        return sw.ToString();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

這段程式碼將 Razor 視圖轉換為 PDF。 首先使用 RenderViewToString 將視圖渲染成 HTML 字串,然後使用 RenderHtmlAsPdf 進行轉換。 結果以瀏覽器可查看的文件形式傳回。這樣,您可以將 Razor 範本(例如發票)重複用於網頁顯示和 PDF 生成,從而確保一致性。

如何在瀏覽器中顯示PDF檔案?

內嵌顯示 PDF 檔案(而不是下載)的關鍵在於設定正確的回應標頭。

基本內嵌顯示器

public IActionResult ViewPdf()
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
    Response.Headers.Add("Content-Disposition", "inline");
    return File(pdf.BinaryData, "application/pdf");
}
public IActionResult ViewPdf()
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
    Response.Headers.Add("Content-Disposition", "inline");
    return File(pdf.BinaryData, "application/pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

此範例強制 PDF 檔案以內聯方式顯示,而不是下載。 使用 RenderHtmlAsPdf 函數將簡單的 HTML 字串轉換為 PDF 文件,並將 Content-Disposition 標頭設為 inline。這是一種直接在瀏覽器中預覽生成的 PDF 文件的快捷方法。

輸出

如何在 ASP.NET Core 中建立 PDF 檢視器:圖 3 - 簡單的內嵌 PDF 檢視器範例

動態 PDF 載入

無需刷新頁面即可載入不同的PDF檔案:

[HttpGet]
public IActionResult GetPdfList()
{
    var pdfs = new List<object>
    {
        new { id = 1, name = "Report 1" },
        new { id = 2, name = "Report 2" }
    };
    return Json(pdfs);
}
[HttpGet]
public IActionResult GetPdf(int id)
{
    var renderer = new ChromePdfRenderer();
    var html = $"<h1>Report {id}</h1><p>Content for report {id}</p>";
    var pdf = renderer.RenderHtmlAsPdf(html);
    return File(pdf.BinaryData, "application/pdf");
}
// Load PDF dynamically
function loadPdf(pdfId) {
    const frame = document.getElementById('pdfFrame');
    frame.src = `/Pdf/GetPdf?id=${pdfId}`;
}
[HttpGet]
public IActionResult GetPdfList()
{
    var pdfs = new List<object>
    {
        new { id = 1, name = "Report 1" },
        new { id = 2, name = "Report 2" }
    };
    return Json(pdfs);
}
[HttpGet]
public IActionResult GetPdf(int id)
{
    var renderer = new ChromePdfRenderer();
    var html = $"<h1>Report {id}</h1><p>Content for report {id}</p>";
    var pdf = renderer.RenderHtmlAsPdf(html);
    return File(pdf.BinaryData, "application/pdf");
}
// Load PDF dynamically
function loadPdf(pdfId) {
    const frame = document.getElementById('pdfFrame');
    frame.src = `/Pdf/GetPdf?id=${pdfId}`;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

這段程式碼可以動態地將不同的PDF檔案載入到檢視器中。 控制器提供 PDF 清單並按需產生這些 PDF 檔案。 JavaScript loadPdf 函數會更新<iframe>無需重新載入頁面即可取得來源文件,從而實現文件之間的快速切換。

部署方面有哪些注意事項?

IronPDF 可套用於 ASP.NET、ASP.NET Core 和 Blazor Server 專案。 您可以將其託管在伺服器上、部署到 Azure 或使用 Docker 進行容器化。 由於它是一個經常更新且有積極支持的庫,您可以依靠它進行企業級文件處理。

Azure部署

部署到 Azure 應用程式服務時,IronPDF 可以無縫運行,只需極少的配置。 為獲得最佳效能,請確保您的應用程式服務計劃至少為 B1 等級。 IronPDF 會自動處理 Chrome 渲染引擎的部署。 請按此處查看有關選擇適當的 Azure 層的文件。

Docker 支援

對於容器化部署,IronPDF 提供 Docker 支援。 將以下內容新增到您的 Dockerfile 中:

# Install IronPDF dependencies
RUN apt-get update && apt-get install -y libgdiplus

效能提示

  • 當內容不經常更改時,快取生成的 PDF 文件
  • 使用非同步方法以提高可擴展性
  • 為複雜的 PDF 產生設定合適的超時時間

常見問題及解決方案

PDF檔案無法內嵌顯示

如果 PDF 文件下載而不是顯示:

// Ensure Content-Disposition is set correctly
Response.Headers.Add("Content-Disposition", "inline; filename=document.pdf");
// Ensure Content-Disposition is set correctly
Response.Headers.Add("Content-Disposition", "inline; filename=document.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

跨域問題

從不同網域載入 PDF 檔案時:

// Add CORS headers if needed
Response.Headers.Add("Access-Control-Allow-Origin", "*");
// Add CORS headers if needed
Response.Headers.Add("Access-Control-Allow-Origin", "*");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

大型 PDF 文件

對於大型文檔,請考慮串流:

public async Task<IActionResult> StreamPdf()
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(largeHtmlContent);
    var stream = new MemoryStream(pdf.BinaryData);
    return new FileStreamResult(stream, "application/pdf");
}
public async Task<IActionResult> StreamPdf()
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(largeHtmlContent);
    var stream = new MemoryStream(pdf.BinaryData);
    return new FileStreamResult(stream, "application/pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

結論

ASP.NET Core中建立 PDF 檢視器並不一定很複雜。 透過將IronPDF 的渲染引擎與瀏覽器的預設 PDF 檢視器結合,您可以獲得一個專業且使用者友好的解決方案,用於線上顯示、編輯和處理 PDF 文件。無論您需要渲染發票、整合動態報表,還是為行動應用程式建立文件檢視器,此方法都能在功能、可擴充性和效能之間取得理想的平衡。

想找一份包含可運行原始程式碼的完整教學嗎? 下載我們的免費範例項目,了解 IronPDF 如何幫助您立即為 ASP.NET 整合現代、安全、靈活的 PDF 檢視器。

準備好在 ASP.NET Core 應用程式中實作 PDF 檢視功能了嗎? 立即開始IronPDF 免費試用,提升您的 Web 應用程式的文件處理能力。

!{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101 01000101111101010011010101000100000101010010010101000100010101000100010111110101011101001000110 1010101000100100001011111010100000101001001001111010001000101010101010000110101010100101010101011 10101010001010010010010010010000010100110001011111010000100100110001001111101000011010010111111010000110100101110--

常見問題解答

在 ASP.NET 應用程式中顯示 PDF 文件的最佳方式是什麼?

使用 IronPDF 可讓開發人員輕鬆地在 ASP.NET 應用程式內的瀏覽器中直接呈現 PDF 文件,提供無縫的使用者體驗,而無需使用 Adobe Acrobat Reader 等第三方工具。

IronPDF 可以用來增強 Web 應用程式中的 PDF 檢視功能嗎?

是的,IronPDF 旨在通過允許與 Web 應用程式的平滑整合來增強 PDF 檢視功能,確保用戶可以輕鬆、高效地檢視 PDF 文件。

在 ASP.NET 中使用 IronPDF 時,是否需要其他工具來檢視 PDF?

不,IronPDF 不需要使用 Adobe Acrobat Reader 之類的額外工具,提供內建的解決方案,可直接在 ASP.NET 應用程式中檢視 PDF。

如何在我的 .NET 網路應用程式中實作 PDF 檢視器?

通過將 IronPDF for .NET 整合到您的 .NET Web 應用程式中,您可以實現一個功能強大的 PDF 檢視器,該檢視器支援各種 PDF 功能,並提供友好的用戶介面。

為什麼要使用 IronPDF 在 ASP.NET 中檢視 PDF?

IronPDF for .NET 為 ASP.NET 應用程式中的 PDF 檢視提供可靠且有效率的解決方案,讓開發人員無需依賴外部外掛程式,即可為使用者提供無縫的使用經驗。

是否可以使用 IronPDF 顯示互動式 PDF 表單?

是的,IronPDF 支持显示交互式 PDF 表单,允许用户直接在浏览器中填写 PDF 文档并与之交互。

使用 IronPDF 可以查看哪些類型的 PDF 文件?

IronPDF 可以處理各種類型的 PDF 文件,包括發票、報告和互動表單,使其成為任何 ASP.NET 應用程式的多用途工具。

IronPDF 是否支持 .NET 10 的 PDF 生成和查看?

是的,IronPDF 完全支持 .NET 10 以及更早的版本,如 .NET9、8、7、6 以及 .NET Core 和 Framework。這表示您可以在現代的 .NET 10 ASP.NET 或 Blazor 應用程式中使用 IronPDF,在瀏覽器中內嵌產生、提供和顯示 PDF。(ironpdf.com)。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。