• 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() 方法保存结果文档。

    Python代码:

    1. from spire.pdf.common import *
    2. from spire.pdf import *
    3. def ReadFromTxt(fname: str) -> str:
    4. with open(fname, 'r', encoding='utf-8') as f:
    5. text = f.read()
    6. return text
    7. # 创建PdfDocument对象
    8. pdf = PdfDocument()
    9. # 添加一页
    10. page = pdf.Pages.Add(PdfPageSize.A4(), PdfMargins(20.0, 20.0))
    11. # 指定标题文本
    12. titleText = "信息化的概念"
    13. # 创建纯色笔刷
    14. titleBrush = PdfSolidBrush(PdfRGBColor(Color.get_MediumBlue()))
    15. paraBrush = PdfSolidBrush(PdfRGBColor(Color.get_Black()))
    16. # 创建 true type 字体
    17. titleFont = PdfTrueTypeFont("微软雅黑", 15.0, PdfFontStyle.Bold, True)
    18. paraFont = PdfTrueTypeFont("宋体", 11.0, PdfFontStyle.Regular, True)
    19. # 设置文本对齐方式
    20. textAlignment = PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle)
    21. # 在页面中央绘制标题
    22. page.Canvas.DrawString(titleText, titleFont, titleBrush, page.Canvas.ClientSize.Width / 2, 35.0, textAlignment)
    23. # 从TXT文件中获取段落内容
    24. paraText = ReadFromTxt("内容.txt")
    25. # 创建一个 PdfTextWidget 对象,用于保存段落内容
    26. textWidget = PdfTextWidget(paraText, paraFont, paraBrush)
    27. # 指定一个矩形区域来放置段落内容
    28. rect = RectangleF(PointF(0.0, 52.0), page.Canvas.ClientSize)
    29. # 将PdfLayoutType设置为Paginate以使内容自动分页
    30. textLayout = PdfTextLayout()
    31. textLayout.Layout = PdfLayoutType.Paginate
    32. # 将段落内容绘制到页面上
    33. textWidget.Draw(page, rect, textLayout)
    34. # 加载一张图片
    35. image = PdfImage.FromFile("插图.png")
    36. # 指定图片尺寸
    37. width = image.Width * 0.75
    38. height = image.Height * 0.75
    39. # 在页面指定位置绘制图像
    40. x = (page.Canvas.ClientSize.Width - width) / 2
    41. y = 220.0
    42. page.Canvas.DrawImage(image, x, y, width, height)
    43. # 保存结果文件
    44. pdf.SaveToFile("生成PDF文档.pdf")

    生成文档:

    了解Spire.PDF for Python的更多功能:Spire.PDF for Python 中文教程

    申请免费试用授权:申请免费临时授权文件

  • 相关阅读:
    深入探究Selenium定位技巧及最佳实践
    SpringBoot入门知识
    go语言运行命令
    我为什么使用Linux做开发
    【EFK】基于K8S构建EFK+logstash+kafka日志平台
    动态中位数(对顶堆)
    python基于django的同学校友录网站
    RIP路由配置
    VMware虚拟机安装+Ubuntu安装+VMware Tools安装+虚拟机中系统的移动
    抖音矩阵系统,抖音矩阵源码定制。
  • 原文地址:https://blog.csdn.net/Eiceblue/article/details/134078504