使用IRONPDF

如何在C#中将CSHTML转换为PDF

更新 2024年三月10日
分享:

将 CSHTML 转换为 PDF 是许多应用程序的共同要求。使用 C# 中的 IronPDF 库可以轻松完成这项任务。

IronPDF 是一种流行的 .NET 库,它使开发人员能够以编程方式创建、读取、编辑和转换 PDF 文档。在本文中,我们将通过示例教你如何使用 IronPDF 在 C# 中将 CSHTML 转换为 PDF。

在开始之前,让我们先讨论一下本教程所必需的一些重要概念。

重要概念

PDF 转换器

PDF 转换器是一种将任何可打印文档或网页转换为 PDF 文档的工具。它可用于从 HTML、Word、Excel 或任何其他可打印文档生成 PDF 文件。PDF 转换器有多种形式,包括在线工具、桌面软件和库。

剃刀视图

Razor 视图是 ASP.NET Core 中用于动态生成 HTML 页面的视图引擎。它是一种将 HTML 标记与 C# 代码相结合的标记语法。

如何用 C# 将 CSHTML 转换为 PDF,图 1:剃刀视图

Razor View

Razor 视图通过将表现逻辑与业务逻辑分离,使开发人员能够轻松创建动态网页。

控制器类

控制器类是在 ASP.NET Core 应用程序中处理传入 HTTP 请求的 C# 类。它包含与特定 HTTP 动词相对应的方法 (例如,GET、POST、PUT、DELETE)并返回 HTTP 响应。

NuGet 软件包管理器

NuGet 软件包管理器是 Visual Studio 中用于管理 .NET 项目中软件包的工具。它可以让开发人员轻松地在项目中安装、更新和卸载软件包。NuGet 包是包含可重用代码的库,通过 NuGet 包管理器发布。

依赖注入

依赖注入(Dependency Injection)是一种设计模式,它允许开发人员通过在类中注入依赖关系来解耦应用程序组件。它通过减少依赖关系,使代码更加模块化,从而使测试和维护应用程序变得更加容易。

既然我们已经介绍了重要的概念,下面就让我们深入了解使用 IronPDF 将 CSHTML 转换为 PDF 的过程。

CSHTML 是什么?

CSHTML 是 C# Razor Syntax 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

如何在 C&num 中使用 IronPDF 将 CSHTML HTML 字符串转换为 PDF 文件;

使用 IronPDF 将 CSHTML 转换为 PDF 是一个简单的过程。该库提供了将 HTML 文件转换为 PDF 文档的便捷 API。以下是使用 IronPDF 在 C# 中将 CSHTML 转换为 PDF 的步骤:

第 1 步 安装 IronPDF

第一步是安装 IronPDF 在你的 C# 项目中。您可以使用 NuGet 软件包管理器安装 IronPDF,也可以下载 IronPDF.dll 文件并将其添加到项目引用中。要使用 NuGet 软件包管理器安装 IronPDF,请打开软件包管理器控制台并运行以下命令

Install-Package IronPdf

第 2 步 创建 CSHTML 文件

接下来,创建一个 CSHTML 文件,其中包含要转换为 PDF 的内容。在本例中,我们将创建一个简单的 CSHTML 文件,显示文本 "你好,世界!".

@{
    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,我们将使用 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" };

            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。
  • 页边距":"页边距上"、"页边距下"、"页边距左"、"页边距右 ":将 PDF 文档的页边距设置为上下 10 毫米,左右 20 毫米。
  • HtmlHeader:设置 PDF 文档的页眉,显示文档标题和分隔线。
  • HtmlFooter:设置 PDF 文档的页脚,以显示页码、总页数和当前日期。

设置选项后,我们调用 将Html渲染为Pdf 方法中添加与之前相同的 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 文件。请按照以下步骤操作:

步骤 1 创建新的控制台应用程序

打开 Visual Studio,从菜单中选择 "文件 > 新建 > 项目",然后选择 "控制台应用程序",创建一个新的控制台应用程序。 (.NET框架)"或 "控制台应用程序 (.NET Core)项目模板列表中的""。

第 2 步 安装 IronPDF NuGet 软件包

接下来,我们需要在控制台应用程序中安装 IronPDF NuGet 包。为此,请右键单击解决方案资源管理器中的项目,然后从上下文菜单中选择 "管理 NuGet 包"。

在 NuGet 包管理器中搜索 "IronPDF",并从搜索结果中选择 "IronPDF "包。单击 "Install(安装)"按钮安装软件包及其依赖项。

第 3 步 在项目中添加 PDF 和 CSHTML 文件

在本例中,我们将使用一个要转换为 CSHTML 文件的 PDF 示例文件。您可以在此步骤中使用任何您喜欢的 PDF 文件。

右键单击解决方案资源管理器中的项目,从上下文菜单中选择 "添加 > 现有项",将 PDF 文件添加到项目中。

我们还需要创建一个空的 CSHTML 文件,用于存储转换后的 HTML 字符串。为此,请右键单击解决方案资源管理器中的项目,然后从上下文菜单中选择 "添加 > 新项"。从模板列表中选择 "HTML 页面",然后为文件命名 (例如:"converted.cshtml") 然后点击 "添加"。

第 4 步 将 PDF 转换为 CSHTML 文件

有了必要的文件,我们现在就可以编写代码,使用 IronPDF 将 PDF 转换为 CSHTML 文件。在控制台应用程序的主方法中添加以下代码:

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 文档中提取数据并将其用于基于 Web 的工作流程时,这将非常有用。

易于使用 应用程序接口:IronPDF 的应用程序接口(API)设计直观、易于使用,具有大量辅助方法和属性,使开发人员可以轻松地以编程方式生成和处理 PDF 文档。

强大 社区 支持:IronPDF 拥有一个由 .NET 开发人员组成的庞大而活跃的社区,他们为 IronPDF 的开发做出了贡献,并为使用该库的其他开发人员提供支持。

良好的文档: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 软件包,开发人员可以以优惠的价格获得一套全面的.NET 库,用于处理常见的文件格式,这对于任何 .NET 开发团队来说都是极具价值的。

如果您需要在 .NET 应用程序中处理 PDF 文档,IronPDF 绝对值得考虑。凭借其强大的功能、易用性和一系列许可选项,它是一款多功能、可靠的工具,可以帮助您快速高效地完成工作。

< 前一页
如何在VB.NET中合并PDF文件
下一步 >
如何在C#中保存PDF文件(初学者教程)

准备开始了吗? 版本: 2024.9 刚刚发布

免费NuGet下载 总下载量: 10,731,156 查看许可证 >