使用 Python 将 TXT 转换为 PDF (自动分页)

12 阅读3分钟

在日常工作中,我们经常需要将纯文本文件(TXT)转换为更通用、更便于分享的PDF格式。虽然手动复制粘贴可以完成这个任务,但遇到大文件时,手动分页和排版就会变得非常繁琐。今天,我将介绍如何使用 Spire.PDF for Python 库,轻松实现TXT到PDF的转换,并支持自动分页功能。

Spire.PDF for Python 简介

Spire.PDF for Python 是一款专业的Python库,用于在Python应用程序中创建、操作和转换PDF文档。它提供了丰富的API,让开发者可以轻松地添加文本、图像、表格等元素到PDF中,并支持各种高级功能如加密、合并、拆分PDF等。最重要的是,它支持自动分页功能,可以处理大量文本内容的排版。

安装非常简单,只需使用pip命令:

pip install Spire.PDF

实现代码

下面是完整的Python代码,实现了从TXT文件读取内容并转换为PDF的功能:

from spire.pdf.common import *
from spire.pdf import *

def ReadFromTxt(fname: str) -> str:
    """读取TXT文件内容"""
    with open(fname, 'r') as f:
        text = f.read()
    return text

inputFile = "input.txt"
outputFile = "TextToPdf.pdf"

# 从TXT文件获取文本
text = ReadFromTxt(inputFile)

# 创建PdfDocument实例
pdf = PdfDocument()

# 添加一个页面 (默认有40磅页边距)
page = pdf.Pages.Add()

# 创建PDF字体和画笔
font = PdfTrueTypeFont("宋体", 12.0, PdfFontStyle.Regular, True)
brush = PdfBrushes.get_Black()

# 设置文本对齐方式和行间距
strformat = PdfStringFormat()
strformat.LineSpacing = 12.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.00.0), page.Canvas.ClientSize)
textWidget.Draw(page, bounds, textLayout)

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

代码解析

1. 文本读取

ReadFromTxt 函数负责读取TXT文件的所有内容,以字符串形式返回。

2. PDF文档创建

创建一个 PdfDocument 实例,并添加一个初始页面。

3. 字体和格式设置

  • 使用 宋体 字体,字号12
  • 设置行间距为12.0
  • 文本对齐方式为两端对齐

4. 自动分页的关键设置

这是实现自动分页的核心部分:

  • PdfLayoutBreakType.FitPage:当内容超出页面范围时自动换页
  • PdfLayoutType.Paginate:启用分页布局模式

5. 使用PdfTextWidget

PdfTextWidget 是一个强大的文本容器,它可以自动处理长文本的分页问题。我们只需要指定初始的绘制区域,它会自动判断是否需要创建新页面来容纳剩余内容。

6. 绘制和保存

在指定位置绘制文本后,将PDF保存到文件。

优势特点

  1. 完全自动化 :无需手动计算每页可容纳的文字数量
  2. 保持格式 :支持设置字体、字号、行间距等格式
  3. 灵活性强 :可以自定义页面边距和起始位置
  4. 处理大文件 :即使是非常长的文本文件也能轻松处理

总结

使用 Spire.PDF for Python 库,我们只需要几十行代码就能实现一个功能完善的TXT转PDF工具。它不仅支持基本的格式设置,更重要的是内置了自动分页功能,大大简化了开发工作。无论是处理简单的笔记文件,还是转换大量的文档资料,这个工具都能胜任。

如果你经常需要处理文本到PDF的转换,不妨试试这个方案,相信它能为你节省不少时间!