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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • unity 实现摄像机绕某点旋转一周

    unity 实现摄像机绕某点旋转一周

    这篇文章主要介绍了unity 实现摄像机绕某点旋转一周,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • C#多线程与异步的区别详解

    C#多线程与异步的区别详解

    多线程和异步操作两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。甚至有些时候我们就认为多线程和异步操作是等同的概念。但是,多线程和异步操作还是有一些区别的。而这些区别造成了使用多线程和异步操作的时机的区别
    2017-06-06
  • Unity工具类之生成文本验证码

    Unity工具类之生成文本验证码

    这篇文章主要为大家详细介绍了Unity工具类之生成文本验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • c#线程间传递参数详解

    c#线程间传递参数详解

    本篇文章主要是对c#中的线程间传递参数进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • C#将指定目录所有文件名转换成小写的方法

    C#将指定目录所有文件名转换成小写的方法

    这篇文章主要介绍了C#将指定目录所有文件名转换成小写的方法,涉及C#中目录的遍历及filename.ToLowerInvariant方法的使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • unity通过Mesh网格绘制图形球体

    unity通过Mesh网格绘制图形球体

    这篇文章主要为大家详细介绍了unity通过Mesh网格绘制图形球体,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • C#读取文件所有行到数组的方法

    C#读取文件所有行到数组的方法

    这篇文章主要介绍了C#读取文件所有行到数组的方法,涉及C#针对文件及数组的相关操作技巧,需要的朋友可以参考下
    2015-07-07
  • C#数据类型实现背包、队列和栈

    C#数据类型实现背包、队列和栈

    本文详细讲解了C#数据结构类型,并实现背包、队列和栈的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#常用正则验证函数示例

    C#常用正则验证函数示例

    这篇文章主要介绍了C#常用正则验证函数,举例分析了C#针对IP验证、价格验证及正整数验证的相关操作技巧,需要的朋友可以参考下
    2017-01-01
  • C#调用Polly库实现捕捉异常处理的操作代码

    C#调用Polly库实现捕捉异常处理的操作代码

    Polly 是一个 .NET 弹性和瞬态故障处理库,允许开发人员以 Fluent 和线程安全的方式来实现重试、断路、超时、隔离和回退策略,本文给大家介绍了C#调用Polly库实现捕捉异常处理操作,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2024-08-08

最新评论