Spire.PDF for .NET【文档操作】演示:创建 PDF 文档

通过代码创建 PDF 文档具有多种优势。例如,您可以轻松合并动态内容,如用户输入、数据库记录或实时数据。基于代码的 PDF 生成允许更大的自定义和自动化,最大限度地减少创建高度定制文档时的手动干预。在本文中,您将学习如何使用Spire.PDF for .NET在 C# 和 VB.NET 中从头创建 PDF 文档。

Spire.PDF for .NET 是一款独立 PDF 控件,用于 .NET 程序中创建、编辑和操作 PDF 文档。使用 Spire.PDF 类库,开发人员可以新建一个 PDF 文档或者对现有的 PDF 文档进行处理,且无需安装 Adobe Acrobat。

E-iceblue 功能类库Spire 系列文档处理组件均由中国本土团队研发,不依赖第三方软件,不受其他国家的技术或法律法规限制,同时适配国产操作系统如中科方德、中标麒麟等,兼容国产文档处理软件 WPS(如 .wps/.et/.dps 等格式

Spire.PDF for.net下载icon-default.png?t=N7T8https://work.weixin.qq.com/ca/cawcde0267a7a4be49  

安装 Spire.PDF for .NET

首先,您需要将 Spire.PDF for.NET 包中包含的 DLL 文件作为引用添加到您的 .NET 项目中。 以通过NuGet安装。

PM> Install-Package Spire.PDF
背景知识

Spire.PDF 中的一个页面(用PdfPageBase表示)由客户区和四周的边距组成。内容区用于用户书写各种内容,边距通常是空白的边缘。

如下图所示,页面上的坐标系原点位于客户区的左上角,x轴向右水平延伸,y轴向下垂直延伸。所有添加到客户区的元素都必须以指定的坐标为基准。

C#/VB.NET:创建 PDF 文档

此外,下表列出了重要的类和方法,可以帮助您轻松理解下一节提供的代码片段。

 成员描述
 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.Drawing;namespace CreatePdfDocument
{
class Program
{
static void Main(string[] args)
{
//Create a PdfDocument object
PdfDocument doc = new PdfDocument();//Add a page
PdfPageBase page = doc.Pages.Add(PdfPageSize.A4, new PdfMargins(35f));//Specify heading text
String titleText = "What is MySQL";//Create solid brushes
PdfSolidBrush titleBrush = new PdfSolidBrush(new PdfRGBColor(Color.Blue));
PdfSolidBrush paraBrush = new PdfSolidBrush(new PdfRGBColor(Color.Black));//Create true type fonts
PdfTrueTypeFont titleFont = new PdfTrueTypeFont(new Font("Times New Roman", 18f, FontStyle.Bold),true);
PdfTrueTypeFont paraFont = new PdfTrueTypeFont(new Font("Times New Roman", 12f, FontStyle.Regular), true);//Set the text alignment via PdfStringFormat class
PdfStringFormat format = new PdfStringFormat();
format.Alignment = PdfTextAlignment.Center;//Draw heading on the center of the page
page.Canvas.DrawString(titleText, titleFont, titleBrush, page.Canvas.ClientSize.Width / 2, 20, format);//Get paragraph content from a .txt file
string paraText = File.ReadAllText("C:\\Users\\Administrator\\Desktop\\content.txt");//Create a PdfTextWidget object to hold the paragrah content
PdfTextWidget widget = new PdfTextWidget(paraText, paraFont, paraBrush);//Create a rectangle where the paragraph content will be placed
RectangleF rect = new RectangleF(0, 50, page.Canvas.ClientSize.Width, page.Canvas.ClientSize.Height);//Set the PdfLayoutType to Paginate to make the content paginated automatically
PdfTextLayout layout = new PdfTextLayout();
layout.Layout = PdfLayoutType.Paginate;//Draw the widget on the page
widget.Draw(page, rect, layout);//Save to file
doc.SaveToFile("CreatePdfDocument.pdf");
doc.Dispose();
}
}
}

【VB.NET】

Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.DrawingNamespace CreatePdfDocument
Class Program
Shared Sub Main(ByVal args() As String)
'Create a PdfDocument object
Dim doc As PdfDocument = New PdfDocument()'Add a page
Dim page As PdfPageBase = doc.Pages.Add(PdfPageSize.A4,New PdfMargins(35f))'Specify heading text
Dim titleText As String = "What is MySQL"'Create solid brushes
Dim titleBrush As PdfSolidBrush = New PdfSolidBrush(New PdfRGBColor(Color.Blue))
Dim paraBrush As PdfSolidBrush = New PdfSolidBrush(New PdfRGBColor(Color.Black))'Create true type fonts
Dim titleFont As PdfTrueTypeFont = New PdfTrueTypeFont(New Font("Times New Roman",18f,FontStyle.Bold),True)
Dim paraFont As PdfTrueTypeFont = New PdfTrueTypeFont(New Font("Times New Roman",12f,FontStyle.Regular),True)'Set the text alignment via PdfStringFormat class
Dim format As PdfStringFormat = New PdfStringFormat()
format.Alignment = PdfTextAlignment.Center'Draw heading on the center of the page
page.Canvas.DrawString(titleText, titleFont, titleBrush, page.Canvas.ClientSize.Width / 2, 20, format)'Get paragraph content from a .txt file
Dim paraText As String = File.ReadAllText("C:\\Users\\Administrator\\Desktop\\content.txt")'Create a PdfTextWidget object to hold the paragrah content
Dim widget As PdfTextWidget = New PdfTextWidget(paraText,paraFont,paraBrush)'Create a rectangle where the paragraph content will be placed
Dim rect As RectangleF = New RectangleF(0,50,page.Canvas.ClientSize.Width,page.Canvas.ClientSize.Height)'Set the PdfLayoutType to Paginate to make the content paginated automatically
Dim layout As PdfTextLayout = New PdfTextLayout()
lay.Layout = PdfLayoutType.Paginate'Draw the widget on the page
widget.Draw(page, rect, layout)'Save to file
doc.SaveToFile("CreatePdfDocument.pdf")
doc.Dispose()
End Sub
End Class
End Namespace

C#/VB.NET:创建 PDF 文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1523028.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【陪诊系统-PC管理端】axios的二次封装

二次封装axios 引入axios创建axios实例,添加配置信息,这里主要设置基础url和请求超时时间给上述创建的实例添加拦截器,对请求、响应分别进行拦截 根据接口文档显示,当登录成功后,每次请求陪诊师、订单信息都需要携带t…

fastchat与autogen使用要点澄清

说明: 本文重点是想使用autogen构建智能体,并且想要通过加载本地模型来构建,以灵活使用。但是autogen重点是以API调用支持openai, mistral等大模型使用的,对于使用国内的一些模型不是那么友好方便。然后在查找方法的过程中&#x…

一篇常见第三方库之以及详细使用示例教程

作者:郭震 我们介绍了几个常用的 Python 第三方库,包括 NumPy、Pandas、Matplotlib 和 Requests.本篇将通过一些简单的示例来演示如何有效地使用这些库,以帮助小白理解它们的基本用法.通过这些案例,你可以直观感受到这些库在日常编程中的价值. NumPy NumPy 是一个强…

规控面试复盘

目录 前言 一、京东方 1、CPP和C的区别是什么? 2、讲一下的ROS的话题通信 二、Momenta(泊车部门实习面试) 1、MPC的预测时间步是多少? 2、MPC的代价函数考虑的是什么? 三、九识 1、智能指针有哪些优缺点? 优点: 缺点: 2、Protobuf的数据传输效率为什么更高…

【陪诊系统-PC管理端】动态路由

先说说这里为什么要使用动态路由? 因为前面的菜单管理功能模块中,可以创建或修改不同权限,当前登录账号可以绑定不同的权限,不同权限能访问的功能页面不同,所以使用动态路由来控制。 而登录成功后,服务器…

前端报文加密

前端加密功能 前端提供简单的AES对称加密算法,注意key 和后端网关配置相同,这里打包混淆后,相对安全。 (lun-ui\src\store\modules\user.js、base-gateway-dev.yml) 后端解密功能 使用hutool提供的工具类进行解密pub…

【无标题】docker-compose一键部署项目,haproxy容器代理多个web或java容器

# 创建脚本,可以在java环境中运行任何的jar包或者war包#!/bin/bash/usr/local/jdk/bin/java -jar /java/src/*.?ar 一、思路分析: (1)nginx 1、下载镜像,将本地的dist项目的目录挂载在容器的/usr/share/nginx/html/ …

连接型CRM+智能制造,助力医疗器械企业高质量发展

8月29日,由中国医疗器械行业协会智能制造与智慧监管分会主办,纷享销客参与协办的“数字化建设与智能制造助力医疗器械企业高质量发展”研讨会于苏州圆满落幕,国内知名医疗器械企业高层、行业专家及在医疗行业合规前沿的优秀专业人士齐聚一堂&…

【RabbitMQ】基本概念以及安装教程

1. 什么是MQ MQ( Message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是消息(message)而已.消息可以非常简单,比如只包含文本字符串,JSON等,也可以很复杂,比如内嵌对象.MQ多用于分布式系统之间进行通信 系统之间的调用通常有两种方式…

光盘安全隔离与信息单向导入系统-信刻

信刻从用户需求出发,为更多用户提供安全可靠的跨网数据单向导入/导出光盘摆渡系统解决方案,解决内外网数据交换的问题,确保数据交换过程的安全性。 公司所研发出的光盘安全隔离与信息单向导入系统依托软硬件相结合的技术,集策略摆…

mac 安装redis

官网下载指定版本的redis https://redis.io/ 目前3.2.0 是最新最稳定的 版本 这里是历史版本下载 下载指定版本 安装 1.放到自定义目录下并解压 2.打开终端,执行命令 cd redis的安装目录下 make test -- 此命令的作用是将redis源代码编译成可执行文件&#xff0c…

飞思相机存储卡格式化数据如何恢复?提供全面指南

在数字摄影时代,‌飞思相机以其卓越的成像质量和专业的性能,‌赢得了众多摄影师的青睐。‌然而,‌即使是专业的设备也难免遭遇数据丢失的困境,‌尤其是当存储卡不幸被格式化时。‌面对这一突如其来的灾难,‌许多摄影师…

JSON 格式详解

JSON 格式详解 随着互联网的发展和各种 Web 应用程序的普及,数据交换已经成为了我们日常开发中的重要环节。而在各种数据交换格式中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,以其简洁、易于阅…

基于yolov8的106种鲜花识别花朵检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的106种鲜花识别花朵检测系统是一项融合了先进深度学习技术的创新应用。该系统利用YOLOv8算法,这一目前最先进的目标检测模型之一,实现了对106种不同花卉的快速、准确识别。 YOLOv8以其速度快、准确性高和鲁棒性强的特点&#…

IP的SSL证书的申请及配置方式

随着互联网技术的发展,数据安全变得越来越重要。HTTPS协议因其提供的加密传输能力而成为现代Web通信的标准。实现HTTPS的关键组件之一就是SSL/TLS证书,它为网站提供了一层保护,确保客户端与服务器之间的数据传输是加密的。本文将指导您如何为…

xmos 相关知识--- xn文件解析

1.XN 文件解析 type 声明是device name 是名称 tile 资源声明 一个是XCore 一个是 usb 相关的物理层资源 package 对应芯片,包含两个Node 和一个link 两个node ,一个是xcore 一个是USB,每个node 都有一个id号,从0开始 xrun: C…

指针之旅(2)——const修饰词 野指针、空指针与泛型指针

目录 Part one(一) 1. const关键字 1.1 const修饰普通变量 1.1.1 const的作用 1.1.2 指针绕过const 1.2 const修饰指针变量 1.2.1 const在 * 前 1.2.2 const在 * 后 1.2.3 双重const修饰 Part two(二) 1. 野指针 * 野…

Sentence-BERT实现文本匹配【回归目标函数】

引言 上篇文章我们通过Sentence-Bert提出的分类目标函数来训练句子嵌入模型,本文同样基于Sentence-Bert的架构,但改用回归目标函数。 架构 如上图,计算两个句嵌入 u \pmb u u和 v \pmb v v​之间的余弦相似度,然后可以使用均方误…

Webpack详解与配置环境

webpack:webpack网址 1、工作原理: Webpack是一个非常强大的静态模块的打包工具。从文件入口开始,递归解析以来关系,然后将所有模块打包成一个或多个budle文件。 2、webpack核心概念: Entry:入口起点(en…

【STM32+HAL库】---- 通用定时器实现外部脉冲计数

硬件开发板:STM32G0B1RET6 软件平台:cubemaxkeilVScode1 新建cubemax工程 1.1 配置系统时钟RCC 1.2 配置定时器 选择通用定时器TIM2,时钟源选择ETR2,对应的输入端口为PA0引脚,预分频系数为0,重装载值选择…