# 拼接特殊字符\n,满足换行时字符串无法匹配的情况 search_texts = [f'{search_text[:i]}\n{search_text[i:]}' for i in range(1, len(search_text))] search_texts.insert(0, search_text) if not output_path: output_path = f'{os.path.splitext(pdf_path)[0]}_注释{os.path.splitext(pdf_path)[1]}' # 打开 PDF 文件 pdf_document = fitz.open(pdf_path) for page_number in range(pdf_document.page_count): page = pdf_document[page_number] # 在页面上搜索文本 for text in search_texts: text_instances = page.search_for(text) # 在找到的文本下划线 for inst in text_instances: # 添加下划线时可以适当增加bottom的值,避免线条贴着文字显示 inst[3] += 5 page.add_underline_annot(inst) # 文本下划线 # page.add_highlight_annot(inst) # 文本高亮 # 保存修改后的 PDF pdf_document.save(output_path) pdf_document.close() f_p = r"C:\Users\abc\Desktop\合同.pdf" pdf_underline_text(f_p, '测试文档')