使用IRONPDF

如何使用C#和IronPDF在ASP.NET中查看PDF文件

Kannaopat Udonpant
坎那帕·乌东攀
2021年十一月4日
更新 2024年一月20日
分享:

大多数人使用专用的桌面应用程序在电脑上打开 PDF,但软件工程师也可以使用 IronPdf 以 C# 编程方式创建、查看、打开、阅读和编辑 PDF 内容。

当在 ASP.NET 和 C# 中阅读 PDF 文件时,IronPDF 变成了一个非常有用的插件。

您可以下载ASP.NET PDF 演示项目.

使用 IronPDF 可以用 C# 快速、轻松地创建 PDF 文档。

PDF 文档的大部分设计和布局可以通过使用现有的 HTML 资产或委托网页设计员工完成; 它可以处理将 PDF 生成集成到应用程序中这一耗时的任务,并自动将准备好的文档转换为 PDF。 使用 .NET,您可以

  • 将网络表格、本地 HTML 网页和其他网站转换为 PDF 格式。
  • 允许用户下载文档、通过电子邮件与他人共享文档或将文档保存在云中。
  • 向客户开具发票并提供报价; 编写报告; 谈判合同和其他文书工作。
  • 工作涉及 ASP.NET、ASP.NET Core、Web 窗体、MVC、.NET Framework 和 .NET Core 上的 Web API 以及其他编程语言。

设置 IronPDF 库

有两种方法可以安装该库;

使用 NuGet 软件包管理器进行安装

IronPdf 可通过 Visual Studio 加载项或 NuGet 软件包管理器从命令行安装。导航到控制台,在 Visual Studio 中键入以下代码:

Install-Package IronPdf

直接从网站下载 DLL 文件

您也可以直接从网站上获取 DLL。

切记在任何使用 IronPdf 的 cs 类文件顶部加入以下备注:

查看IronPDF 详细功能概述.

IronPDF 是必备插件。 立即获取使用 IronPDF NuGet 软件包试用.

在 .NET C# 中从 HTML 字符串创建 PDF 文件

在 C# 中从 HTML 字符串创建 PDF 文件是一种高效、有益的方法。

"(《世界人权宣言》)将Html渲染为Pdf函数的ChromePdfRenderer提供了一种将任何 HTML(HTML5)由于 IronPDF DLL 中嵌入了谷歌 Chromium 引擎,您可以将字符串转换成 PDF 文档。

//Render HTML to pdf
var renderer = new ChromePdfRenderer();
using var rendered_pdf = renderer.RenderHtmAsPdf("<h1>My First HTML to Pdf</h1>");

var Output_Path = "My_First_Html.pdf";
PDF.SaveAs(Output_Path);
System.Diagnostics.Process.Start(Output_Path);
//Render HTML to pdf
var renderer = new ChromePdfRenderer();
using var rendered_pdf = renderer.RenderHtmAsPdf("<h1>My First HTML to Pdf</h1>");

var Output_Path = "My_First_Html.pdf";
PDF.SaveAs(Output_Path);
System.Diagnostics.Process.Start(Output_Path);
'Render HTML to pdf
Dim renderer = New ChromePdfRenderer()
Dim rendered_pdf = renderer.RenderHtmAsPdf("<h1>My First HTML to Pdf</h1>")

Dim Output_Path = "My_First_Html.pdf"
PDF.SaveAs(Output_Path)
System.Diagnostics.Process.Start(Output_Path)
$vbLabelText   $csharpLabel

RenderHtmlAsPdf "是一款功能强大的工具,支持 CSS、JavaScript 和图像。 如果这些材料存储在硬盘上,可能需要设置 RenderHtmlAsPdf 的第二个参数。

以下代码将生成 PDF 文件:

var Render_pdf = renderer.RenderHtmlAsPdf("<img src='image_1.png'/>", @"C:\Newproject");
var Render_pdf = renderer.RenderHtmlAsPdf("<img src='image_1.png'/>", @"C:\Newproject");
Dim Render_pdf = renderer.RenderHtmlAsPdf("<img src='image_1.png'/>", "C:\Newproject")
$vbLabelText   $csharpLabel

所有引用的 CSS 样式表、图片和 JavaScript 文件都将与 BaseUrlPath 相对,以便保持更有条理和逻辑的结构。 当然,如果您愿意,也可以使用图片、样式表和互联网上提供的资产,如 Web 字体、Google 字体甚至 jQuery。

创建 PDF 文档。

利用现有的 HTML URL

现有的 URL 可以用 C# 以非常高效和直接的方式呈现为 PDF; 这也使团队能够将 PDF 设计和后端 PDF 渲染工作划分到不同的部门,这也是非常有益的。

下面的代码演示了如何通过其 URL 呈现 endeavorcreative.com 页面:

//Render url to pdf
var renderer = new ChromePdfRenderer();
using var Rendered_pdf = renderer.RenderUrlAsPdf("https://endeavorcreative.com/setting-up-wordpress-website-from-scratch/");

var Output_Path = "Url_pdf.pdf";
Rendered_pdf.SaveAs(Output_Path);
System.Diagnostics.Process.Start(Output_Path);
//Render url to pdf
var renderer = new ChromePdfRenderer();
using var Rendered_pdf = renderer.RenderUrlAsPdf("https://endeavorcreative.com/setting-up-wordpress-website-from-scratch/");

var Output_Path = "Url_pdf.pdf";
Rendered_pdf.SaveAs(Output_Path);
System.Diagnostics.Process.Start(Output_Path);
'Render url to pdf
Dim renderer = New ChromePdfRenderer()
Dim Rendered_pdf = renderer.RenderUrlAsPdf("https://endeavorcreative.com/setting-up-wordpress-website-from-scratch/")

Dim Output_Path = "Url_pdf.pdf"
Rendered_pdf.SaveAs(Output_Path)
System.Diagnostics.Process.Start(Output_Path)
$vbLabelText   $csharpLabel

因此,所有超链接(HTML 链接)甚至 HTML 表格都会保留在生成的 PDF 中。

从现有 HTML 文档创建 PDF 文档

本节介绍如何渲染任何本地 HTML 文件。对于 CSS、图片和 JavaScript 等所有相关资产,文件似乎是使用 file:/ 协议打开的。

//Render existing html to pdf
var renderer = new ChromePdfRenderer();
using var Rendered_pdf = renderer.RenderHtmlFileAsPdf("Assets/test1.html");

var Output_Path = "test1_pdf.pdf";
Rendered_pdf.SaveAs(Output_Path);
System.Diagnostics.Process.Start(Output_Path);
//Render existing html to pdf
var renderer = new ChromePdfRenderer();
using var Rendered_pdf = renderer.RenderHtmlFileAsPdf("Assets/test1.html");

var Output_Path = "test1_pdf.pdf";
Rendered_pdf.SaveAs(Output_Path);
System.Diagnostics.Process.Start(Output_Path);
'Render existing html to pdf
Dim renderer = New ChromePdfRenderer()
Dim Rendered_pdf = renderer.RenderHtmlFileAsPdf("Assets/test1.html")

Dim Output_Path = "test1_pdf.pdf"
Rendered_pdf.SaveAs(Output_Path)
System.Diagnostics.Process.Start(Output_Path)
$vbLabelText   $csharpLabel

这种策略的优势在于,它允许开发人员在创建 HTML 内容时在浏览器中进行测试。 IronPdf 的渲染引擎基于 Chrome 浏览器。 因此,建议使用XML 至 PDF 转换如将 XML 内容打印为 PDF,可使用 XSLT 模板完成。

将 ASP.NET Web 表单转换为 PDF 文件

只需一行代码,您就可以将 ASP.NET 在线表单转换为 PDF 格式,而不是 HTML 格式。 将这行代码放在页面代码隐藏文件的 Page_Load 方法中,使其出现在页面上。

ASP.NET Web 表单应用程序既可以从头开始创建,也可以从以前的版本打开。

如果尚未安装 NuGet 软件包,请安装该软件包。

应使用 using 关键字导入 IronPdf 名称空间。

查看您要转换为 PDF 的页面背后的代码。 例如,文件 Default.aspx.cs 使用 ASP.NET

RenderThisPageAsPdf "是 "AspxToPdf "类的一个方法。

using IronPdf;
using System;
using System.Web.UI;

namespace WebApplication7
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {            
            AspxToPdf.RenderThisPageAsPdf(AspxToPdf.FileBehavior.InBrowser);
        }
    }
}
using IronPdf;
using System;
using System.Web.UI;

namespace WebApplication7
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {            
            AspxToPdf.RenderThisPageAsPdf(AspxToPdf.FileBehavior.InBrowser);
        }
    }
}
Imports IronPdf
Imports System
Imports System.Web.UI

Namespace WebApplication7
	Partial Public Class _Default
		Inherits Page

		Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
			AspxToPdf.RenderThisPageAsPdf(AspxToPdf.FileBehavior.InBrowser)
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

这就要求IronPdf.Extensions.ASPX NuGet 软件包安装。 由于 ASPX 已被 MVC 模型取代,因此在 .NET Core 中无法使用。

应用 HTML 模板

对于内联网和网站开发人员来说,PDF 模板或 "批量生产 "PDF 的能力是标准的必需品。

IronPDF 库不是为 PDF 文档创建模板,而是通过利用现有的、久经考验的技术提供了一种生成 HTML 模板的方法。

如下图所示,在 HTML 模板中添加查询字符串或数据库中的数据后,就会动态生成 PDF 文件。

以 C# 字符串类及其属性为例。 格式方法适用于基本的 "邮件合并 "操作。

String.Format("<h1>Hello {}!<h1/>","World");
String.Format("<h1>Hello {}!<h1/>","World");
String.Format("<h1>Hello {}!<h1/>","World")
$vbLabelText   $csharpLabel

由于 HTML 文件可能非常庞大,因此通常会使用任意占位符,例如[[姓名]]在翻译过程中,我们必须使用准确的数据,然后进行替换。

下面的示例将生成三个 PDF 文档,每个文档都将针对不同的用户进行定制。

var HtmlTemplate = "<p>[[NAME]]</p>";
var Names = new [] { "John", "James", "Jenny" };
foreach (var name in Names) {
var HtmlInstance = HtmlTemplate.Replace("[[NAME]]", name);

var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf(HtmlInstance);
pdf.SaveAs(name + ".pdf");
}
var HtmlTemplate = "<p>[[NAME]]</p>";
var Names = new [] { "John", "James", "Jenny" };
foreach (var name in Names) {
var HtmlInstance = HtmlTemplate.Replace("[[NAME]]", name);

var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf(HtmlInstance);
pdf.SaveAs(name + ".pdf");
}
Dim HtmlTemplate = "<p>[[NAME]]</p>"
Dim Names = { "John", "James", "Jenny" }
For Each name In Names
Dim HtmlInstance = HtmlTemplate.Replace("[[NAME]]", name)

Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(HtmlInstance)
pdf.SaveAs(name & ".pdf")
Next name
$vbLabelText   $csharpLabel

ASP.NET MVC 路由 下载本页的 PDF 版本

利用 ASP.NET MVC Framework,您可以引导用户访问 PDF 文件。

在构建新的 ASP.NET MVC 应用程序或将现有 MVC 控制器添加到现有应用程序时,请选择此选项。 选择 ASP.NET Web 应用程序,启动 Visual Studio 新项目向导(.NET框架)从下拉菜单中选择 > MVC。 或者,您也可以打开一个现有的 MVC 项目。 替换 Controllers 文件夹中 HomeController 文件的 Index 方法,或在 Controllers 文件夹中创建一个新控制器。

以下是代码的编写示例:

using IronPdf;
using System;
using System.Web.Mvc;

namespace WebApplication8.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            using var PDF = HtmlToPdf.StaticRenderUrlAsPdf(new Uri("https://en.wikipedia.org"));
            return File(PDF.BinaryData, "application/pdf", "Wiki.Pdf");
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }
    }
}
using IronPdf;
using System;
using System.Web.Mvc;

namespace WebApplication8.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            using var PDF = HtmlToPdf.StaticRenderUrlAsPdf(new Uri("https://en.wikipedia.org"));
            return File(PDF.BinaryData, "application/pdf", "Wiki.Pdf");
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }
    }
}
Imports IronPdf
Imports System
Imports System.Web.Mvc

Namespace WebApplication8.Controllers
	Public Class HomeController
		Inherits Controller

		Public Function Index() As ActionResult
			Dim PDF = HtmlToPdf.StaticRenderUrlAsPdf(New Uri("https://en.wikipedia.org"))
			Return File(PDF.BinaryData, "application/pdf", "Wiki.Pdf")
		End Function

		Public Function About() As ActionResult
			ViewBag.Message = "Your application description page."

			Return View()
		End Function

		Public Function Contact() As ActionResult
			ViewBag.Message = "Your contact page."

			Return View()
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

为 PDF 文档添加封面页

如何在 ASP.NET 中使用 C# 和 IronPDF 查看 PDF 文件,图 1:为 PDF 文档添加封面页 为 PDF 文档添加封面

IronPDF 简化了合并 PDF 文档的过程。 这种技术最常见的应用是在已经渲染好的 PDF 文档中添加封面页或封底页。

为此,请准备一个封面页,然后使用 "PDFDocument "功能。

要合并这两份文档,请使用合并 PDF 文档方法.

var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/");
using var merged = PdfDocument.Merge(new PdfDocument("CoverPage.pdf"), pdf);
merged.SaveAs("Combined.Pdf");
var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/");
using var merged = PdfDocument.Merge(new PdfDocument("CoverPage.pdf"), pdf);
merged.SaveAs("Combined.Pdf");
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/")
Dim merged = PdfDocument.Merge(New PdfDocument("CoverPage.pdf"), pdf)
merged.SaveAs("Combined.Pdf")
$vbLabelText   $csharpLabel

为您的文档添加水印

最后但并非最不重要的一点是,在 PDF 文档中添加水印可以使用 C# 代码完成; 这可用于在文件的每一页添加免责声明,说明该文件是 "机密 "或 "样本"。

// prepare a stamp
HtmlStamper stamper = new HtmlStamper("<h2 style='color:red'>SAMPLE</h2>")
{
    HorizontalOffset = new Length(-3, MeasurementUnit.Inch),
    VerticalAlignment = VerticalAlignment.Bottom
};

// Stamps a watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
pdf.ApplyStamp(stamper);
pdf.SaveAs(@"C:\PathToWatermarked.pdf");
// prepare a stamp
HtmlStamper stamper = new HtmlStamper("<h2 style='color:red'>SAMPLE</h2>")
{
    HorizontalOffset = new Length(-3, MeasurementUnit.Inch),
    VerticalAlignment = VerticalAlignment.Bottom
};

// Stamps a watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
pdf.ApplyStamp(stamper);
pdf.SaveAs(@"C:\PathToWatermarked.pdf");
' prepare a stamp
Dim stamper As New HtmlStamper("<h2 style='color:red'>SAMPLE</h2>") With {
	.HorizontalOffset = New Length(-3, MeasurementUnit.Inch),
	.VerticalAlignment = VerticalAlignment.Bottom
}

' Stamps a watermark onto a new or existing PDF
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")
pdf.ApplyStamp(stamper)
pdf.SaveAs("C:\PathToWatermarked.pdf")
$vbLabelText   $csharpLabel

使用密码保护您的 PDF 文件

当您为 PDF 文档设置密码属性时,文档将被加密,用户需要提供正确的密码才能阅读文档。 本示例可用于 .NET Core 控制台应用程序。

using IronPdf;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string [] args)
        {
            var renderer = new ChromePdfRenderer();
            using var pdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World<h1>");
            pdfDocument.Password = "strong!@#pass&^%word";
            pdfDocument.SaveAs("secured.pdf");
        }
    }
}
using IronPdf;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string [] args)
        {
            var renderer = new ChromePdfRenderer();
            using var pdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World<h1>");
            pdfDocument.Password = "strong!@#pass&^%word";
            pdfDocument.SaveAs("secured.pdf");
        }
    }
}
Imports IronPdf

Namespace ConsoleApp
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			Dim renderer = New ChromePdfRenderer()
			Dim pdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World<h1>")
			pdfDocument.Password = "strong!@#pass&^%word"
			pdfDocument.SaveAs("secured.pdf")
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

如果没有上述优点,使用 IronPDF,您还可以:

Kannaopat Udonpant
坎那帕·乌东攀
软件工程师
在成为软件工程师之前,Kannapat 从日本北海道大学完成了环境资源博士学位。在攻读学位期间,Kannapat 还成为了生物生产工程系车辆机器人实验室的成员。2022年,他利用自己的 C# 技能加入了 Iron Software 的工程团队,专注于 IronPDF。Kannapat 珍视他的工作,因为他能直接向编写 IronPDF 大部分代码的开发者学习。除了同伴学习,Kannapat 还享受在 Iron Software 工作的社交方面。不写代码或文档时,Kannapat 通常在 PS5 上玩游戏或重看《最后生还者》。
< 前一页
从HTML文件在C#中创建PDF
下一步 >
使用IronPDF在C#中生成PDF文件的5个步骤