使用IRONPDF

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

更新 2024年三月10日
分享:

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

IronPDF for .NET 是一个流行的 .NET 库,使开发人员能够以编程方式创建、阅读、编辑和转换 PDF 文档。 在本文中,我们将向您逐步演示使用C#中的IronPDF将CSHTML转换为PDF的步骤,并提供示例。

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

重要概念

PDF 转换器

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

雷泽视图

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

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

视图

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****

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

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

第 1 步 安装 IronPDF

第一步是安装来自 NuGet 软件包管理器的 IronPDF在您的 C# 项目中。 您可以通过下载 IronPDF.dll 文件并将其添加到项目引用中来安装 IronPDF。 要使用 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在将 IronPDF 文件转换为 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#

让我们一步一步来完成这段代码:

  • 我们首先导入必要的命名空间,包括 IronPDF 命名空间,其中包含 HTML 到 PDF 的转换功能。
  • 然后,我们定义了 "Index "方法,该方法只需向 Razor 视图返回一个项目列表。
  • 我们定义了负责生成 PDF 文档的 DownloadPDF 方法。
  • 我们首先创建一个呈现器ChromePdfRenderer.
  • 然后使用 "RenderRazorViewToPdf "扩展方法将带有数据的 Razor 视图生成 PDF 文件。
  • 然后,我们设置 "Content-Disposition "标题,强制下载 PDF 而不是在浏览器中显示。
  • 最后,我们使用 File 方法将 PDF 文档作为文件返回。

    这是使用 IronPDF 将 CSHTML 转换为 PDF 的 C# 基本代码。 不过,您可以使用许多选项和设置来定制 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。
  • MarginTop,MarginBottom,MarginLeft', 'MarginRight`:将 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 "软件包。 单击 "安装 "按钮安装软件包及其依赖项。

第 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
        }
    }
}
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 的应用程序接口设计直观、易于使用,具有大量的辅助方法和属性,使开发人员能够轻松地以编程方式生成和操作 PDF 文档。

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

良好的文档:IronPDF 的文档内容广泛、条理清晰,包含详细的 API 参考文档、教程和示例,便于开发人员上手并学习如何使用该库。

IronPdf for .NET 强大的 PDF 生成和转换功能、易于使用的 API、强大的社区支持和完善的文档资料,使其成为需要在应用程序中处理 PDF 文档的 .NET 开发人员的首选。

结论

将 CSHTML 转换为 PDF 是许多应用程序的共同要求。 有了 IronPdf,这项任务可以用 C# 轻松完成。 在本文中,我们通过示例向您介绍了使用 IronPDF 将 CSHTML 转换为 PDF 的步骤。

我们还向您展示了如何通过设置纸张大小、页边距、页眉和页脚等各种选项来定制 PDF 输出。 有了 IronPdf,您可以快速、轻松地从 CSHTML 文件创建高质量的 PDF 文档。

无论您需要从头开始创建 PDF 文档、将 PDF 转换为 HTML 字符串或 CSHTML 文件,还是从 PDF 文档中提取数据,IronPDF 都能提供灵活直观的 API,让您轻松完成工作。

IronPDF for .NET 拥有强大的社区支持和丰富的文档,深受需要在应用程序中处理 PDF 的 .NET 开发人员的青睐。 而且,通过购买 Iron Software 软件包,开发人员可以以优惠的价格获得一套全面的.NET 库,用于处理常见的文件格式,这对于任何 .NET 开发团队来说都是非常超值的。

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

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

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

免费NuGet下载 总下载量: 11,781,565 查看许可证 >