在 .NET Core 中將 HTML 轉換為 PDF 教程
IronPDF
.NET Core PDF 生成器
生成 .NET Core 的 PDF 文件是一項繁瑣的任務。在 ASP.NET MVC 專案中處理 PDF 文件,以及將 MVC 視圖、HTML 文件和線上網頁轉換為 PDF 都可能具有挑戰性。本教程透過 IronPDF 工具解決這些問題,提供解決您許多 PDF .NET 需求的指導方針。
IronPDF 也支持使用 Chrome 來調試您的 HTML 以獲得像素完美的 PDF。可以找到設置此功能的教程。 這裡.**
如何在 .NET Core 中將 HTML 轉換為 PDF
- 下載 C# 程式庫以將 HTML 轉換為 PDF
- 使用
將網址渲染為PDF
將網頁URL轉換為PDF - 將 HTML Markdown 字符串轉換為 PDF 與
將HTML渲染為PDF
- 將MVC視圖轉換為PDF,方法是配置 模型 和 服務 類別
- Modify the HTML page to use the 模型 和 invoke a method to pass the HTML to
將HTML渲染為PDF
概述
完成本教程後,您將能夠:
- 從不同來源(如 URL、HTML、MVC 視圖)轉換為 PDF
- 使用用於不同輸出 PDF 設定的進階選項
- 部署您的專案到 Linux 和 Windows
- 使用 PDF 文件操作功能
- 添加頁眉和頁腳、合併文件、添加圖章
- 使用 Dockers
這一廣泛的 .NET Core HTML 到 PDF 功能將有助於滿足各種專案需求。
第一步
1. 安裝 IronPDF Library 免費版
立即開始在您的專案中使用IronPDF,並享受免費試用。
查看 IronPDF 上 Nuget 快速安裝和部署。已被下載超過800萬次,它正用C#改變PDF。
Install-Package IronPdf
請考慮安裝 IronPDF DLL 直接下載並手動安裝到您的專案或GAC表單: IronPdf.zip
手動安裝到您的項目中
下載DLLIronPDF 可安裝並用於所有 .NET 專案類型,如 Windows 應用程式、ASP.NET MVC 和 .NET Core 應用程式。
要將 IronPDF 庫添加到我們的項目中,我們有兩種方式,可以從 Visual Studio 編輯器中使用 NuGet 安裝,或者使用命令行通過包控制台管理器安裝。
使用 NuGet 安裝
要使用 NuGet 將 IronPDF 庫新增到我們的專案中,我們可以使用可視化介面。 (NuGet 套件管理器) 或者通過使用套件管理控制台來執行命令:
1.1.1 使用 NuGet 套件管理員
1- 右鍵點擊專案名稱 -> 選擇管理 NuGet 套件 2- 從瀏覽器標籤 -> 搜尋 IronPDF -> 安裝 3- 點擊確定 4- 完成了!
1.1.2 使用 NuGet 套件管理器控制台
從工具 -> NuGet 套件管理器 -> 套件管理器控制台 2- 執行命令 -> Install-Package IronPdf
操作教程
2. 將網站轉換為 PDF
範例:ConvertUrlToPdf 控制台應用程式
請按照以下步驟建立一個新的 Asp.NET MVC 專案
1- 打開 Visual Studio 選擇「創建新專案」 3-選擇主控台應用程式(.NET Core) 4- 給我們的範例命名為 “ConvertUrlToPdf” 並點擊創建 5- 現在我們已經建立了一個主控台應用程式 6- 添加 IronPDF => 點擊安裝
7- 添加幾行代碼將維基百科首頁渲染為 PDF
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-1.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.wikipedia.org/");
pdf.SaveAs("wiki.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
3. 轉換.NET Core的HTML為PDF
範例:將 HTML 轉換為 PDF 控制台應用程式
要將 HTML 渲染為 PDF,我們有兩種方式:
將 HTML 寫入字串然後渲染
2- 將HTML寫入檔案並將其路徑傳遞給IronPDF進行渲染
渲染 HTML 字串範例程式碼會如下所示。
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-2.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
pdf.SaveAs("HtmlString.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
生成的 PDF 將如下所示。
4. 將MVC View轉換為PDF
範例:TicketsApps .NET Core MVC應用程式
讓我們實現一個真實的例子。我選擇了一個在線售票網站。打開網站,導航到「預訂票券」,填寫所需信息,然後下載您的PDF文件。
我們將按照以下步驟進行:
建立專案
- 選擇 "ASP.NET Core Web App" (模型-視圖-控制器)專案。
- 將專案命名為“TicketsApps”。
- 讓我們使用啟用了 Linux Docker 的 .NET 8。在 Dockerfile 中,將 "USER app" 更改為 "USER root"。這將確保賦予該庫足夠的權限。
- 現在已準備好了。
新增客戶模型
- 右鍵點擊「Models」資料夾並新增類別。
- 將模型命名為“ClientModel”,然後點擊新增。
- 將屬性 'name'、'phone' 和 'email' 新增至 ClientModel 類別。透過在每個屬性上添加 'Required' 屬性,使它們全都成為必填項如下:
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-3.cs
public class ClientModel
{
[Required]
public string Name { get; set; }
[Required]
public string Phone { get; set; }
[Required]
public string Email { get; set; }
}
Public Class ClientModel
<Required>
Public Property Name() As String
<Required>
Public Property Phone() As String
<Required>
Public Property Email() As String
End Class
添加客戶服務
創建一個文件夾並命名為 "services"。
添加一個名為 "ClientServices" 的類。
添加一個靜態類型為 "ClientModel" 的對象,用作儲存庫。
- 添加兩個功能:一個用於將客戶保存到儲存庫,另一個用於檢索保存的客戶。
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-4.cs
public class ClientServices
{
private static ClientModel _clientModel;
public static void AddClient(ClientModel clientModel)
{
_clientModel = clientModel;
}
public static ClientModel GetClient()
{
return _clientModel;
}
}
Public Class ClientServices
Private Shared _clientModel As ClientModel
Public Shared Sub AddClient(ByVal clientModel As ClientModel)
_clientModel = clientModel
End Sub
Public Shared Function GetClient() As ClientModel
Return _clientModel
End Function
End Class
設計訂票頁面
- 從方案總管中,右鍵點擊「Controllers」文件夾並添加控制器。
- 將其命名為 "BookTicketController"。
- 右鍵點擊索引函數 (或者正如我們所說的行動) 並選擇「新增檢視」。
- 添加名為“index”的視圖。
- 將 HTML 更新如下
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-5.cs
@model IronPdfMVCHelloWorld.Models.ClientModel
@{
ViewBag.Title = "Book Ticket";
}
<h2>Index</h2>
@using (Html.BeginForm())
{
<div class="form-horizontal">
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Phone, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Phone, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Phone, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Email, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Email, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-10 pull-right">
<button type="submit" value="Save" class="btn btn-sm">
<i class="fa fa-plus"></i>
<span>
Save
</span>
</button>
</div>
</div>
</div>
}
model ReadOnly Property () As IronPdfMVCHelloWorld.Models.ClientModel
ViewBag.Title = "Book Ticket"
End Property
'INSTANT VB TODO TASK: The following line could not be converted:
(Of h2) Index</h2> [using](Html.BeginForm())
If True Then
'INSTANT VB TODO TASK: The following line uses invalid syntax:
' <div class="form-horizontal"> @Html.ValidationSummary(True, "", New { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(model => model.Name, htmlAttributes: New { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Name, New { htmlAttributes = New { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Name, "", New { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Phone, htmlAttributes: New { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Phone, New { htmlAttributes = New { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Phone, "", New { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Email, htmlAttributes: New { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Email, New { htmlAttributes = New { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Email, "", New { @class = "text-danger" }) </div> </div> <div class="form-group"> <div class="col-md-10 pull-right"> <button type="submit" value="Save" class="btn btn-sm"> <i class="fa fa-plus"></i> <span> Save </span> </button> </div> </div> </div> }
- 新增一個導航鏈接,讓我們的網站訪客能夠導航到我們的新預訂頁面。這可以通過更新現有路徑中的佈局來完成。 (視圖 -> 共享 -> _Layout.cshtml). 添加以下代碼:
<li class="nav-item">
<a
class="nav-link text-dark"
asp-area=""
asp-controller="BookTicket"
asp-action="Index"
>Book Ticket</a
>
</li>
<li class="nav-item">
<a
class="nav-link text-dark"
asp-area=""
asp-controller="BookTicket"
asp-action="Index"
>Book Ticket</a
>
</li>
- 結果應該看起來像這樣。
- 導航到「預約票」頁面。您應該會發現它看起來像這樣:
驗證並保存訂單信息
- 添加另一個帶屬性的索引操作 [HttpPost] 通知MVC引擎這個動作是用來提交資料的。驗證發送的模型,如果有效,程式碼會將訪客重定向到TicketView頁面。如果無效,訪客將在螢幕上收到錯誤驗證消息。
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-7.cs
[HttpPost]
public ActionResult Index(ClientModel model)
{
if (ModelState.IsValid)
{
ClientServices.AddClient(model);
return RedirectToAction("TicketView");
}
return View(model);
}
<HttpPost>
Public Function Index(ByVal model As ClientModel) As ActionResult
If ModelState.IsValid Then
ClientServices.AddClient(model)
Return RedirectToAction("TicketView")
End If
Return View(model)
End Function
錯誤訊息範例
- 在「Models」文件中創建一個 Ticket 模型,並添加如下代碼
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-9.cs
public class TicketModel : ClientModel
{
public int TicketNumber { get; set; }
public DateTime TicketDate { get; set; }
}
Public Class TicketModel
Inherits ClientModel
Public Property TicketNumber() As Integer
Public Property TicketDate() As DateTime
End Class
- 添加 TicketView 以顯示我們的票券。此視圖將會承載一個 Ticket 部分視圖,負責顯示票券,並且在之後用來列印票券。
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-8.cs
public ActionResult TicketView()
{
var rand = new Random();
var client = ClientServices.GetClient();
var ticket = new TicketModel()
{
TicketNumber = rand.Next(100000, 999999),
TicketDate = DateTime.Now,
Email = client.Email,
Name = client.Name,
Phone = client.Phone
};
return View(ticket);
}
Public Function TicketView() As ActionResult
Dim rand = New Random()
Dim client = ClientServices.GetClient()
Dim ticket = New TicketModel() With {
.TicketNumber = rand.Next(100000, 999999),
.TicketDate = DateTime.Now,
.Email = client.Email,
.Name = client.Name,
.Phone = client.Phone
}
Return View(ticket)
End Function
- 右鍵點擊 TicketView 函數,選擇「添加視圖」,並命名為「TicketView」。添加以下代碼:
@model TicketsApps.Models.TicketModel @{ ViewData["Title"] = "TicketView"; }
@Html.Partial("_TicketPdf", Model) @using (Html.BeginForm()) { @Html.HiddenFor(c
=> c.Email) @Html.HiddenFor(c => c.Name) @Html.HiddenFor(c => c.Phone)
@Html.HiddenFor(c => c.TicketDate) @Html.HiddenFor(c => c.TicketNumber)
<div class="form-group">
<div class="col-md-10 pull-right">
<button type="submit" value="Save" class="btn btn-sm">
<i class="fa fa-plus"></i>
<span> Download Pdf </span>
</button>
</div>
</div>
}
@model TicketsApps.Models.TicketModel @{ ViewData["Title"] = "TicketView"; }
@Html.Partial("_TicketPdf", Model) @using (Html.BeginForm()) { @Html.HiddenFor(c
=> c.Email) @Html.HiddenFor(c => c.Name) @Html.HiddenFor(c => c.Phone)
@Html.HiddenFor(c => c.TicketDate) @Html.HiddenFor(c => c.TicketNumber)
<div class="form-group">
<div class="col-md-10 pull-right">
<button type="submit" value="Save" class="btn btn-sm">
<i class="fa fa-plus"></i>
<span> Download Pdf </span>
</button>
</div>
</div>
}
- 右鍵點擊 BookTicket 文件,添加另一個 View 並命名為 "_TicketPdf。" 添加以下代碼:
@model TicketsApps.Models.TicketModel @{ Layout = null; }
<link href="../css/ticket.css" rel="stylesheet" />
<div class="ticket">
<div class="stub">
<div class="top">
<span class="admit">VIP</span>
<span class="line"></span>
<span class="num">
@Model.TicketNumber
<span> Ticket</span>
</span>
</div>
<div class="number">1</div>
<div class="invite">Room Number</div>
</div>
<div class="check">
<div class="big">
Your <br />
Ticket
</div>
<div class="number">VIP</div>
<div class="info">
<section>
<div class="title">Date</div>
<div>@Model.TicketDate.ToShortDateString()</div>
</section>
<section>
<div class="title">Issued By</div>
<div>Admin</div>
</section>
<section>
<div class="title">Invite Number</div>
<div>@Model.TicketNumber</div>
</section>
</div>
</div>
</div>
@model TicketsApps.Models.TicketModel @{ Layout = null; }
<link href="../css/ticket.css" rel="stylesheet" />
<div class="ticket">
<div class="stub">
<div class="top">
<span class="admit">VIP</span>
<span class="line"></span>
<span class="num">
@Model.TicketNumber
<span> Ticket</span>
</span>
</div>
<div class="number">1</div>
<div class="invite">Room Number</div>
</div>
<div class="check">
<div class="big">
Your <br />
Ticket
</div>
<div class="number">VIP</div>
<div class="info">
<section>
<div class="title">Date</div>
<div>@Model.TicketDate.ToShortDateString()</div>
</section>
<section>
<div class="title">Issued By</div>
<div>Admin</div>
</section>
<section>
<div class="title">Invite Number</div>
<div>@Model.TicketNumber</div>
</section>
</div>
</div>
</div>
添加以下 `ticket.css將檔案放入 "wwwroot/css" 資料夾。
- 將 IronPDF 加入專案並同意授權條款。
- 添加將處理下載按鈕的 TicketView Post 方法。
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-10.cs
[HttpPost]
public ActionResult TicketView(TicketModel model)
{
IronPdf.License.LicenseKey = "YourLicenseKey";
IronPdf.Installation.TempFolderPath = $@"{Directory.GetParent}/irontemp/";
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
var html = this.RenderViewAsync("_TicketPdf", model);
var renderer = new IronPdf.ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf(html.Result, @"wwwroot/css");
return File(pdf.Stream.ToArray(), "application/pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
- 在「Controller」文件中建立一個名為「ControllerExtensions」的控制器。此控制器將把部分視圖渲染為字串。使用如下擴展代碼:
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-11.cs
using System.IO;
using System.Threading.Tasks;
public static class ControllerExtensions
{
public static async Task<string> RenderViewAsync<TModel>(this Controller controller, string viewName, TModel model, bool partial = false)
{
if (string.IsNullOrEmpty(viewName))
{
viewName = controller.ControllerContext.ActionDescriptor.ActionName;
}
controller.ViewData.Model = model;
using (var writer = new StringWriter())
{
IViewEngine viewEngine = controller.HttpContext.RequestServices.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine;
ViewEngineResult viewResult = viewEngine.FindView(controller.ControllerContext, viewName, !partial);
if (viewResult.Success == false)
{
return $"A view with the name {viewName} could not be found";
}
ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, writer, new HtmlHelperOptions());
await viewResult.View.RenderAsync(viewContext);
return writer.GetStringBuilder().ToString();
}
}
}
Imports System.IO
Imports System.Threading.Tasks
Public Module ControllerExtensions
<System.Runtime.CompilerServices.Extension> _
Public Async Function RenderViewAsync(Of TModel)(ByVal controller As Controller, ByVal viewName As String, ByVal model As TModel, Optional ByVal As Boolean = False) As Task(Of String)
If String.IsNullOrEmpty(viewName) Then
viewName = controller.ControllerContext.ActionDescriptor.ActionName
End If
controller.ViewData.Model = model
Using writer = New StringWriter()
Dim viewEngine As IViewEngine = TryCast(controller.HttpContext.RequestServices.GetService(GetType(ICompositeViewEngine)), ICompositeViewEngine)
Dim viewResult As ViewEngineResult = viewEngine.FindView(controller.ControllerContext, viewName, Not partial)
If viewResult.Success = False Then
Return $"A view with the name {viewName} could not be found"
End If
Dim viewContext As New ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, writer, New HtmlHelperOptions())
Await viewResult.View.RenderAsync(viewContext)
Return writer.GetStringBuilder().ToString()
End Using
End Function
End Module
- 運行應用程式並填寫票務資訊,然後點擊「保存」。
- 查看生成的票券
下載 PDF 票券
要將票券下載為 PDF,請點擊「Download Pdf」。您將會收到包含票券的 PDF 文件。
您可以下載本指南的完整代碼。它以壓縮文件的形式提供,您可以在 Visual Studio 中打開。 點擊這裡下載專案。
5. .NET PDF 渲染選項圖表
我們有一些進階選項來定義 PDF 渲染選項,如調整邊距、紙張方向、紙張大小等等。
以下是一個表格,以說明多種不同的選項。
類別 | ChromePdfRenderer | |
---|---|---|
描述 | 用於定義PDF列印選項,例如紙張大小、DPI、頁首和頁尾 | |
屬性 / 函數 | 類型 | 描述 |
自定義Cookies | Dictionary<字串, 字串> | HTML渲染的自訂Cookie。Cookie不會在渲染之間持續,必須每次都設置。 |
紙適 | 虛擬紙張佈局管理器 | 一個用於設置虛擬紙張佈局的管理器,控制內容在 PDF「紙張」頁面上的佈局方式。包括默認的 Chrome 行為、縮放、響應式 CSS3 佈局、按頁比例縮放和連續輸送樣式的 PDF 頁面設置選項。 |
使用頁首和頁腳的邊距 | 使用邊距 | 在渲染頁眉和頁腳時使用主文檔的邊距值。 |
從Html創建Pdf表單 | 布林值 | 將所有 HTML 表單元素轉換為可編輯的 PDF 表單。默認值為 true。 |
CssMedia類型 | PdfCssMedia類型 | Enables Media="screen" CSS Styles and StyleSheets. Default value is PdfCssMedia類型.Screen. |
自訂Css網址 | 字串 | 允許在渲染之前將自定義 CSS 樣式表應用於 HTML。可以是本地檔案路徑或遠端 URL。僅在將 HTML 渲染為 PDF 時適用。 |
啟用JavaScript | 布林值 | 在頁面渲染之前允許執行 JavaScript 和 JSON。非常適合從 Ajax / Angular 應用程式列印。預設值為 false。 |
啟用數學LaTex | 布林值 | 啟用渲染數學 LaTeX 元素。 |
JavaScript | 字串 | A custom JavaScript 字串 to be executed after all HTML has loaded but before PDF rendering. |
JavaScriptMessageListener | 字串委派 | 當瀏覽器的 JavaScript 控制台訊息變為可用時,將調用的方法回調。 |
第一頁號碼 | 整數 | PDF 頁眉和頁腳中使用的第一頁頁碼。預設值為 1。 |
目錄 | 目錄類型s | 在 HTML 文件中找到 id 為 "ironpdf-toc" 的元素所在位置生成目錄。 |
灰度 | 布林值 | 輸出黑白 PDF。預設值為 false。 |
文本標題 | I文本標題Footer | Sets the footer content for every PDF page as text, supporting 'mail-merge' and automatically turning URLs 整數o hyperlinks. |
文本頁腳 | ||
HtmlHeader | HtmlHeaderFooter | 將每個 PDF 頁面的標題內容設置為 HTML。支援「郵件合併」。 |
HtmlFooter | ||
輸入編碼 | 編碼 | The input character encoding as a 字串. Default value is 編碼.UTF8. |
上邊距 | 雙精度 | Top PDF "paper" margin in millimeters. Set to zero for border-less and commercial pr整數ing applications. Default value is 25. |
右邊邊距 | 雙精度 | Right PDF "paper" margin in millimeters. Set to zero for border-less and commercial pr整數ing applications. Default value is 25. |
底邊距 | 雙精度 | Bottom PDF "paper" margin in millimeters. Set to zero for border-less and commercial pr整數ing applications. Default value is 25. |
左邊距 | 雙精度 | Left PDF "paper" margin in millimeters. Set to zero for border-less and commercial pr整數ing applications. Default value is 25. |
紙張方向 | Pdf紙張方向 | PDF文件的紙張方向,例如縱向或橫向。默認值為縱向。 |
紙張大小 | Pdf紙張大小 | 設定紙張大小 |
SetCustom紙張大小inCentimeters | 雙精度 | 設定紙張大小 in centimeters. |
SetCustom紙張大小InInches | 設定紙張大小 in inches. | |
SetCustom紙張大小inMilimeters | 設定紙張大小 in millimeters. | |
SetCustom紙張大小inPixelsOrPo整數s | 設定紙張大小 in screen pixels or pr整數er po整數s. | |
Pr整數HtmlBackgrounds | 布林值 | Indicates whether to pr整數 background-colors and images from HTML. Default value is true. |
請求上下文 | 請求上下文s | 請求此渲染的上下文,確定某些資源如 Cookie 的隔離。 |
超時 | 整數 | 呈現超時(單位:秒)。預設值為 60。 |
標題 | 字串 | PDF Document Name and 標題 metadata, useful for mail-merge and automatic file naming in the IronPdf MVC and Razor extensions. |
Force紙張大小 | 布林值 | Force page sizes to be exactly what is specified via IronPdf.ChromePdfRenderOptions.紙張大小 by resizing the page after generating a PDF from HTML. Helps correct small errors in page size when rendering HTML to PDF. |
等待 | 等待 | 一個封裝物件,包含用於等待機制的配置,以便用戶在渲染之前等待某些事件。預設情況下,將不會等待任何事件。 |
6. .NET PDF 頁首頁尾選項圖表
類別 | 頁眉頁腳 | |
---|---|---|
描述 | 用於定義文本頁首和頁尾顯示選項 | |
屬性 \ 函數 | 類型 | 描述 |
置中文本 | 字串 | Set the text in centered/left/right of PDF header or footer. Can also merge metadata using 字串s placeholders: {page}, {total-pages}, {url}, {date}, {time}, {html-title}, {pdf-title} |
左文本 | ||
右文本 | ||
繪製分隔線 | 布林值 | 在每個頁面的 PDF 文件的頁首/頁尾與頁面內容之間添加一條橫線分隔線。 |
繪製分隔線顏色 | 顏色 | The color of the divider line specified for IronPdf.頁眉頁腳.繪製分隔線. |
字體 | Pdf字體 | 字體 family used for the PDF document. Default is IronSoftware.Drawing.字體類型s.Helvetica. |
字體Size | 雙 | 字體 size in pixels. |
7. 應用 PDF 列印 (渲染) 選項
讓我們嘗試配置我們的 PDF 渲染選項。
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-12.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Set rendering options
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait;
renderer.RenderHtmlFileAsPdf(@"testFile.html").SaveAs("GeneratedFile.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
8. Docker .NET Core 應用程序
8.1. 什麼是 Docker?
Docker 是一套使用操作系統層級虛擬化技術來提供軟體套裝的服務平台產品。這些套裝稱為容器。容器彼此之間是隔離的,並且自帶其自身的軟體、庫和配置文件;它們可以通過明確定義的通道相互通信。
你可以了解更多關於 Docker 和 ASP.NET Core 應用程式 這裡。
我們將直接進入使用 Docker 的部分,但如果你想了解更多,有一個很好的介紹。 .NET和Docker在這裡。 甚至更多有關如何 為 .NET core 應用程式構建容器讓我們一起開始使用 Docker 吧。
8.2. 安裝 Docker
請訪問 Docker 網站 安裝 Docker。
這將需要重新啟動。重新啟動您的機器後,登錄到 Docker。
現在,您可以透過打開 Windows 命令行或 PowerShell 腳本來運行 Docker "hello world",並輸入:
Docker run hello-world
- Docker images => 列出此機器上的所有可用映像
Docker ps => 列出所有正在運行的容器
- Docker ps -a => 列出所有容器
8.3. 運行於 Linux 容器
9. 使用現有的 PDF 文件
9.1. 開啟現有的 PDF
由於您可以從 URL 和 HTML 創建 PDF (文字或文件)您還可以使用現有的 PDF 文件。
以下是開啟普通 PDF 或使用密碼加密的 PDF 的範例
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-13.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
// Open an unencrypted pdf
PdfDocument unencryptedPdf = PdfDocument.FromFile("testFile.pdf");
// Open an encrypted pdf
PdfDocument encryptedPdf = PdfDocument.FromFile("testFile2.pdf", "MyPassword");
IRON VB CONVERTER ERROR developers@ironsoftware.com
9.2. 合併多個 PDF
您可以按以下方式將多個 PDF 合併成一個單一的 PDF:
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-14.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
List<PdfDocument> PDFs = new List<PdfDocument>();
PDFs.Add(PdfDocument.FromFile("1.pdf"));
PDFs.Add(PdfDocument.FromFile("2.pdf"));
PDFs.Add(PdfDocument.FromFile("3.pdf"));
using PdfDocument PDF = PdfDocument.Merge(PDFs);
PDF.SaveAs("mergedFile.pdf");
foreach (PdfDocument pdf in PDFs)
{
pdf.Dispose();
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
將另一個 PDF 附加到當前 PDF 的末尾,如下所示:
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-15.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("1.pdf");
PdfDocument pdf2 = PdfDocument.FromFile("2.pdf");
pdf.AppendPdf(pdf2);
pdf.SaveAs("appendedFile.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
將 PDF 插入到另一個 PDF 中,從給定的索引開始:
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-16.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("1.pdf");
PdfDocument pdf2 = PdfDocument.FromFile("2.pdf");
pdf.InsertPdf(pdf2, 0);
pdf.SaveAs("InsertIntoSpecificIndex.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
9.3 添加頁首或頁尾
您可以在現有的 PDF 中添加頁首和頁尾,或者在從 HTML 或 URL 渲染 PDF 時添加頁首和頁尾。
有兩個類可以用於向 PDF 添加頁首或頁尾:
- TextHeaderFooter:在頁首或頁尾添加簡單的文字。
- HtmlHeaderFooter:在頁首或頁尾添加具有豐富 HTML 內容和圖片的內容。
現在讓我們看看如何使用這兩個類別將頁首/頁尾添加到現有的 PDF 或在渲染時添加頁首/頁尾的兩個示例。
9.3.1 向現有的 PDF 添加頁首
下面是一個示例,演示如何加載現有的 PDF,然後使用 AddTextHeaders
和 AddHtmlFooters
方法添加頁首和頁尾。
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-17.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("testFile.pdf");
TextHeaderFooter header = new TextHeaderFooter()
{
CenterText = "Pdf Header",
LeftText = "{date} {time}",
RightText = "{page} of {total-pages}",
DrawDividerLine = true,
FontSize = 10
};
pdf.AddTextHeaders(header);
pdf.SaveAs("withHeader.pdf");
HtmlHeaderFooter Footer = new HtmlHeaderFooter()
{
HtmlFragment = "<span style='text-align:right'> page {page} of {totalpages}</span>",
DrawDividerLine = true,
MaxHeight = 10 //mm
};
pdf.AddHtmlFooters(Footer);
pdf.SaveAs("withHeaderAndFooters.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
9.3.2 添加页眉和页脚到新PDF
以下是一个范例,通过使用渲染选项从HTML文件创建PDF并添加页眉和页脚。
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-18.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Pdf Header",
LeftText = "{date} {time}",
RightText = "{page} of {total-pages}",
DrawDividerLine = true,
FontSize = 10
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<span style='text-align:right'> page {page} of {totalpages}</span>",
DrawDividerLine = true,
MaxHeight = 10
};
PdfDocument pdf = renderer.RenderHtmlFileAsPdf("test.html");
pdf.SaveAs("generatedFile.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
10. 添加 PDF 密碼和安全性
您可以使用密碼保護您的 PDF,並編輯文件安全設置,如防止複製和打印。
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-19.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("testFile.pdf");
// Edit file metadata
pdf.MetaData.Author = "john smith";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;
// Edit file security settings
// The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key"); //secret-key is a owner password
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
// Change or set the document ecrpytion password
pdf.Password = "123";
pdf.SaveAs("secured.pdf");
IronPdf.License.LicenseKey = "YourLicenseKey"
Dim pdf As PdfDocument = PdfDocument.FromFile("testFile.pdf")
' Edit file metadata
pdf.MetaData.Author = "john smith"
pdf.MetaData.Keywords = "SEO, Friendly"
pdf.MetaData.ModifiedDate = DateTime.Now
' Edit file security settings
' The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption()
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key") 'secret-key is a owner password
pdf.SecuritySettings.AllowUserAnnotations = False
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserFormData = False
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights
' Change or set the document ecrpytion password
pdf.Password = "123"
pdf.SaveAs("secured.pdf")
11. 數位簽署 PDF
您也可以按以下方式對 PDF 進行數位簽署:
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-20.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("testFile.pdf");
pdf.Sign(new PdfSignature("cert123.pfx", "password"), IronPdf.Signing.SignaturePermissions.Default);
pdf.SaveAs("signed.pdf");
IronPdf.License.LicenseKey = "YourLicenseKey"
Dim pdf As PdfDocument = PdfDocument.FromFile("testFile.pdf")
pdf.Sign(New PdfSignature("cert123.pfx", "password"), IronPdf.Signing.SignaturePermissions.Default)
pdf.SaveAs("signed.pdf")
進階範例以獲得更多控制:
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-21.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("testFile.pdf");
IronPdf.Signing.PdfSignature signature = new IronPdf.Signing.PdfSignature("cert123.pfx", "123");
// Optional signing options
signature.SigningContact = "support@ironsoftware.com";
signature.SigningLocation = "Chicago, USA";
signature.SigningReason = "To show how to sign a PDF";
// Sign the PDF with the PdfSignature. Multiple signing certificates may be used
pdf.Sign(signature);
IronPdf.License.LicenseKey = "YourLicenseKey"
Dim pdf As PdfDocument = PdfDocument.FromFile("testFile.pdf")
Dim signature As New IronPdf.Signing.PdfSignature("cert123.pfx", "123")
' Optional signing options
signature.SigningContact = "support@ironsoftware.com"
signature.SigningLocation = "Chicago, USA"
signature.SigningReason = "To show how to sign a PDF"
' Sign the PDF with the PdfSignature. Multiple signing certificates may be used
pdf.Sign(signature)
12. 從PDF提取文本和圖片
提取文字和圖片 使用 IronPDF,您可以按以下方式從 PDF 中提取文字和圖像:
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-22.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("testFile.pdf");
pdf.ExtractAllText(); // Extract all text in the pdf
pdf.ExtractTextFromPage(0); // Read text from specific page
// Extract all images in the pdf
var AllImages = pdf.ExtractAllImages();
// Extract images from specific page
var ImagesOfAPage = pdf.ExtractImagesFromPage(0);
IronPdf.License.LicenseKey = "YourLicenseKey"
Dim pdf As PdfDocument = PdfDocument.FromFile("testFile.pdf")
pdf.ExtractAllText() ' Extract all text in the pdf
pdf.ExtractTextFromPage(0) ' Read text from specific page
' Extract all images in the pdf
Dim AllImages = pdf.ExtractAllImages()
' Extract images from specific page
Dim ImagesOfAPage = pdf.ExtractImagesFromPage(0)
12.1. 將 PDF 光柵化為圖像
您也可以將 PDF 頁面轉換為圖像,方法如下:
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-23.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("testFile.pdf");
List<int> pageList = new List<int>() { 1, 2 };
pdf.RasterizeToImageFiles("*.png", pageList);
IronPdf.License.LicenseKey = "YourLicenseKey"
Dim pdf As PdfDocument = PdfDocument.FromFile("testFile.pdf")
Dim pageList As New List(Of Integer)() From {1, 2}
pdf.RasterizeToImageFiles("*.png", pageList)
13. Add PDF Watermark
The following is an example of how to watermark PDF pages.
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-24.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
// Apply watermark
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs("Watermarked.pdf");
IronPdf.License.LicenseKey = "YourLicenseKey"
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")
' Apply watermark
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center)
pdf.SaveAs("Watermarked.pdf")
浮水印有一組受限的選項和功能。為了更好地控制,您可以使用 HTMLStamper 類別。
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-25.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<div>test text </div>");
// Configure HTML stamper
HtmlStamper backgroundStamp = new HtmlStamper()
{
Html = "<h2 style='color:red'>copyright 2018 ironpdf.com",
MaxWidth = new Length(20),
MaxHeight = new Length(20),
Opacity = 50,
Rotation = -45,
IsStampBehindContent = true,
VerticalAlignment = VerticalAlignment.Middle
};
pdf.ApplyStamp(backgroundStamp);
pdf.SaveAs("stamped.pdf");
IronPdf.License.LicenseKey = "YourLicenseKey"
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<div>test text </div>")
' Configure HTML stamper
Dim backgroundStamp As New HtmlStamper() With {
.Html = "<h2 style='color:red'>copyright 2018 ironpdf.com",
.MaxWidth = New Length(20),
.MaxHeight = New Length(20),
.Opacity = 50,
.Rotation = -45,
.IsStampBehindContent = True,
.VerticalAlignment = VerticalAlignment.Middle
}
pdf.ApplyStamp(backgroundStamp)
pdf.SaveAs("stamped.pdf")
快速指南
GitHub 教程访问
通過 GitHub 探索這個教程和更多内容。使用這些項目和源代碼是學習的最佳方式,並將其應用於您自己的 PDF .NET Core 需求和用例。
在 .NET Core 中生成 PDF 教程保留 PDF CSharp 速查表
在您的 .NET 應用程式中使用我們方便的參考文件開發 PDF。提供對常見功能和生成及編輯 PDF 的 C# 和 VB.NET 範例的快速訪問,這個可共享的工具幫助您節省時間和精力,快速入門使用 IronPDF 完成項目中的常見 PDF 需求。
保留備忘單