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

devtools/2024/9/25 7:24:13/

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

文章目录

    • 用Python读取文本文件并转换为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实现文本转PDF

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

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


http://www.ppmy.cn/devtools/23625.html

相关文章

Oracle 数据迁移同步优化(三)

简述 CloudCanal 最近再次对其 Oracle 源端数据同步进行了一系列优化,这些优化基于用户在真实场景中的反馈,具备很强的生产级别参考意义。 本文将简要介绍这些优化项,希望带给读者一些收获。 增量事件 SCN 乱序问题MISSING_SCN 事件干扰新…

【ARMv9 DSU-120 系列 9 -- DSU-120 Debug block】

请阅读【Arm DynamIQ™ Shared Unit-120 专栏 】 请阅读【ARM Coresight SoC-400/SoC-600 专栏导读】 文章目录 ARM DSU-120 Debug BlockCluster debug componentsCache DebugDSU-120 Cache Debug 特性应用场景Terminology处理元素(PE)

JAVA实现easyExcel下载压缩包

添加pom依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version> </dependency> <dependency><groupId>org.apache.ant</groupId><artifactId>…

C#上位机与S7-200Smart通信注意事项

S7-200SMART连接 问题描述 我们使用C#开发上位机和S7-200Smart系列PLC交互数据时&#xff0c;大多会用到Sharp7、Snap7之类的通信类库。有些通信类库默认的使用的是PG连接资源&#xff0c;而对于S7-200Smart来说&#xff0c;它的PG连接资源只有1个。 官网200smart提到的连接数…

leetcode1143. 最长公共子序列(ACM模式解法)

题目描述 给你一个序列X和另一个序列Z&#xff0c;当Z中的所有元素都在X中存在&#xff0c;并且在X中的下标顺序是严格递增的&#xff0c;那么就把Z叫做X的子序列。 例如&#xff1a;Z是序列X的一个子序列&#xff0c;Z中的元素在X中的下标序列为<1,2,4,6>。 现给你两个…

Aigtek:介电弹性体高压放大器在软体机器人研究中的应用

近年来软体机器人的研究成为目前机器人研究领域的热点&#xff0c;由于软体材料的自由度可以根据需求自由变化&#xff0c;因此软体机器人有着极高的灵活性&#xff0c;而且软体机器人因其材料的柔软性有着很好的人机交互性能和安全性。它的出现成功解决了传统的刚性机器人人机…

Java 设计模式(行为型)

文章目录 策略模式迭代器模式访问者模式观察者模式命令模式模板方法模式事件驱动模式责任链模式中介者模式状态模式 策略模式 策略模式是一种行为设计模式&#xff0c;它定义了一系列算法&#xff0c;将每个算法封装在独立的策略类中&#xff0c;并使它们可以互相替换。策略模…

第九周学习笔记DAY.1-反射

在计算机学科中&#xff0c;反射是指计算机程序在运行时可以访问、检测和修改它本身状态或行为的一种能力。通过Java的反射机制&#xff0c;程序员可以更深入地控制程序的运行过程&#xff0c;如在程序运行时对用户输入的信息进行验证&#xff0c;还可以逆向控制程序的执行过程…