Python 轻松生成PDF文档

这篇具有很好参考价值的文章主要介绍了Python 轻松生成PDF文档。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PDF(Portable Document Format)是一种常用的文档格式,具有跨平台兼容性、保真性、安全性和交互性等特点。我们日常生活工作中的合同、报告、论文等通常都采用PDF格式,以确保文档在不同的操作系统(例如 Windows、Mac、Linux)和设备上被查看时都能保持外观的一致性。

Python是一种高效简洁的编程语言,使用Python来处理PDF文档是实现办公自动化、提高办公效率的方法之一。本文将介绍PDF最基本操作之: 使用Python创建PDF文档,并插入图片

 

安装 Python 库

本文中会用到国产Spire.PDF for Python库. 该第三方Python库完全独立,可兼容大部分国产操作系统。能在 Python中实现创建、读取、编辑、转换和保存 PDF 等操作。

产品安装pip命令:

pip install Spire.PDF

 

也可以下载 Spire.PDF for Python解压缩后再进行安装。点击了解详细安装教程: 如何在 VS Code 中安装 Spire.PDF for Python

 

使用Python生成PDF文档、并插入图片

Spire.PDF for Python 支持在 PDF 文档中添加文本、图片、形状、链接和表单字段等各种元素。下面仅举例说明如何创建一个包含文字和图片的简单 PDF 文档。

基本步骤:

  • 创建一个 PdfDocument 对象。
  • 使用 PdfDocument.Pages.Add() 方法添加指定大小和页边距的页面。
  • 创建笔刷、字体并设置文本对齐方式。
  • 使用 PdfPageBase.Canvas.DrawString() 方法在页面指定坐标处绘制字符串。
  • 读取包含文档段落内容的TXT文件,然后创建一个 PdfTextWidget 对象来保存读取的段落内容。(PdfTextWidget 类代表一个可跨越多个页面的文本区域)
  • 使用 PdfTextWidget.Draw() 方法在页面指定位置绘制段落内容。
  • 加载图片并指定其大小。然后使用 PdfPageBase.Canvas.DrawImage() 方法在页面指定位置绘制图像。
  • 使用 PdfDocument.SaveToFile() 方法保存结果文档。

 

完整代码:

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

def ReadFromTxt(fname: str) -> str:
    with open(fname, 'r', encoding='utf-8') as f:
        text = f.read()
    return text

# 创建PdfDocument对象
pdf = PdfDocument()

# 添加一页
page = pdf.Pages.Add(PdfPageSize.A4(), PdfMargins(20.0, 20.0))

# 指定标题文本
titleText = "信息化的概念"

# 创建纯色笔刷
titleBrush = PdfSolidBrush(PdfRGBColor(Color.get_MediumBlue()))
paraBrush = PdfSolidBrush(PdfRGBColor(Color.get_Black()))

# 创建 true type 字体
titleFont = PdfTrueTypeFont("微软雅黑", 15.0, PdfFontStyle.Bold, True)
paraFont = PdfTrueTypeFont("宋体", 11.0, PdfFontStyle.Regular, True)

# 设置文本对齐方式
textAlignment = PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle)

# 在页面中央绘制标题
page.Canvas.DrawString(titleText, titleFont, titleBrush, page.Canvas.ClientSize.Width / 2, 35.0, textAlignment)

# 从TXT文件中获取段落内容
paraText = ReadFromTxt("内容.txt")

# 创建一个 PdfTextWidget 对象,用于保存段落内容
textWidget = PdfTextWidget(paraText, paraFont, paraBrush)

# 指定一个矩形区域来放置段落内容
rect = RectangleF(PointF(0.0, 52.0), page.Canvas.ClientSize)

# 将PdfLayoutType设置为Paginate以使内容自动分页
textLayout = PdfTextLayout()
textLayout.Layout = PdfLayoutType.Paginate

# 将段落内容绘制到页面上
textWidget.Draw(page, rect, textLayout)

# 加载一张图片
image = PdfImage.FromFile("插图.png")

# 指定图片尺寸
width = image.Width * 0.75
height = image.Height * 0.75

# 在页面指定位置绘制图像
x = (page.Canvas.ClientSize.Width - width) / 2
y = 220.0
page.Canvas.DrawImage(image, x, y, width, height)

# 保存结果文件
pdf.SaveToFile("生成PDF.pdf")

 

运行结果:

Python 轻松生成PDF文档

 


了解Spire.PDF for Python的更多功能:https://www.e-iceblue.cn/pdfforpython/spire-pdf-for-python-program-guide-content.html

水印可申请免费试用授权来移除:https://www.e-iceblue.cn/misc/temporary-license.html文章来源地址https://www.toymoban.com/news/detail-711294.html

到了这里,关于Python 轻松生成PDF文档的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • QT生成Word PDF文档

    QT生成Word PDF文档

    需求:将软件处理的结果保存为一个报告文档,文档中包含表格、图片、文字,格式为word的.doc和.pdf。生成word是为了便于用户编辑。 开发环境:qt4.8.4+vs2010 在qt的官网上对于pdf的操作介绍如下:http://qt-project.org/wiki/Handling_PDF 。即通过QPrinter类来创建pdf;还有通过第三方库Po

    2024年02月13日
    浏览(8)
  • 【教程】如何使用Java生成PDF文档?

    在如今数字化时代,越来越多的人使用PDF文档进行信息传递和共享。而使用Java生成PDF文档也成为了一个非常重要的技能,因为Java作为一种通用的编程语言,可以在不同的操作系统和平台上运行。下面,我们将为您介绍如何使用Java生成PDF文档。 PDF文档的生成通常包括两个步骤

    2024年02月02日
    浏览(11)
  • 生成式AI - Knowledge Graph Prompting:一种基于大模型的多文档问答方法

    生成式AI - Knowledge Graph Prompting:一种基于大模型的多文档问答方法

    大型语言模型(LLM)已经彻底改变了自然语言处理(NLP)任务。它们改变了我们与文本数据交互和处理的方式。这些强大的AI模型,如OpenAI的GPT-4,改变了理解、生成人类类似文本的方式,导致各种行业出现了众多突破性应用。 LangChain是一个用于构建基于大型语言模型(如G

    2024年02月20日
    浏览(9)
  • 【PDFBox】PDFBox操作PDF文档之读取指定页面文本内容、读取所有页面文本内容、根据模板文件生成PDF文档

    【PDFBox】PDFBox操作PDF文档之读取指定页面文本内容、读取所有页面文本内容、根据模板文件生成PDF文档

    这篇文章,主要介绍PDFBox操作PDF文档之读取指定页面文本内容、读取所有页面文本内容、根据模板文件生成PDF文档。 目录 一、PDFBox操作文本 1.1、读取所有页面文本内容 1.2、读取指定页面文本内容 1.3、写入文本内容 1.4、替换文本内容 (1)自定义PDTextStripper类 (2)创建Key

    2024年02月16日
    浏览(13)
  • PDF 书签制作和 Word 文档转 PDF 生成书签保留目录超链接的方法

    PDF 书签制作和 Word 文档转 PDF 生成书签保留目录超链接的方法

    根据 PDF 文档创建性质来制作书签 由可编辑文档创建 由不可编辑的图片创建 一、Word 文档目录转 PDF 生成书签 Word自带转换为PDF同时生成目录书签(office 2010 以后均支持) 打开 Word 文档,选择【文件】–【另存为 Adobe PDF】 –【选项】 –【将Word 标题转换为书签(H)】 在已安

    2024年02月04日
    浏览(13)
  • 使用 Qt 生成 Word 和 PDF 文档的详细教程

    使用 Qt 生成 Word 和 PDF 文档的详细教程

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Qt 是一个跨平台的应用程序开发框架,除了用于创建图形界面应用程序外,还可以用来生成 Word 和 PDF 文档。本文

    2024年02月12日
    浏览(10)
  • Java根据word模板生成word文档并转成PDF文件

    Java根据word模板生成word文档并转成PDF文件

    定义完我们的模板之后,我们要将文档保存为xml的格式 生成的xml格式看起来比较乱,没有层次感, 所以需要格式化一下 格式化 基础信息的定义 基础信息的定义只要保证我们转化成的xml文件中的${name}等格式没错误即可 表格的定义 遍历实现,表格的数据填充 在xml文件中我们的

    2024年02月09日
    浏览(17)
  • Python生成十六进制数补零的方法:用format()取代hex()

    Python的hex函数可以将任意整数转换为十六进制数,而且以0x为头。 我在写一个代码需要处理ASCII字符,众所周知ASCII的范围是0~255(十六进制数为0x00~0xFF),我尝试去掉十六进制数最前面的0x,由于hex()返回的类型是字符串,因此加方括号[2:]去掉头两个字符,代码如: 但在后续

    2024年02月11日
    浏览(7)
  • 3D数据导出工具HOOPS Publish:3D数据查看、生成标准PDF或HTML文档!

    3D数据导出工具HOOPS Publish:3D数据查看、生成标准PDF或HTML文档!

    HOOPS中文网 http://techsoft3d.evget.com/ 一、3D导出SDK HOOPS Publish是一款功能强大的SDK,可以创作丰富的工程数据并将模型文件导出为各种行业标准格式,包括PDF、STEP、JT和3MF。HOOPS Publish核心的3D数据模型是经过ISO认证的PRC格式(ISO 14739-1:2014),它为装配树、拓扑和几何、产品制造信息

    2024年02月10日
    浏览(8)
  • 通过Python pypdf库轻松拆分大型PDF文件

    pypdf最早可以追溯到2005年开源发布,最早名称是\\\"pyPdf\\\",中间的P是大写的,是一个纯python库,这个库一直持续到2010年的pyPdf1.13最后一个版本! 开源其实是一件非常吃力不讨好的事情,在没有商业化的手段,以及没有额外费用的支持下,很难一直靠爱发电。 2011到2016年之间,在

    2024年03月16日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包