You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python的fitz库为PDF证书段落中的指定内容设置加粗

用PyMuPDF(fitz)给PDF段落中的指定内容加粗

你的代码存在API用法错误,比如错误尝试通过insert_text返回值设置字体,这不符合fitz的调用逻辑。下面是修正后的实现方案:

修正后的代码

import fitz

def add_paragraph_to_pdf(input_pdf_path, output_pdf_path, paragraph, bold_words):
    doc = fitz.open(input_pdf_path)
    page = doc[0]
    rect = fitz.Rect(70, 230, 550, 500)
    
    # 初始化文本框,设置基础字体参数
    textbox = page.insert_textbox(rect, "", fontsize=12, fontname="Helvetica")
    current_pos = 0  # 记录当前文本插入的位置
    
    words = paragraph.split()
    for idx, word in enumerate(words):
        # 除第一个单词外,先插入空格分隔
        if idx != 0:
            current_pos = textbox.insert_text(current_pos, " ", fontname="Helvetica", fontsize=12)
        
        # 根据是否为目标词切换字体
        if word in bold_words:
            current_pos = textbox.insert_text(current_pos, word, fontname="Helvetica-Bold", fontsize=12)
        else:
            current_pos = textbox.insert_text(current_pos, word, fontname="Helvetica", fontsize=12)
    
    doc.save(output_pdf_path)
    doc.close()
    print("带加粗内容的段落已成功添加到PDF!")

# 示例调用
if __name__ == "__main__":
    sample_paragraph = "姓名:张三 年龄:25 已完成所有培训课程,特此颁发证书。"
    bold_terms = ["张三", "25"]
    add_paragraph_to_pdf("template.pdf", "certificate.pdf", sample_paragraph, bold_terms)

关键说明

  • insert_textbox初始化时可设置默认字体,后续插入文本时可通过fontname参数临时覆盖
  • textbox.insert_text会返回插入后光标所在的位置,需用该值定位下一段文本的插入点
  • 手动处理单词间的空格,避免文本粘连
  • Helvetica-Bold是PDF标准内置字体,无需额外加载

内容的提问来源于stack exchange,提问作者Sanjay Sujir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 23:02:18