使用IRON SUITE

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

將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視圖 Razor視圖

Razor視圖使開發者可以更容易地分離展示邏輯和業務邏輯來創建動態網頁。

控制器類別

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

NuGet套件管理器

NuGet套件管理器是Visual Studio中用於管理.NET專案中的套件的工具。 它使開發者可以輕鬆地在專案中安裝、更新和解除安裝套件。 NuGet套件是包含可重用代碼的程式庫,並通過NuGet套件管理器進行分發。

依賴注入

依賴注入是一種設計模式,允許開發人員通過將依賴注入類中來解耦應用程式組件。 它通過減少依賴性並使代碼更加模塊化,使應用程式的測試和維護更加容易。

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

什麼是CSHTML?

CSHTML代表C# Razor語法HTML。 這是一種包含HTML標記和C#代碼的文件。 這些文件在ASP.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

How to Convert CSHTML HTML string to PDF files with IronPDF in C

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

步驟1 安裝IronPDF

第一步是在您的C#項目中安裝來自NuGet套件管理器的IronPDF。 您可以通過下載IronPDF.dll文件並將其添加到項目引用中來安裝IronPDF。 要使用NuGet套件管理器安裝IronPDF,請打開套件管理器控制台並運行以下命令:

步驟2 創建一個CSHTML文件

接下來,創建一個包含您希望轉換為PDF的內容的CSHTML文件。 在此示例中,我們將創建一個簡單的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!
$vbLabelText   $csharpLabel

將此文件保存為"Hello.cshtml"在您的項目目錄中。

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

步驟3 將CSHTML轉換為PDF文件

將該CSHTML轉換為PDF文件,我們將使用C#中的IronPDF程式庫。 這是將"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" };

            // Initialize a new instance of ChromePdfRenderer from IronPDF
            ChromePdfRenderer renderer = new ChromePdfRenderer();

            // Render the specified Razor view to a PDF document
            PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Index.cshtml", items);

            // Set the headers to force the browser to download the PDF
            var contentDisposition = new System.Net.Mime.ContentDisposition
            {
                FileName = "Items.pdf",
                Inline = false,
            };
            Response.Headers.Add("Content-Disposition", contentDisposition.ToString());

            // Return the PDF document to the client
            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" };

            // Initialize a new instance of ChromePdfRenderer from IronPDF
            ChromePdfRenderer renderer = new ChromePdfRenderer();

            // Render the specified Razor view to a PDF document
            PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Index.cshtml", items);

            // Set the headers to force the browser to download the PDF
            var contentDisposition = new System.Net.Mime.ContentDisposition
            {
                FileName = "Items.pdf",
                Inline = false,
            };
            Response.Headers.Add("Content-Disposition", contentDisposition.ToString());

            // Return the PDF document to the client
            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" }

			' Initialize a new instance of ChromePdfRenderer from IronPDF
			Dim renderer As New ChromePdfRenderer()

			' Render the specified Razor view to a PDF document
			Dim pdf As PdfDocument = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Index.cshtml", items)

			' Set the headers to force the browser to download the PDF
			Dim contentDisposition = New System.Net.Mime.ContentDisposition With {
				.FileName = "Items.pdf",
				.Inline = False
			}
			Response.Headers.Add("Content-Disposition", contentDisposition.ToString())

			' Return the PDF document to the client
			Return File(pdf.BinaryData, "application/pdf")
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

讓我們逐步了解這段代碼:

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

使用IronPDF在C#中將CSHTML轉換為PDF的基本代碼就是如此。 然而,您可以使用許多選項和設置來自定義PDF輸出。 讓我們來看看這些選項。

自定義PDF輸出返回文件

IronPDF提供了許多選項來自定義PDF文件輸出。 您可以設置例如頁面大小邊距、方向、標頭和標尾等選項。 這是如何自定義PDF輸出的示例:

using IronPdf;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // Initialize a new instance of ChromePdfRenderer
            var renderer = new ChromePdfRenderer();

            // Customize rendering options for the PDF
            renderer.RenderingOptions.MarginTop = 10;    // Set top margin in millimeters
            renderer.RenderingOptions.MarginBottom = 10; // Set bottom margin in millimeters
            renderer.RenderingOptions.MarginLeft = 20;   // Set left margin in millimeters
            renderer.RenderingOptions.MarginRight = 20;  // Set right margin in millimeters

            // Set HTML header for the PDF with a logo
            renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
            {
                MaxHeight = 20, // Height of header in millimeters
                HtmlFragment = "<img src='logo.png'>",
                BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
            };

            // Set HTML footer for the PDF with page numbers
            renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
            {
                MaxHeight = 15, // Height of footer in millimeters
                HtmlFragment = "<center><i>{page} of {total-pages}</i></center>",
                DrawDividerLine = true // Draw a line above the footer
            };

            // Convert HTML content to PDF
            var pdf = renderer.RenderHtmlAsPdf("<div>Hello, World!</div>");

            // Save the PDF to the file system
            pdf.SaveAs("Hello.PDF");
        }
    }
}
using IronPdf;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // Initialize a new instance of ChromePdfRenderer
            var renderer = new ChromePdfRenderer();

            // Customize rendering options for the PDF
            renderer.RenderingOptions.MarginTop = 10;    // Set top margin in millimeters
            renderer.RenderingOptions.MarginBottom = 10; // Set bottom margin in millimeters
            renderer.RenderingOptions.MarginLeft = 20;   // Set left margin in millimeters
            renderer.RenderingOptions.MarginRight = 20;  // Set right margin in millimeters

            // Set HTML header for the PDF with a logo
            renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
            {
                MaxHeight = 20, // Height of header in millimeters
                HtmlFragment = "<img src='logo.png'>",
                BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
            };

            // Set HTML footer for the PDF with page numbers
            renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
            {
                MaxHeight = 15, // Height of footer in millimeters
                HtmlFragment = "<center><i>{page} of {total-pages}</i></center>",
                DrawDividerLine = true // Draw a line above the footer
            };

            // Convert HTML content to PDF
            var pdf = renderer.RenderHtmlAsPdf("<div>Hello, World!</div>");

            // Save the PDF to the file system
            pdf.SaveAs("Hello.PDF");
        }
    }
}
Imports IronPdf

Namespace ConsoleApp
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			' Initialize a new instance of ChromePdfRenderer
			Dim renderer = New ChromePdfRenderer()

			' Customize rendering options for the PDF
			renderer.RenderingOptions.MarginTop = 10 ' Set top margin in millimeters
			renderer.RenderingOptions.MarginBottom = 10 ' Set bottom margin in millimeters
			renderer.RenderingOptions.MarginLeft = 20 ' Set left margin in millimeters
			renderer.RenderingOptions.MarginRight = 20 ' Set right margin in millimeters

			' Set HTML header for the PDF with a logo
			renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
				.MaxHeight = 20,
				.HtmlFragment = "<img src='logo.png'>",
				.BaseUrl = (New Uri("C:\assets\images\")).AbsoluteUri
			}

			' Set HTML footer for the PDF with page numbers
			renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
				.MaxHeight = 15,
				.HtmlFragment = "<center><i>{page} of {total-pages}</i></center>",
				.DrawDividerLine = True
			}

			' Convert HTML content to PDF
			Dim pdf = renderer.RenderHtmlAsPdf("<div>Hello, World!</div>")

			' Save the PDF to the file system
			pdf.SaveAs("Hello.PDF")
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

在此示例中,我們首先創建ChromePdfRenderer類的實例。 然後,我們使用ChromePdfRenderer類的各種選項。 這裡是我們設置的一些選項:

  • MarginTop, MarginBottom, MarginLeft, MarginRight:設置PDF文件的邊距。
  • HtmlHeader:設置PDF文件的標頭以顯示徽標。
  • HtmlFooter:設置PDF文件的標尾以顯示頁碼和總頁數。

設置完成後,我們使用帶有HTML內容的RenderHtmlAsPdf方法。 最後,我們將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文件。按照這些步驟進行:

步驟1 創建一個新的控制台應用程式

打開Visual Studio,通過從菜單中選擇"文件 > 新建 > 專案",然後從專案模板列表中選擇"控制台應用程式(.NET Framework)"或"控制台應用程式(.NET Core)"來創建一個新的控制台應用程式。

步驟2 安裝IronPDF NuGet套件

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

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

步驟3 將PDF和CSHTML文件添加到專案中

在此示例中,我們將使用一個我們想要轉換為CSHTML文件的範例PDF文件。您可以使用任何您喜歡的PDF文件來完成這一步。

在解決方案資源管理器中右鍵點擊專案,選擇"添加 > 現有項目",將PDF文件添加到專案中。

同時,我們還需要創建一個空的CSHTML文件,我們將用來存儲轉換後的HTML字串。 為此,在解決方案資源管理器中右鍵點擊專案,選擇"添加 > 新項目"。 從模板列表中選擇"HTML頁面",然後給文件命名(例如"converted.cshtml"),點擊"添加"。

步驟4 將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
            System.IO.File.WriteAllText("converted.cshtml", html);
        }
    }
}
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
            System.IO.File.WriteAllText("converted.cshtml", html);
        }
    }
}
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
			System.IO.File.WriteAllText("converted.cshtml", html)
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

為什麼要使用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絕對值得考慮。 憑藉其強大的功能、易用性和多樣的授權選擇,這是一個靈活且可靠的工具,可以幫助您快速高效地完成工作。