当前位置: 代码网 > it编程>前端脚本>Python > 使用Python将.py文件转换为PDF并实现语法高亮

使用Python将.py文件转换为PDF并实现语法高亮

2025年12月02日 Python 我要评论
在开发工作中,我们经常需要分享或归档 python 脚本文件。.py文件虽然在编辑器中可读性强,但直接发送给他人时,缺乏格式统一、排版美观,且打印体验不佳。尤其是在技术文档、培训资料或项目报告中,将代

在开发工作中,我们经常需要分享或归档 python 脚本文件。.py 文件虽然在编辑器中可读性强,但直接发送给他人时,缺乏格式统一、排版美观,且打印体验不佳。尤其是在技术文档、培训资料或项目报告中,将代码转换为 pdf 不仅便于阅读,也能保证跨平台展示效果一致。

python 生态中有多种方式可以实现代码转 pdf,而 free spire.doc for python 提供了稳定、易用的方案。本文将介绍两种常见的实现方法:普通文本方式带语法高亮的 html 插入方式,并详细分析两者的差异与使用场景。

1. 使用 spire.doc 将 python 代码按行写入 pdf

最简单的方法是将 .py 文件逐行读取,并将每一行以固定字体插入到 pdf 中。这种方式适合不需要语法高亮,只希望保留原始代码排版的场景。

from spire.doc import document, fileformat, breaktype, color, linespacingrule, linenumberingrestartmode

# 读取 python 文件
with open("python.py", "r", encoding="utf-8") as f:
    python_code = f.read()

# 创建文档对象
doc = document()
section = doc.addsection()
paragraph = section.addparagraph()

# 逐行添加代码
for line_number, line in enumerate(python_code.split("\n")):
    tr = paragraph.appendtext(line)
    tr.characterformat.fontname = "courier new"  # 设置等宽字体
    tr.characterformat.fontsize = 10.5
    if line_number < len(python_code.split("\n")) - 1:
        paragraph.appendbreak(breaktype.linebreak)

# 可选格式设置
paragraph.format.backcolor = color.get_whitesmoke()  # 背景色
paragraph.format.linespacingrule = linespacingrule.multiple
paragraph.format.linespacing = 14.0

# 行号设置
section.pagesetup.linenumberingstartvalue = 1
section.pagesetup.linenumberingstep = 1
section.pagesetup.linenumberingrestartmode = linenumberingrestartmode.restartpage
section.pagesetup.linenumberingdistancefromtext = 12.0

# 保存为 pdf
doc.savetofile("output/python-pdf.pdf", fileformat.pdf)

转换结果:

说明与优化点

  • 字体选择:使用等宽字体(如 courier new)保证代码对齐整齐。
  • 行间距:设置多倍行距可提高可读性。
  • 背景色与行号:轻微灰色背景搭配行号,更适合打印或阅读。

这种方式的优势在于实现简单,代码结构完全保留,兼容性高,但缺点是无法提供语法高亮效果,对于较长或复杂代码可读性稍差。

2. 使用 pygments 生成带语法高亮的 pdf

如果希望 pdf 中的代码带颜色区分关键字、注释、字符串等,可以先使用 pygments 将 python 代码转换为 html,再通过 spire.doc 将 html 插入 pdf。

from spire.doc import document, fileformat
from pygments import highlight
from pygments.lexers import pythonlexer
from pygments.formatters import htmlformatter

def py_to_inline_html(py_file_path):
    with open(py_file_path, "r", encoding="utf-8") as f:
        code = f.read()
    # 生成行内 html,带行号
    formatter = htmlformatter(noclasses=true, linenostart=1, linenos='inline')
    return highlight(code, pythonlexer(), formatter)

html_result = py_to_inline_html("python.py")

doc = document()
section = doc.addsection()
paragraph = section.addparagraph()
paragraph.appendhtml(html_result)

# 保存带高亮的 pdf
doc.savetofile("output/python-pdf-highlighted.pdf", fileformat.pdf)

转换结果:

关键说明

  • htmlformatter(noclasses=true, linenos='inline'):生成内联样式 html,并带行号。
  • appendhtml 方法可以直接将 html 内容插入到 pdf,保留语法高亮效果。
  • 使用这种方法生成的 pdf 更美观,适合演示文档、教程或培训资料。

3. 两种方法的对比与使用建议

特性按行插入文本html 语法高亮插入
复杂度简单中等,需要 pygments
可读性一般高,关键字、注释颜色区分明显
打印效果普通良好,但颜色需打印机支持
适用场景快速生成、代码归档教学文档、演示、报告

总结来看,如果对语法高亮要求不高,按行插入文本即可;如果希望 pdf 更美观、可读性高,html 高亮方式更合适。

4. 扩展说明

  • 合并重复操作:在按行插入的方式中,背景色、行距、字体等可封装为函数,避免重复设置,提高代码复用性。
  • 代码排版与打印:pdf 是固定排版格式的文档,将 python 代码导出后可确保不同环境中显示一致,避免字体或缩进混乱。
  • 批量处理:可将以上方法封装为函数,循环处理多个 .py 文件,实现批量生成 pdf,适合团队协作或项目文档归档。

总结

本文介绍了两种将 python 脚本转换为 pdf 的方法:一种是按行插入文本,另一种是通过 html 生成语法高亮效果。前者简单高效,适合快速归档;后者美观专业,适合文档和演示场景。通过掌握 spire.doc 的 appendtext 和 appendhtml 方法,以及 pygments 的 html 转换能力,可以轻松生成结构清晰、可读性强的 python pdf 文档。

无论是个人笔记整理、项目文档归档,还是教学演示,这两种方法都能满足不同需求,提高代码分享和管理的效率,同时保留排版美观性。

以上就是使用python将.py文件转换为pdf并实现语法高亮的详细内容,更多关于python.py文件转pdf并高亮的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com