通过代码创建 PDF 文档有许多好处。例如,您可以轻松地合并动态内容,如用户输入、数据库记录或实时数据。通过使用代码生成的 PDF 文件可以实现更高程度的定制和自动化,从而最大限度地减少手动干预以创建高度定制化的文档。在本教程中,我们将为您展示如何使用 Spire.PDF for .NET 在 C# 和 VB.NET 中从头开始创建 PDF 文档。
安装 Spire.PDF for .NET
首先,您需要添加 Spire.PDF for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。
PM> Install-Package Spire.PDF
背景知识
Spire.PDF 中的页面(由 PdfPageBase 类表示)由内容区域和四周的页边距组成。内容区是供用户编写各种内容的区域,页边距通常为空白边缘。
如下图所示,页面上坐标系的原点位于内容区域的左上角,x 轴水平向右延伸,y 轴垂直向下延伸。添加到内容区域的所有元素都必须基于指定的坐标。
此外,下表列出了重要的类和方法,这些类和方法可以帮助您轻松理解下一节中提供的代码片段。
成员 | 描述 |
PdfDocument 类 | 表示 PDF 文档模型。 |
PdfPageBase 类 | 表示 PDF 文档中的页面。 |
PdfSolidBrush 类 | 表示用纯色填充任何对象的笔刷。 |
PdfTrueTypeFont 类 | 表示 true Type 字体。 |
PdfStringFormat 类 | 表示文本格式信息,如对齐方式、字符间距和缩进。 |
PdfTextWidget 类 | 表示具有跨多页功能的文本区域。 |
PdfTextLayout 类 | 表示文本布局信息。 |
PdfDocument.Pages.Add() 方法 | 将页面添加到PDF文档中。 |
PdfPageBase.Canvas.DrawString() 方法 | 使用指定的字体和笔刷对象在页面上的指定位置绘制字符串。 |
PdfTextWidget.Draw() 方法 | 在指定位置绘制页面上的文本小部件。 |
PdfDocument.Save() 方法 | 将文档保存为 PDF 文件。 |
在 C# 和 VB.NET 中从头开始创建 PDF 文档
虽然 Spire.PDF for .NET 支持向 PDF 文档中添加各种元素,但本文仅演示如何使用纯文本创建 PDF 文档。以下是详细的步骤。
- 创建 PdfDocument 对象。
- 使用 PdfDocument.Pages.Add() 方法添加页面。
- 创建笔刷和字体对象。
- 使用 PdfPageBase.Canvas.DrawString() 方法在页面上指定坐标处绘制字符串。
- 创建一个 PdfTextWidget 对象来容纳一块文本。
- 使用 PdfTextWidget.Draw() 方法在页面上的指定位置绘制文本小部件
- 使用 PdfDocument.Save() 方法将文档保存为 PDF 文件。
- C#
- VB.NET
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System;
using System.Drawing;
using System.IO;
namespace CreatePdfDocument
{
class Program
{
static void Main(string[] args)
{
//创建PdfDocument对象
PdfDocument doc = new PdfDocument();
//添加页面
PdfPageBase page = doc.Pages.Add(PdfPageSize.A4, new PdfMargins(35f));
//指定标题文本
String titleText = "什么是AI?";
//创建实体笔刷
PdfSolidBrush titleBrush = new PdfSolidBrush(new PdfRGBColor(Color.Blue));
PdfSolidBrush paraBrush = new PdfSolidBrush(new PdfRGBColor(Color.Black));
//创建true type字体
PdfTrueTypeFont titleFont = new PdfTrueTypeFont(new Font("宋体", 18f, FontStyle.Bold), true);
PdfTrueTypeFont paraFont = new PdfTrueTypeFont(new Font("宋体", 12f, FontStyle.Regular), true);
//通过PdfStringFormat类设置文本对齐方式
PdfStringFormat format = new PdfStringFormat();
format.Alignment = PdfTextAlignment.Center;
//在页面中心绘制标题
page.Canvas.DrawString(titleText, titleFont, titleBrush, page.Canvas.ClientSize.Width / 2, 20, format);
//从.txt文件中获取段落内容
string paraText = File.ReadAllText("C:\\Users\\Administrator\\Desktop\\文本.txt");
//创建一个PdfTextWidget对象来保存段落内容
PdfTextWidget widget = new PdfTextWidget(paraText, paraFont, paraBrush);
//创建一个放置段落内容的矩形
RectangleF rect = new RectangleF(0, 50, page.Canvas.ClientSize.Width, page.Canvas.ClientSize.Height);
//将PdfLayoutType设置为Paginate以使内容自动分页
PdfTextLayout layout = new PdfTextLayout();
layout.Layout = PdfLayoutType.Paginate;
//在页面上绘制小部件
widget.Draw(page, rect, layout);
//保存文件
doc.SaveToFile("创建PDF文档.pdf");
doc.Dispose();
}
}
}
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())
'创建PdfDocument对象
Dim doc As PdfDocument = New PdfDocument()
'添加页面
Dim page As PdfPageBase = doc.Pages.Add(PdfPageSize.A4, New PdfMargins(35F))
'指定标题文本
Dim titleText = "什么是AI?"
'创建实体笔刷
Dim titleBrush As PdfSolidBrush = New PdfSolidBrush(New PdfRGBColor(Color.Blue))
Dim paraBrush As PdfSolidBrush = New PdfSolidBrush(New PdfRGBColor(Color.Black))
'创建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类设置文本对齐方式
Dim format As PdfStringFormat = New PdfStringFormat()
format.Alignment = PdfTextAlignment.Center
'在页面中心绘制标题
page.Canvas.DrawString(titleText, titleFont, titleBrush, page.Canvas.ClientSize.Width / 2, 20, format)
'从.txt文件中获取段落内容
Dim paraText = File.ReadAllText("C:\Users\Administrator\Desktop\文本.txt")
'创建一个PdfTextWidget对象来保存段落内容
Dim widget As PdfTextWidget = New PdfTextWidget(paraText, paraFont, paraBrush)
'创建一个放置段落内容的矩形
Dim rect As RectangleF = New RectangleF(0, 50, page.Canvas.ClientSize.Width, page.Canvas.ClientSize.Height)
'将PdfLayoutType设置为Paginate以使内容自动分页
Dim layout As PdfTextLayout = New PdfTextLayout()
layout.Layout = PdfLayoutType.Paginate
'在页面上绘制小部件
widget.Draw(page, rect, layout)
'保存文件
doc.SaveToFile("创建PDF文档.pdf")
doc.Dispose()
End Sub
End Class
End Namespace
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。