使用 IRONPDF

如何在C#中將CSHTML轉換為PDF

已更新 2024年3月10日
分享:

將 CSHTML 轉換為 PDF 是許多應用程式中的常見需求。使用 C# 中的 IronPDF 庫可以輕鬆完成這項任務。

IronPDF 是一個流行的 .NET 庫,使開發者能夠以程式方式創建、讀取、編輯和轉換 PDF 文件。在本文中,我們將演示如何使用 C# 中的 IronPDF 將 CSHTML 轉換為 PDF,並附帶示例。

在開始之前,讓我們討論一些對於本教程必要的重要概念。

重要概念

PDF 轉換器

PDF 轉換器是一種將任何可列印文件或網頁轉換為 PDF 文件的工具。它可以用來從 HTML、Word、Excel 或任何其他可列印文件生成 PDF 文件。PDF 轉換器有多種形式,包括線上工具、桌面軟體和函式庫。

Razor 視圖

Razor 視圖是用於 ASP.NET Core 中,動態生成 HTML 頁面的視圖引擎。這是一種將 HTML 標記與 C# 代碼結合在一起的標記語法。

如何在C#中將CSHTML轉換為PDF, 圖1:Razor View

Razor視圖

Razor視圖使開發人員可以通過將展示邏輯與業務邏輯分離來輕鬆創建動態網頁。

控制器類別

控制器類別是處理來自 ASP.NET Core 應用程式的 HTTP 請求的 C# 類別。它包含與特定 HTTP 動詞對應的方法。 (例如,GET,POST,PUT,DELETE),它返回一個 HTTP 回應。

NuGet 套件管理器

NuGet 套件管理器是在 Visual Studio 中用來管理 .NET 專案中的套件的工具。它使開發人員能夠方便地在專案中安裝、更新和卸載套件。NuGet 套件是包含可重用代碼的庫,並通過 NuGet 套件管理器分發。

依賴注入

依賴注入是一種設計模式,允許開發者通過向類中注入依賴對象來解耦應用程式組件。它通過減少依賴性並使代碼更模塊化來方便測試和維護應用程式。

現在我們已經覆蓋了重要概念,讓我們深入了解使用 IronPDF 將 CSHTML 轉換為 PDF 的過程。

什麼是 CSHTML?

CSHTML 代表 C# Razor 語法 HTML。它是一種類型的文件,包含 HTML 標記和 C# 代碼。這些文件用於 AS.NET Core MVC 應用程式中,以定義網頁的使用者界面。Razor 視圖引擎用於解釋 CSHTML 文件並生成可由網頁瀏覽器呈現的 HTML 輸出。

如何使用C#將CSHTML轉換為PDF,圖2:CSHTML5

CSHTML5

什麼是 IronPDF?

IronPDF 是一個強大的 .NET 函式庫,允許開發人員在 C# 中創建、讀取、編輯和轉換 PDF 文件。它是一款在 .NET 應用程式中以程式方式生成 PDF 文件的流行工具。IronPDF 支援多種功能,包括 PDF 生成、PDF 操作、PDF 轉換和 PDF 渲染。

如何在 C# 中將 CSHTML 轉換為 PDF,圖 3:IronPDF for .NET

IronPDF for .NET

如何使用 IronPDF 在 C# 中將 CSHTML HTML 字串轉換為 PDF 檔案

使用 IronPDF 將 CSHTML 轉換為 PDF 是一個簡單的過程。這個庫提供了一個方便的 API,用於將 HTML 檔案轉換為 PDF 文件。以下是在 C# 中使用 IronPDF 將 CSHTML 轉換為 PDF 的步驟:

第一步 安裝 IronPDF

第一步是安裝 IronPDF 在您的 C# 專案中。您可以使用 NuGet 套件管理器安裝 IronPDF,或者下載 IronPDF.dll 檔案並將其添加到您的專案引用中。要使用 NuGet 套件管理器安裝 IronPDF,請打開套件管理器控制台並執行以下命令

Install-Package IronPdf

第2步 建立一個CSHTML檔案

接下來,建立一個CSHTML檔案,包含您要轉換成PDF的內容。在此範例中,我們將建立一個簡單的 CSHTML 顯示文本 "Hello, World" 的檔案!"."

@{
    Layout = null;
}
    Hello
    Hello, World!
@{
    Layout = null;
}
    Hello
    Hello, World!
@
If True Then
	Layout = Nothing
End If
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'	Hello Hello, World!
VB   C#

將此檔案儲存為「Hello.cshtml」在您的專案目錄中。

如何在C#中將CSHTML轉換為PDF,第4圖:C#中的PDF文件

C# 中的 PDF 文件

步驟3 將CSHTML轉換為PDF文檔

CSHTML 將文件轉換為 PDF,我們將使用 IronPDF 程式庫在 C# 中進行操作。以下是將 "Hello.cshtml" 轉換為 PDF 的代碼:

using System.IO;
using IronPdf;
using Microsoft.AspNetCore.Mvc;

namespace CSHTMLtoPDF.Controllers
{
    public class HomeController : Controller
    {
        private readonly IRazorViewRenderer _viewRenderService;
        public HomeController(IRazorViewRenderer viewRenderService)
        {
            _viewRenderService = viewRenderService;
        }

        public IActionResult Index()
        {
            var items = new [] { "Item 1", "Item 2", "Item 3" };
            return View(items);
        }

        public IActionResult DownloadPDF()
        {
            var items = new [] { "Item 1", "Item 2", "Item 3" };

            ChromePdfRenderer renderer = new ChromePdfRenderer();
            PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Index.cshtml", items);

            var contentDisposition = new Syste.NET.Mime.ContentDisposition
            {
                FileName = "Items.pdf",
                Inline = false,
            };
            Response.Headers.Add("Content-Disposition", contentDisposition.ToString());

            return File(pdf.BinaryData, "application/pdf");
        }
    }
}
using System.IO;
using IronPdf;
using Microsoft.AspNetCore.Mvc;

namespace CSHTMLtoPDF.Controllers
{
    public class HomeController : Controller
    {
        private readonly IRazorViewRenderer _viewRenderService;
        public HomeController(IRazorViewRenderer viewRenderService)
        {
            _viewRenderService = viewRenderService;
        }

        public IActionResult Index()
        {
            var items = new [] { "Item 1", "Item 2", "Item 3" };
            return View(items);
        }

        public IActionResult DownloadPDF()
        {
            var items = new [] { "Item 1", "Item 2", "Item 3" };

            ChromePdfRenderer renderer = new ChromePdfRenderer();
            PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Index.cshtml", items);

            var contentDisposition = new Syste.NET.Mime.ContentDisposition
            {
                FileName = "Items.pdf",
                Inline = false,
            };
            Response.Headers.Add("Content-Disposition", contentDisposition.ToString());

            return File(pdf.BinaryData, "application/pdf");
        }
    }
}
Imports System.IO
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc

Namespace CSHTMLtoPDF.Controllers
	Public Class HomeController
		Inherits Controller

		Private ReadOnly _viewRenderService As IRazorViewRenderer
		Public Sub New(ByVal viewRenderService As IRazorViewRenderer)
			_viewRenderService = viewRenderService
		End Sub

		Public Function Index() As IActionResult
			Dim items = { "Item 1", "Item 2", "Item 3" }
			Return View(items)
		End Function

		Public Function DownloadPDF() As IActionResult
			Dim items = { "Item 1", "Item 2", "Item 3" }

			Dim renderer As New ChromePdfRenderer()
			Dim pdf As PdfDocument = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Index.cshtml", items)

			Dim contentDisposition = New Syste.NET.Mime.ContentDisposition With {
				.FileName = "Items.pdf",
				.Inline = False
			}
			Response.Headers.Add("Content-Disposition", contentDisposition.ToString())

			Return File(pdf.BinaryData, "application/pdf")
		End Function
	End Class
End Namespace
VB   C#

讓我們一步步走過這段程式碼:

  • 我們首先匯入必要的名稱空間,包括包含HTML轉PDF功能的IronPDF名稱空間。
  • 然後我們定義Index方法,該方法僅將項目列表返回給Razor視圖。
  • 我們定義DownloadPDF方法,這個方法負責生成PDF文檔。
  • 我們首先創建一個渲染器 ChromePdfRenderer.
  • 然後使用 RenderRazorViewToPdf 擴展方法將包含數據的 Razor 視圖生成為 PDF 文件。
  • 然後我們設置 Content-Disposition 標頭,以強制 PDF 被下載而不是在瀏覽器中顯示。
  • 最後,我們使用 File 方法將 PDF 文件作為文件返回。

這是使用 C# 中的 IronPDF 將 CSHTML 轉換為 PDF 的基本代碼。不過,您可以使用許多選項和設置來自訂 PDF 輸出。讓我們來看看其中一些選項。

自訂 PDF 輸出返回文件

IronPDF 提供了許多自訂 PDF 文件輸出的選項。您可以設置選項例如 頁面大小, 邊距, 方向, 頁首和頁尾,還有更多。以下是一個自訂 PDF 輸出的例子:

using IronPdf;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string [] args)
        {
            var renderer = new ChromePdfRenderer();
            renderer.RenderingOptions.MarginTop = 10;
            renderer.RenderingOptions.MarginBottom = 10;
            renderer.RenderingOptions.MarginLeft = 20;
            renderer.RenderingOptions.MarginRight = 20;
            renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
            {
                MaxHeight = 20, //millimeters
                HtmlFragment = "<img src='logo.png'>",
                BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
            };
            renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
            {
                MaxHeight = 15, //millimeters
                HtmlFragment = "<center><i>{page} of {total-pages}<i></center>",
                DrawDividerLine = true
            };
            var pdf = renderer.RenderHtmlAsPdf("\r\n\r\n\r\n    \r\n    Hello\r\n\r\n\r\n    Hello, World!\r\n\r\n");
            pdf.SaveAs("Hello.PDF");
        }
    }
}
using IronPdf;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string [] args)
        {
            var renderer = new ChromePdfRenderer();
            renderer.RenderingOptions.MarginTop = 10;
            renderer.RenderingOptions.MarginBottom = 10;
            renderer.RenderingOptions.MarginLeft = 20;
            renderer.RenderingOptions.MarginRight = 20;
            renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
            {
                MaxHeight = 20, //millimeters
                HtmlFragment = "<img src='logo.png'>",
                BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
            };
            renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
            {
                MaxHeight = 15, //millimeters
                HtmlFragment = "<center><i>{page} of {total-pages}<i></center>",
                DrawDividerLine = true
            };
            var pdf = renderer.RenderHtmlAsPdf("\r\n\r\n\r\n    \r\n    Hello\r\n\r\n\r\n    Hello, World!\r\n\r\n");
            pdf.SaveAs("Hello.PDF");
        }
    }
}
Imports Microsoft.VisualBasic
Imports IronPdf

Namespace ConsoleApp
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			Dim renderer = New ChromePdfRenderer()
			renderer.RenderingOptions.MarginTop = 10
			renderer.RenderingOptions.MarginBottom = 10
			renderer.RenderingOptions.MarginLeft = 20
			renderer.RenderingOptions.MarginRight = 20
			renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
				.MaxHeight = 20,
				.HtmlFragment = "<img src='logo.png'>",
				.BaseUrl = (New Uri("C:\assets\images\")).AbsoluteUri
			}
			renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
				.MaxHeight = 15,
				.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>",
				.DrawDividerLine = True
			}
			Dim pdf = renderer.RenderHtmlAsPdf(vbCrLf & vbCrLf & vbCrLf & "    " & vbCrLf & "    Hello" & vbCrLf & vbCrLf & vbCrLf & "    Hello, World!" & vbCrLf & vbCrLf)
			pdf.SaveAs("Hello.PDF")
		End Sub
	End Class
End Namespace
VB   C#

在這個範例中,我們首先創建一個 ChromePdfRenderer 類的實例。然後我們使用 ChromePdfRenderer 類的 RenderingOptions 屬性設置各種選項。以下是我們設置的一些選項:

  • PaperSize:將 PDF 文檔的紙張大小設置為 A4。
  • MarginTopMarginBottomMarginLeftMarginRight:將 PDF 文檔的邊距設置為上面和下面 10 毫米,左邊和右邊 20 毫米。
  • HtmlHeader:將 PDF 文檔的標頭設置為顯示文檔標題和分隔線。
  • HtmlFooter:將 PDF 文檔的頁尾設置為顯示頁碼、總頁數和當前日期。

在設置選項後,我們調用 RenderHtmlAsPdf 使用與前述相同的HTML內容的方法。最後,我們將PDF文件保存為名為 "Hello.PDF" 的檔案。

測試應用程式

在所有必要的程式碼都到位後,我們現在可以測試應用程式。請按以下步驟操作:

  • 按下 F5 鍵或點擊 Visual Studio 中的綠色 "播放" 按鈕來運行應用程式。
  • 在您的網頁瀏覽器中,導航到 http://localhost:/Home/Index,其中 是由 Visual Studio 分配的端口號。
  • 確認項目列表顯示正確。
  • 點擊 "下載 PDF" 連結來生成並下載 PDF 文件。

如果一切正常,您應該會看到包含您之前定義的項目列表的 PDF 文件。

使用 IronPDF 將 PDF 轉換為 CSHTML 文件

如何在C#中將CSHTML轉換為PDF,圖7:PDF轉CSHTML

PDF 轉換為 CSHTML

為了展示如何使用 IronPDF 將 PDF 轉換為 CSHTML 文件,我們將在 Visual Studio 中創建一個新的控制台應用程式,並使用 IronPDF 將範例 PDF 文件轉換為 CSHTML 文件。請按照以下步驟進行:

第一步 建立新的主控台應用程式

打開Visual Studio,從功能表中選擇 "檔案 > 新建 > 專案",然後選擇 "主控台應用程式" (.NET框架)" 或 "控制台應用程序 (.NET Core)從專案範本列表中。

步驟 2 安裝 IronPDF NuGet 套件

接下來,我們需要在主控台應用程式中安裝 IronPDF NuGet 套件。為此,請在解決方案總管中右鍵單擊專案,然後從上下文選單中選擇 "管理 NuGet 套件"。

在 NuGet 套件管理器中,搜索 "IronPDF",並從搜索結果中選擇 "IronPDF" 套件。點擊 "安裝" 按鈕以安裝該套件及其依賴項。

步驟 3:將 PDF 和 CSHTML 文件添加到項目中

在此示例中,我們將使用一個示例 PDF 文件,並將其轉換為 CSHTML 文件。您可以在此步驟中使用任何您喜歡的 PDF 文件。

通過在 Solution Explorer 中右鍵單擊項目,然後從上下文菜單選擇“添加 > 現有項目”來將 PDF 文件添加到項目中。

我們還需要創建一個空的 CSHTML 文件,用於存儲轉換後的 HTML 字串。為此,在 Solution Explorer 中右鍵單擊項目,然後從上下文菜單選擇“添加 > 新項目”。從模板列表中選擇“HTML 頁面”,然後為文件命名。 (例如:"converted.cshtml" ) 然後點擊「新增」。

第四步 將 PDF 轉換為 CSHTML 檔案

當必要的檔案放置到位後,我們現在可以使用 IronPDF 編寫代碼將 PDF 轉換為 CSHTML 檔案。將以下代碼添加到您的控制台應用程式的 Main 方法中:

using IronPdf;

namespace PdfToHtml
{
    class Program
    {
        static void Main(string [] args)
        {
            // Load the PDF file
            PdfDocument pdf = PdfDocument.FromFile("sample.PDF");

            // Convert the PDF to an HTML string
            string html = pdf.ToHtml();

            // Save the HTML string to the CSHTML file
        }
    }
}
using IronPdf;

namespace PdfToHtml
{
    class Program
    {
        static void Main(string [] args)
        {
            // Load the PDF file
            PdfDocument pdf = PdfDocument.FromFile("sample.PDF");

            // Convert the PDF to an HTML string
            string html = pdf.ToHtml();

            // Save the HTML string to the CSHTML file
        }
    }
}
Imports IronPdf

Namespace PdfToHtml
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			' Load the PDF file
			Dim pdf As PdfDocument = PdfDocument.FromFile("sample.PDF")

			' Convert the PDF to an HTML string
			Dim html As String = pdf.ToHtml()

			' Save the HTML string to the CSHTML file
		End Sub
	End Class
End Namespace
VB   C#

為什麼應該使用IronPDF?

IronPDF因為以下幾個重要原因而成為.NET開發人員的熱門選擇:

強大的PDF生成能力:IronPDF提供了廣泛的功能和選項,讓開發人員可以通過程式生成和操控PDF文件,包括在PDF頁面中添加文本、圖像和其他內容,以及合併和拆分現有的PDF文件。

多功能的PDF轉換能力:IronPDF不僅允許開發人員生成PDF文件,還提供將PDF轉換為HTML字串或CSHTML文件的功能。這在需要在Web應用程序中顯示PDF內容或從PDF文件中提取數據並在基於網頁的工作流程中使用時非常有用。

易於使用的API:IronPDF的API設計直觀且易於使用,包含廣泛的輔助方法和屬性,使開發人員能夠輕鬆地通過程式生成和操作PDF文件。

強大的社群支持:IronPDF擁有龐大且活躍的.NET開發人員社群,這些成員共同參與其開發並為其他使用該庫的開發人員提供支持。

良好的文檔資料:IronPDF的文檔極為詳細且規範整齊,包含了詳細的API參考文檔、教程和範例,使開發人員能夠輕鬆上手並學習如何使用該庫。

IronPDF結合了強大的PDF生成和轉換能力、易於使用的API、強大的社群支持和良好的文檔資料,使其成為需要在應用程序中處理PDF文件的.NET開發人員的熱門選擇。

結論

將CSHTML轉換為PDF是許多應用程式中的常見需求。有了IronPDF,這項任務可以在C#中輕鬆完成。在本文中,我們向您展示了使用IronPDF將CSHTML轉換為PDF的步驟,並附上了示例。

我們還向您展示了如何通過設定各種選項(如紙張大小、邊距、頁眉和頁腳等)來自定義PDF輸出。使用IronPDF,您可以快速輕鬆地從CSHTML文件中創建高品質的PDF文檔。

無論您是需要從頭創建PDF文檔、將PDF轉換為HTML字符串或CSHTML文件,還是從PDF文檔中提取數據,IronPDF都提供了一個靈活且直觀的API,使您能輕鬆完成工作。

憑藉其強大的社區支持和廣泛的文檔,IronPDF在需要在應用程式中處理PDF的.NET開發人員中頗受歡迎。通過購買Iron Software套件,開發人員可以以折扣價格獲得一套全面的.NET庫,用於處理常見文件格式,這對任何.NET開發團隊來說都是一個極佳的價值選擇。

如果您需要在.NET應用程式中處理PDF文檔,IronPDF絕對值得考慮。憑藉其強大的功能、易用性和多種授權選項,它是一個多功能且可靠的工具,可以幫助您快速高效地完成工作。

< 上一頁
如何在 VB.NET 中合併 PDF 文件
下一個 >
如何在C#中保存PDF檔案(初學者教程)

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >