C#/VB.NET创建PDF文档的示例代码

 更新时间:2023年12月17日 09:00:51   作者:E-iceblue  
通过代码创建 PDF 文档有许多好处,所以本文将为大家详细介绍一下如何使用 Spire.PDF for .NET 在 C# 和 VB.NET 中从头开始创建 PDF 文档,需要的可以参考下

通过代码创建 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#

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();
        }
    }
}

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())
            '创建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

效果图

到此这篇关于C#/VB.NET创建PDF文档的示例代码的文章就介绍到这了,更多相关C#创建PDF内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#线程启动的几种实现方法小结

    C#线程启动的几种实现方法小结

    在C#中创建新线程执行代码的几种方法,包括Thread、Task、ThreadPool等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-07-07
  • C#中Array与ArrayList用法及转换的方法

    C#中Array与ArrayList用法及转换的方法

    C#中Array与ArrayList用法及转换的方法,需要的朋友可以参考一下
    2013-03-03
  • C#中感叹号(!) 的作用总结

    C#中感叹号(!) 的作用总结

    这篇文章主要给大家总结介绍了C#中感叹号(!) 的作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • C#如何在自定义事件里传递自定义数据

    C#如何在自定义事件里传递自定义数据

    相信很多小伙伴都知道传值的一些方式,比如构造方法传值,属性传值等,这篇文章主要来给大家分享的另一种方式,通过自定义事件来传值,感兴趣的可以了解下
    2024-12-12
  • C# Socket的TCP通讯的实例代码

    C# Socket的TCP通讯的实例代码

    本篇文章主要介绍了C# Socket的TCP通讯,socket通讯方式有两种:同步和异步,详细的介绍了这两种方法,有兴趣的可以了解一下。
    2016-12-12
  • C#实现从Word文档和各种Word元素中自动提取文本

    C#实现从Word文档和各种Word元素中自动提取文本

    手动提取文本既费时又容易出错,尤其是在处理较长或复杂的Word文档时,这篇文章将探讨如何使用C# 从Word文档中提取文本,我们将涵盖不同方面的内容,希望对大家有所帮助
    2025-11-11
  • C#中使用OpenCV的常用函数的常用示例

    C#中使用OpenCV的常用函数的常用示例

    这篇文章主要介绍了C#中使用OpenCV的常用函数的常用示例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 在C# WinForm项目中跨.cs文件传值的六种常用方案

    在C# WinForm项目中跨.cs文件传值的六种常用方案

    你想知道在 C# WinForm 项目中,不同.cs 文件之间传递数据 的通用处理方法,我会结合串口调试工具的场景,讲解 6 种常用方案(从简单到规范),并说明每种方案的适用场景、优缺点和具体实现,需要的朋友可以参考下
    2026-01-01
  • C#实现多个计时器记录不同定时时间

    C#实现多个计时器记录不同定时时间

    这篇文章主要为大家详细介绍了C#实现多个计时器记录不同定时时间,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • C#程序调用cmd.exe执行命令

    C#程序调用cmd.exe执行命令

    这篇文章介绍了C#程序调用cmd.exe执行命令的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03

最新评论