C#/VB.NET創(chuàng)建PDF文檔的示例代碼
通過代碼創(chuàng)建 PDF 文檔有許多好處。例如,您可以輕松地合并動(dòng)態(tài)內(nèi)容,如用戶輸入、數(shù)據(jù)庫(kù)記錄或?qū)崟r(shí)數(shù)據(jù)。通過使用代碼生成的 PDF 文件可以實(shí)現(xiàn)更高程度的定制和自動(dòng)化,從而最大限度地減少手動(dòng)干預(yù)以創(chuàng)建高度定制化的文檔。在本教程中,我們將為您展示如何使用 Spire.PDF for .NET 在 C# 和 VB.NET 中從頭開始創(chuàng)建 PDF 文檔。
安裝 Spire.PDF for .NET
首先,您需要添加 Spire.PDF for .NET 包中包含的 DLL 文件作為 .NET 項(xiàng)目中的引用。DLL 文件可以從此鏈接下載或通過 NuGet 安裝。
PM> Install-Package Spire.PDF
背景知識(shí)
Spire.PDF 中的頁(yè)面(由 PdfPageBase 類表示)由內(nèi)容區(qū)域和四周的頁(yè)邊距組成。內(nèi)容區(qū)是供用戶編寫各種內(nèi)容的區(qū)域,頁(yè)邊距通常為空白邊緣。
如下圖所示,頁(yè)面上坐標(biāo)系的原點(diǎn)位于內(nèi)容區(qū)域的左上角,x 軸水平向右延伸,y 軸垂直向下延伸。添加到內(nèi)容區(qū)域的所有元素都必須基于指定的坐標(biāo)。

此外,下表列出了重要的類和方法,這些類和方法可以幫助您輕松理解下一節(jié)中提供的代碼片段。
| 成員 | 描述 |
| PdfDocument 類 | 表示 PDF 文檔模型。 |
| PdfPageBase 類 | 表示 PDF 文檔中的頁(yè)面。 |
| PdfSolidBrush 類 | 表示用純色填充任何對(duì)象的筆刷。 |
| PdfTrueTypeFont 類 | 表示 true Type 字體。 |
| PdfStringFormat 類 | 表示文本格式信息,如對(duì)齊方式、字符間距和縮進(jìn)。 |
| PdfTextWidget 類 | 表示具有跨多頁(yè)功能的文本區(qū)域。 |
| PdfTextLayout 類 | 表示文本布局信息。 |
| PdfDocument.Pages.Add() 方法 | 將頁(yè)面添加到PDF文檔中。 |
| PdfPageBase.Canvas.DrawString() 方法 | 使用指定的字體和筆刷對(duì)象在頁(yè)面上的指定位置繪制字符串。 |
| PdfTextWidget.Draw() 方法 | 在指定位置繪制頁(yè)面上的文本小部件。 |
| PdfDocument.Save() 方法 | 將文檔保存為 PDF 文件。 |
在 C# 和 VB.NET 中從頭開始創(chuàng)建 PDF 文檔
雖然 Spire.PDF for .NET 支持向 PDF 文檔中添加各種元素,但本文僅演示如何使用純文本創(chuàng)建 PDF 文檔。以下是詳細(xì)的步驟。
- 創(chuàng)建 PdfDocument 對(duì)象。
- 使用 PdfDocument.Pages.Add() 方法添加頁(yè)面。
- 創(chuàng)建筆刷和字體對(duì)象。
- 使用 PdfPageBase.Canvas.DrawString() 方法在頁(yè)面上指定坐標(biāo)處繪制字符串。
- 創(chuàng)建一個(gè) PdfTextWidget 對(duì)象來容納一塊文本。
- 使用 PdfTextWidget.Draw() 方法在頁(yè)面上的指定位置繪制文本小部件
- 使用 PdfDocument.Save() 方法將文檔保存為 PDF 文件。
C#
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System;
using System.Drawing;
using System.IO;
namespace CreatePdfDocument
{
class Program
{
static void Main(string[] args)
{
//創(chuàng)建PdfDocument對(duì)象
PdfDocument doc = new PdfDocument();
//添加頁(yè)面
PdfPageBase page = doc.Pages.Add(PdfPageSize.A4, new PdfMargins(35f));
//指定標(biāo)題文本
String titleText = "什么是AI?";
//創(chuàng)建實(shí)體筆刷
PdfSolidBrush titleBrush = new PdfSolidBrush(new PdfRGBColor(Color.Blue));
PdfSolidBrush paraBrush = new PdfSolidBrush(new PdfRGBColor(Color.Black));
//創(chuàng)建true type字體
PdfTrueTypeFont titleFont = new PdfTrueTypeFont(new Font("宋體", 18f, FontStyle.Bold), true);
PdfTrueTypeFont paraFont = new PdfTrueTypeFont(new Font("宋體", 12f, FontStyle.Regular), true);
//通過PdfStringFormat類設(shè)置文本對(duì)齊方式
PdfStringFormat format = new PdfStringFormat();
format.Alignment = PdfTextAlignment.Center;
//在頁(yè)面中心繪制標(biāo)題
page.Canvas.DrawString(titleText, titleFont, titleBrush, page.Canvas.ClientSize.Width / 2, 20, format);
//從.txt文件中獲取段落內(nèi)容
string paraText = File.ReadAllText("C:\\Users\\Administrator\\Desktop\\文本.txt");
//創(chuàng)建一個(gè)PdfTextWidget對(duì)象來保存段落內(nèi)容
PdfTextWidget widget = new PdfTextWidget(paraText, paraFont, paraBrush);
//創(chuàng)建一個(gè)放置段落內(nèi)容的矩形
RectangleF rect = new RectangleF(0, 50, page.Canvas.ClientSize.Width, page.Canvas.ClientSize.Height);
//將PdfLayoutType設(shè)置為Paginate以使內(nèi)容自動(dòng)分頁(yè)
PdfTextLayout layout = new PdfTextLayout();
layout.Layout = PdfLayoutType.Paginate;
//在頁(yè)面上繪制小部件
widget.Draw(page, rect, layout);
//保存文件
doc.SaveToFile("創(chuàng)建PDF文檔.pdf");
doc.Dispose();
}
}
}VB.NET
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing
Imports System.IO
Namespace CreatePdfDocument
Friend Class Program
Private Shared Sub Main(ByVal args As String())
'創(chuàng)建PdfDocument對(duì)象
Dim doc As PdfDocument = New PdfDocument()
'添加頁(yè)面
Dim page As PdfPageBase = doc.Pages.Add(PdfPageSize.A4, New PdfMargins(35F))
'指定標(biāo)題文本
Dim titleText = "什么是AI?"
'創(chuàng)建實(shí)體筆刷
Dim titleBrush As PdfSolidBrush = New PdfSolidBrush(New PdfRGBColor(Color.Blue))
Dim paraBrush As PdfSolidBrush = New PdfSolidBrush(New PdfRGBColor(Color.Black))
'創(chuàng)建true type字體
Dim titleFont As PdfTrueTypeFont = New PdfTrueTypeFont(New Font("宋體", 18F, FontStyle.Bold), True)
Dim paraFont As PdfTrueTypeFont = New PdfTrueTypeFont(New Font("宋體", 12F, FontStyle.Regular), True)
'通過PdfStringFormat類設(shè)置文本對(duì)齊方式
Dim format As PdfStringFormat = New PdfStringFormat()
format.Alignment = PdfTextAlignment.Center
'在頁(yè)面中心繪制標(biāo)題
page.Canvas.DrawString(titleText, titleFont, titleBrush, page.Canvas.ClientSize.Width / 2, 20, format)
'從.txt文件中獲取段落內(nèi)容
Dim paraText = File.ReadAllText("C:\Users\Administrator\Desktop\文本.txt")
'創(chuàng)建一個(gè)PdfTextWidget對(duì)象來保存段落內(nèi)容
Dim widget As PdfTextWidget = New PdfTextWidget(paraText, paraFont, paraBrush)
'創(chuàng)建一個(gè)放置段落內(nèi)容的矩形
Dim rect As RectangleF = New RectangleF(0, 50, page.Canvas.ClientSize.Width, page.Canvas.ClientSize.Height)
'將PdfLayoutType設(shè)置為Paginate以使內(nèi)容自動(dòng)分頁(yè)
Dim layout As PdfTextLayout = New PdfTextLayout()
layout.Layout = PdfLayoutType.Paginate
'在頁(yè)面上繪制小部件
widget.Draw(page, rect, layout)
'保存文件
doc.SaveToFile("創(chuàng)建PDF文檔.pdf")
doc.Dispose()
End Sub
End Class
End Namespace效果圖

到此這篇關(guān)于C#/VB.NET創(chuàng)建PDF文檔的示例代碼的文章就介紹到這了,更多相關(guān)C#創(chuàng)建PDF內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
unity 實(shí)現(xiàn)攝像機(jī)繞某點(diǎn)旋轉(zhuǎn)一周
這篇文章主要介紹了unity 實(shí)現(xiàn)攝像機(jī)繞某點(diǎn)旋轉(zhuǎn)一周,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-04-04
C#數(shù)據(jù)類型實(shí)現(xiàn)背包、隊(duì)列和棧
本文詳細(xì)講解了C#數(shù)據(jù)結(jié)構(gòu)類型,并實(shí)現(xiàn)背包、隊(duì)列和棧的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
C#調(diào)用Polly庫(kù)實(shí)現(xiàn)捕捉異常處理的操作代碼
Polly 是一個(gè) .NET 彈性和瞬態(tài)故障處理庫(kù),允許開發(fā)人員以 Fluent 和線程安全的方式來實(shí)現(xiàn)重試、斷路、超時(shí)、隔離和回退策略,本文給大家介紹了C#調(diào)用Polly庫(kù)實(shí)現(xiàn)捕捉異常處理操作,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2024-08-08

