Python转换文本文件为PDF文档,绘制文本到PDF文档页面

文本文件因其轻便、易编辑的优势,常用于日常文字记录与数据交换;而PDF文档则以高保真、格式稳定和良好的阅读体验,成为正式报告、文献发布等场景的首选。将文本文件转为PDF,在PDF内精准绘制文本,旨在兼顾内容的规范呈现与个性化布局,适应不同场合对文档格式的特定要求。本文将将介绍如何使用Python简便快捷地完成TXT文件到PDF文档的转换,满足多样化的文档处理需求。

文章目录

本文所使用的方法需要用到Spire.PDF for Python,PyPI:pip install Spire.PDF

用Python读取文本文件并转换为PDF文档

文本文件到PDF文档的转换可以通过读取文本,并将文本内容绘制在PDF页面上来实现。由于文本文件不储存格式信息,因为,我们可以在绘制时对文本格式进行自定义,使生成的PDF文档更符合我们的需求。

在读取和绘制过程中需要用到的主要类和方法:

  • PdfDocument 类: 代表 PDF 文档模型
  • PdfTextWidget 类: 代表能跨越多个页面的文本区域。
  • PdfDocument.Pages.Add() 方法: 向 PDF 文档添加页面。
  • PdfTextWidget.Draw() 方法: 在页面指定位置绘制文本部件。

以下是将文本文件内容绘制在PDF页面上的操作步骤:

  1. 导入所需模块。
  2. 使用 File.ReadAllText() 方法从 TXT 文件中读取文本。
  3. 创建 PdfDocument 实例并向 PDF 文件添加页面。
  4. 创建 PDF 字体和笔刷对象。
  5. 设置文本格式和布局。
  6. 创建一个 PdfTextWidget 对象来保存文本内容。
  7. 使用 PdfTextWidget.Draw() 方法在PDF页面的指定位置绘制文本部件。
  8. 使用 PdfDocument.SaveToFile() 方法保存 PDF 文件。
  9. 释放资源。

代码示例:

python 复制代码
from spire.pdf.common import *
from spire.pdf import *

inputFile = "G:/文档/示例.txt"
outputFile = "output/文本文件转PDF.pdf"

# 从txt文件中获取文本
with open(inputFile, "r", encoding="utf-8") as f:
    text = f.read()

# 创建PdfDocument实例
pdf = PdfDocument()

# 添加一页
page = pdf.Pages.Add()

# 创建PDF字体和PDF画刷
font = PdfTrueTypeFont("HarmonyOS Sans SC", 12.0, 0, True)
brush = PdfBrushes.get_Brown()

# 设置文本对齐方式和行间距
strformat = PdfStringFormat()
strformat.LineSpacing = 10.0
strformat.Alignment = PdfTextAlignment.Justify

# 设置文本布局
textLayout = PdfTextLayout()
textLayout.Break = PdfLayoutBreakType.FitPage
textLayout.Layout = PdfLayoutType.Paginate

# 创建PdfTextWidget实例来保存文本内容
textWidget = PdfTextWidget(text, font, brush)

# 设置文本格式
textWidget.StringFormat = strformat

# 在页面上指定位置绘制文本
bounds = RectangleF(PointF(0.0, 20.0), page.Canvas.ClientSize)
textWidget.Draw(page, bounds, textLayout)

# 保存结果文件
pdf.SaveToFile(outputFile, FileFormat.PDF)
pdf.Close()

结果文档:

本文介绍了如何使用Python将TXT文本文件转换为PDF文档,通过读取文本内容并将文本内容绘制在新建的PDF文档页面上来实现。

更多PDF文档转换及操作技巧请前往Spire.PDF for Python教程查看。

相关推荐
黑不拉几的小白兔2 分钟前
PTA部分题目C++重练
开发语言·c++·算法
Best_Me072 分钟前
如何在Pycharm的终端里进入自己的环境
ide·python·pycharm
写bug的小屁孩3 分钟前
websocket身份验证
开发语言·网络·c++·qt·websocket·网络协议·qt6.3
材料苦逼不会梦到计算机白富美35 分钟前
线性DP 区间DP C++
开发语言·c++·动态规划
java小吕布37 分钟前
Java Lambda表达式详解:函数式编程的简洁之道
java·开发语言
sukalot41 分钟前
windows C#-查询表达式基础(一)
开发语言·c#
好看资源平台1 小时前
爬虫开发工具与环境搭建——环境配置
爬虫·python
一二小选手1 小时前
【Java Web】分页查询
java·开发语言
大G哥1 小时前
python 数据类型----可变数据类型
linux·服务器·开发语言·前端·python
zhentiya1 小时前
微积分第五版课后习题答案详解PDF电子版 赵树嫄
算法·pdf