如何使用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
相关产品推荐
相关产品推荐

