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

此外,下表列出了重要的類(lèi)和方法,這些類(lèi)和方法可以幫助您輕松理解下一節(jié)中提供的代碼片段。
| 成員 | 描述 |
| PdfDocument 類(lèi) | 表示 PDF 文檔模型。 |
| PdfPageBase 類(lèi) | 表示 PDF 文檔中的頁(yè)面。 |
| PdfSolidBrush 類(lèi) | 表示用純色填充任何對(duì)象的筆刷。 |
| PdfTrueTypeFont 類(lèi) | 表示 true Type 字體。 |
| PdfStringFormat 類(lèi) | 表示文本格式信息,如對(duì)齊方式、字符間距和縮進(jìn)。 |
| PdfTextWidget 類(lèi) | 表示具有跨多頁(yè)功能的文本區(qū)域。 |
| PdfTextLayout 類(lèi) | 表示文本布局信息。 |
| PdfDocument.Pages.Add() 方法 | 將頁(yè)面添加到PDF文檔中。 |
| PdfPageBase.Canvas.DrawString() 方法 | 使用指定的字體和筆刷對(duì)象在頁(yè)面上的指定位置繪制字符串。 |
| PdfTextWidget.Draw() 方法 | 在指定位置繪制頁(yè)面上的文本小部件。 |
| PdfDocument.Save() 方法 | 將文檔保存為 PDF 文件。 |
在 C# 和 VB.NET 中從頭開(kāi)始創(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ì)象來(lái)容納一塊文本。
- 使用 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);
//通過(guò)PdfStringFormat類(lèi)設(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ì)象來(lái)保存段落內(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)
'通過(guò)PdfStringFormat類(lèi)設(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ì)象來(lái)保存段落內(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)文章
C#線程啟動(dòng)的幾種實(shí)現(xiàn)方法小結(jié)
在C#中創(chuàng)建新線程執(zhí)行代碼的幾種方法,包括Thread、Task、ThreadPool等,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-07-07
C#中Array與ArrayList用法及轉(zhuǎn)換的方法
C#中Array與ArrayList用法及轉(zhuǎn)換的方法,需要的朋友可以參考一下2013-03-03
C#實(shí)現(xiàn)從Word文檔和各種Word元素中自動(dòng)提取文本
手動(dòng)提取文本既費(fèi)時(shí)又容易出錯(cuò),尤其是在處理較長(zhǎng)或復(fù)雜的Word文檔時(shí),這篇文章將探討如何使用C# 從Word文檔中提取文本,我們將涵蓋不同方面的內(nèi)容,希望對(duì)大家有所幫助2025-11-11
在C# WinForm項(xiàng)目中跨.cs文件傳值的六種常用方案
你想知道在 C# WinForm 項(xiàng)目中,不同.cs 文件之間傳遞數(shù)據(jù) 的通用處理方法,我會(huì)結(jié)合串口調(diào)試工具的場(chǎng)景,講解 6 種常用方案(從簡(jiǎn)單到規(guī)范),并說(shuō)明每種方案的適用場(chǎng)景、優(yōu)缺點(diǎn)和具體實(shí)現(xiàn),需要的朋友可以參考下2026-01-01
C#實(shí)現(xiàn)多個(gè)計(jì)時(shí)器記錄不同定時(shí)時(shí)間
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)多個(gè)計(jì)時(shí)器記錄不同定時(shí)時(shí)間,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12

