跳至页脚内容
使用IRONPDF

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

大多数人在计算机上使用专用桌面应用程序打开PDF,但软件工程师也可以使用IronPDF通过C#编程来创建、查看、打开、读取和编辑PDF内容。

IronPDF在ASP.NET和C#中读取PDF文件时是一款非常有用的插件。

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

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

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

  • 将网页表单、本地HTML页面和其他网站转换为PDF格式。
  • 允许用户下载文档,通过电子邮件与他人分享,或将其保存在云中。
  • 向客户开具发票并提供报价; 准备报告; 商谈合同和其他文件。
  • 在.NET Framework和.NET Core上使用ASP.NET、ASP.NET Core、Web Forms、MVC、Web APIs和其他编程语言。

设置IronPDF库

有两种方法来安装库;

使用NuGet包管理器安装

IronPDF可以通过Visual Studio插件或从命令行的NuGet包管理器安装。导航到控制台,在Visual Studio中输入以下命令:

Install-Package IronPdf

直接从网站下载DLL文件

或者,您可以直接从网站获取DLL。

请记得在使用IronPDF的任何cs类文件顶部包含以下指令:

using IronPdf;
using IronPdf;
$vbLabelText   $csharpLabel

查看IronPDF详细功能概述

IronPDF是不容错过的插件。 现在就获取您的插件并尝试使用IronPDF NuGet包

Create a PDF File From an HTML String in .NET C#

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

由于IronPDF DLL中嵌入的Google Chromium引擎版本,RenderHtmlAsPdf函数提供了一种简单的方法将任何HTML(HTML5)字符串转换为PDF文档。

// Create a renderer to convert HTML to PDF
var renderer = new ChromePdfRenderer();

// Convert an HTML string to a PDF
using var renderedPdf = renderer.RenderHtmlAsPdf("<h1>My First HTML to Pdf</h1>");

// Define the output path for the PDF
var outputPath = "My_First_Html.pdf";

// Save the rendered PDF to the specified path
renderedPdf.SaveAs(outputPath);

// Automatically open the newly created PDF
System.Diagnostics.Process.Start(outputPath);
// Create a renderer to convert HTML to PDF
var renderer = new ChromePdfRenderer();

// Convert an HTML string to a PDF
using var renderedPdf = renderer.RenderHtmlAsPdf("<h1>My First HTML to Pdf</h1>");

// Define the output path for the PDF
var outputPath = "My_First_Html.pdf";

// Save the rendered PDF to the specified path
renderedPdf.SaveAs(outputPath);

// Automatically open the newly created PDF
System.Diagnostics.Process.Start(outputPath);
$vbLabelText   $csharpLabel

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

以下代码将生成一个PDF文件:

// Render HTML to PDF with a base path for local assets
var renderPdf = renderer.RenderHtmlAsPdf("<img src='image_1.png'/>", @"C:\Newproject");
// Render HTML to PDF with a base path for local assets
var renderPdf = renderer.RenderHtmlAsPdf("<img src='image_1.png'/>", @"C:\Newproject");
$vbLabelText   $csharpLabel

所有引用的CSS样式表、图片和JavaScript文件都将相对于BaseUrlPath,从而保持更有组织和逻辑的结构。 当然,您还可以利用互联网可用的图片、样式表和资产,例如Web字体、Google字体,甚至是jQuery,如果您愿意的话。

使用现有HTML URL创建PDF文档

可以高效地使用C#将现有URL渲染为PDF; 这也使团队可以跨各种部门划分PDF设计和后端PDF渲染工作,这很有利。

下面的代码展示了如何从URL渲染endeavorcreative.com页面:

// Create a renderer for converting URLs to PDF
var renderer = new ChromePdfRenderer();

// Convert the specified URL to a PDF
using var renderedPdf = renderer.RenderUrlAsPdf("https://endeavorcreative.com/setting-up-wordpress-website-from-scratch/");

// Specify the output path for the PDF
var outputPath = "Url_pdf.pdf";

// Save the PDF to the specified path
renderedPdf.SaveAs(outputPath);

// Open the newly created PDF
System.Diagnostics.Process.Start(outputPath);
// Create a renderer for converting URLs to PDF
var renderer = new ChromePdfRenderer();

// Convert the specified URL to a PDF
using var renderedPdf = renderer.RenderUrlAsPdf("https://endeavorcreative.com/setting-up-wordpress-website-from-scratch/");

// Specify the output path for the PDF
var outputPath = "Url_pdf.pdf";

// Save the PDF to the specified path
renderedPdf.SaveAs(outputPath);

// Open the newly created PDF
System.Diagnostics.Process.Start(outputPath);
$vbLabelText   $csharpLabel

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

从现有HTML文档创建PDF文档

本节展示了如何渲染任何本地HTML文件。将会显示该文件已使用file:/协议打开,用于所有相关资源,例如CSS、图片、JavaScript等。

// Create a renderer for existing HTML files
var renderer = new ChromePdfRenderer();

// Render an HTML file to PDF
using var renderedPdf = renderer.RenderHtmlFileAsPdf("Assets/test1.html");

// Specify the output path for the PDF
var outputPath = "test1_pdf.pdf";

// Save the PDF to the specified path
renderedPdf.SaveAs(outputPath);

// Open the newly created PDF
System.Diagnostics.Process.Start(outputPath);
// Create a renderer for existing HTML files
var renderer = new ChromePdfRenderer();

// Render an HTML file to PDF
using var renderedPdf = renderer.RenderHtmlFileAsPdf("Assets/test1.html");

// Specify the output path for the PDF
var outputPath = "test1_pdf.pdf";

// Save the PDF to the specified path
renderedPdf.SaveAs(outputPath);

// Open the newly created PDF
System.Diagnostics.Process.Start(outputPath);
$vbLabelText   $csharpLabel

此策略的优点在于,允许开发人员在创建HTML内容时在浏览器中进行测试。 IronPDF的渲染引擎基于Chrome浏览器。 因此,建议使用XML到PDF转换,因为可以使用XSLT模板打印XML内容为PDF。

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

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

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

如果尚未安装NuGet包,请安装。

应该使用IronPdf命名空间。

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

AspxToPdf类上的一个方法。

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

namespace WebApplication7
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // Render the current page as a PDF in the browser
            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)
        {
            // Render the current page as a PDF in the browser
            AspxToPdf.RenderThisPageAsPdf(AspxToPdf.FileBehavior.InBrowser);
        }
    }
}
$vbLabelText   $csharpLabel

这需要安装IronPdf.Extensions.ASPX NuGet包。 它在.NET Core中不可用,因为ASPX已被MVC模型取代。

应用HTML模板

对于内部网和网站开发人员来说,能够为模板或"批量生成"PDF是一项标准需求。

与其为PDF文档创建模板,不如使用IronPDF库通过利用现有的、经过良好测试的技术来生成HTML模板。

当HTML模板补充有来自查询字符串或数据库的数据时,将生成一个动态生成的PDF文件,如下所示。

例如,考虑C# String类及其属性。 Format方法对于基本的"邮件合并"操作非常有效。

// Basic HTML String Formatting
string formattedString = String.Format("<h1>Hello {0}!</h1>", "World");
// Basic HTML String Formatting
string formattedString = String.Format("<h1>Hello {0}!</h1>", "World");
$vbLabelText   $csharpLabel

由于HTML文件可能相当大,通常使用任意占位符,例如[[NAME]],然后用实际数据替换它们。

以下示例将生成三个PDF文档,每个文档都将为不同用户量身定制。

// Define an HTML template with a placeholder
var htmlTemplate = "<p>[[NAME]]</p>";

// Sample data to replace placeholders
var names = new[] { "John", "James", "Jenny" };

// Create a new PDF for each name
foreach (var name in names)
{
    // Replace placeholder with actual name
    var htmlInstance = htmlTemplate.Replace("[[NAME]]", name);

    // Create a renderer and render the HTML as PDF
    var renderer = new ChromePdfRenderer();
    using var pdf = renderer.RenderHtmlAsPdf(htmlInstance);

    // Save the PDF with the name in the filename
    pdf.SaveAs($"{name}.pdf");
}
// Define an HTML template with a placeholder
var htmlTemplate = "<p>[[NAME]]</p>";

// Sample data to replace placeholders
var names = new[] { "John", "James", "Jenny" };

// Create a new PDF for each name
foreach (var name in names)
{
    // Replace placeholder with actual name
    var htmlInstance = htmlTemplate.Replace("[[NAME]]", name);

    // Create a renderer and render the HTML as PDF
    var renderer = new ChromePdfRenderer();
    using var pdf = renderer.RenderHtmlAsPdf(htmlInstance);

    // Save the PDF with the name in the filename
    pdf.SaveAs($"{name}.pdf");
}
$vbLabelText   $csharpLabel

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

通过ASP.NET MVC框架,您可以将用户引导至PDF文件。

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

以下是如何编写代码的示例:

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

namespace WebApplication8.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            // Render a URL as PDF and return it in the response
            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()
        {
            // Render a URL as PDF and return it in the response
            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();
        }
    }
}
$vbLabelText   $csharpLabel

向PDF文档添加封面

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

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

为实现此目的,请准备一个封面页然后使用PdfDocument功能。

要合并两个文档,请使用Merge PDF Documents Method

// Create a renderer and render a PDF from a URL
var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/");

// Merge the cover page with the rendered PDF
using var merged = PdfDocument.Merge(new PdfDocument("CoverPage.pdf"), pdf);

// Save the merged document
merged.SaveAs("Combined.Pdf");
// Create a renderer and render a PDF from a URL
var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/");

// Merge the cover page with the rendered PDF
using var merged = PdfDocument.Merge(new PdfDocument("CoverPage.pdf"), pdf);

// Save the merged document
merged.SaveAs("Combined.Pdf");
$vbLabelText   $csharpLabel

向您的文档添加水印

最后但同样重要的是,向PDF文档添加水印可以使用C#代码实现; 这可以用于在文档的每一页中添加免责声明,声明它是"机密"或"样本"。

// Prepare a stamper with HTML content for the watermark
HtmlStamper stamper = new HtmlStamper("<h2 style='color:red'>SAMPLE</h2>")
{
    HorizontalOffset = new Length(-3, MeasurementUnit.Inch),
    VerticalAlignment = VerticalAlignment.Bottom
};

// Create a renderer and render a PDF from a URL
var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");

// Apply the watermark to the PDF
pdf.ApplyStamp(stamper);

// Save the watermarked PDF
pdf.SaveAs(@"C:\PathToWatermarked.pdf");
// Prepare a stamper with HTML content for the watermark
HtmlStamper stamper = new HtmlStamper("<h2 style='color:red'>SAMPLE</h2>")
{
    HorizontalOffset = new Length(-3, MeasurementUnit.Inch),
    VerticalAlignment = VerticalAlignment.Bottom
};

// Create a renderer and render a PDF from a URL
var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");

// Apply the watermark to the PDF
pdf.ApplyStamp(stamper);

// Save the watermarked PDF
pdf.SaveAs(@"C:\PathToWatermarked.pdf");
$vbLabelText   $csharpLabel

您的PDF文件可以使用密码保护

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

using IronPdf;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create a renderer and render a PDF from HTML
            var renderer = new ChromePdfRenderer();
            using var pdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");

            // Set password to protect the PDF
            pdfDocument.Password = "strong!@#pass&^%word";

            // Save the secured PDF
            pdfDocument.SaveAs("secured.pdf");
        }
    }
}
using IronPdf;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create a renderer and render a PDF from HTML
            var renderer = new ChromePdfRenderer();
            using var pdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");

            // Set password to protect the PDF
            pdfDocument.Password = "strong!@#pass&^%word";

            // Save the secured PDF
            pdfDocument.SaveAs("secured.pdf");
        }
    }
}
$vbLabelText   $csharpLabel

没有上述好处的情况下,通过IronPDF,您还可以:

创建PDF是一项具有挑战性的任务; 有些人可能从未接触过他们应该使用的基本概念来生成最出色的文档。 结果是,IronPDF非常有帮助,因为它简化了创建PDF,并因此改善了从PDF和HTML创建的文档的原始表现。

根据文档和竞争对手分析提供的信息:IronPDF是创建PDF时最有效的工具,使任何人,包括在办公室或学校工作的人,能够高效地完成任务。

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

IronPDF是一个必备的.NET库。 现在就获取您的插件并尝试使用IronPDF NuGet包

常见问题解答

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

您可以使用IronPDF在ASP.NET应用中查看PDF文件,通过将PDF渲染为图像或可以嵌入网页的HTML元素。

将HTML页面转换为PDF在ASP.NET中的步骤是什么?

要在ASP.NET中将HTML页面转换为PDF,您可以使用IronPDF的RenderHtmlAsPdf方法,该方法支持CSS和JavaScript以实现准确渲染。

如何在C#中合并多个PDF文档?

IronPDF允许您使用PdfDocument.Merge方法合并多个PDF文档,将不同的PDF文件组合成一个文档。

是否可以在ASP.NET中向PDF文档添加水印?

是的,你可以使用 IronPDF 在 ASP.NET 中为 PDF 文档添加水印,方法是利用 HtmlStamper 类叠加自定义 HTML 内容。

如何在C#中实现PDF文件的密码保护?

您可以通过在PdfDocument上设置Password属性来使用IronPDF加密文件,从而对PDF文件进行密码保护。

IronPDF可以用于将ASP.NET Web Forms转为PDF吗?

是的,IronPDF可以通过使用RenderThisPageAsPdf方法将ASP.NET Web Forms转换为PDF,捕获整个Web表单为一个PDF文档。

IronPDF在ASP.NET中的PDF生成中提供了哪些优势?

IronPDF提供了诸如使用内置的Google Chromium引擎准确渲染HTML、CSS和JavaScript的优势,使其成为ASP.NET中PDF生成的灵活工具。

如何在我的ASP.NET项目中安装IronPDF?

您可以通过NuGet包管理器或直接从IronPDF网站下载DLL文件在ASP.NET项目中安装IronPDF。

是什么让IronPDF成为软件开发人员的有价值资产?

IronPDF是软件开发人员的有价值资产,因为它简化了复杂的PDF生成任务,并无缝集成到ASP.NET应用中以实现高效的PDF操作。

如何使用IronPDF在C#中从URL创建PDF?

您可以使用 IronPDF 的RenderUrlAsPdf方法在 C# 中从 URL 创建 PDF,该方法会从 URL 获取内容并将其转换为 PDF 文档。

.NET 10 支持:IronPDF 是否兼容 .NET 10,以便在 ASP.NET 中查看 PDF 文件?

是的——IronPDF 完全支持 .NET 10,包括使用 ASP.NET 或 ASP.NET Core 的 Web 应用程序。它无需特殊配置即可在 .NET 10 项目中无缝运行。您仍然可以像在早期 .NET 版本中一样使用熟悉的方法,例如RenderUrlAsPdf或返回 MIME 类型为application/pdfFileStreamResult旨在实现跨平台支持,并且 .NET 10 已明确列入其支持的框架之一。([ironpdf.com](https://ironpdf.com/?utm_source=openai))

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me