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# 利用Aspose.Words.dll将 Word 转成PDF

    C# 利用Aspose.Words.dll将 Word 转成PDF

    关于word转成pdf的方法网上有很多。大部分需要借助office 2007及以上版本的组件。安装配置起来比较麻烦。今天偶然得之“Aspose.Words.dll”可以实现
    2013-08-08
  • 解析C#设计模式之单例模式

    解析C#设计模式之单例模式

    这篇文章主要介绍了C#设计模式之单例模式的相关资料,帮助大家更好的理解和学习c# 设计模式的内容,感兴趣的朋友可以了解下
    2020-12-12
  • C#的四种基本数据类型

    C#的四种基本数据类型

    本文主要介绍了C#的四种基本数据类型的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • c# 在windows服务中 使用定时器实例代码

    c# 在windows服务中 使用定时器实例代码

    这篇文章主要介绍了c# 在windows服务中 使用定时器实例代码,有需要的朋友可以参考一下
    2013-12-12
  • C#使用DateTime获取日期和时间的实现

    C#使用DateTime获取日期和时间的实现

    在C#中,DateTime类是用来处理日期和时间的类,它具有许多属性和方法,用于操作和获取日期和时间的不同部分,本文就来介绍一下C#使用DateTime获取,感兴趣的可以了解一下
    2023-11-11
  • 经典实例讲解C#递归算法

    经典实例讲解C#递归算法

    这篇文章主要用实例讲解C#递归算法的概念以及用法,文中代码非常详细,帮助大家更好的参考和学习,感兴趣的朋友可以了解下
    2020-06-06
  • C#中Web.Config加密与解密的方法

    C#中Web.Config加密与解密的方法

    C#中Web.Config加密与解密的方法,需要的朋友可以参考一下
    2013-04-04
  • C# FTP操作类分享

    C# FTP操作类分享

    这篇文章主要为大家分享了C# FTP操作类的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • C#操作串口通信协议Modbus的常用方法介绍

    C#操作串口通信协议Modbus的常用方法介绍

    这篇文章介绍了C#操作串口通信协议Modbus的常用方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 简介C#读取XML的两种方式

    简介C#读取XML的两种方式

    在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,使用DOM的好处在于它允许编辑和更新XML文档,可以随机访问文档中的数据,可以使用XPath查询
    2013-03-03

最新评论