pdf关键词highlight

查看 38|回复 0
作者:dlwjmcf   
起个名字:没想过,就叫“一键Highlight PDF 关键词”吧!
背景故事:为了满(ying)足(fu)第三方审计要求,他们的参考文献需要Highlight以体现阅读了文章,所以搞了个一键Hightlight关键字
开发出来的新玩法:筛选大会pdf版日程的时候,先用这个脚本跑一遍,Highlight出关键字,然后点开注释栏,只看Highlight的东西就好了
主要是用到fitz库处理pdf,功能比较简单,做一个解决日常工作中问题的小工具也无妨。
[Python] 纯文本查看 复制代码import fitz
import os
data_dir_in = "raw/"                                                        # 输入路径
data_dir_out = "out/"                                                     # 输出路径
# 颜色设置:R/255,G/255,B/255
Red = [1, 0.8, 0.8]
Aqua = [0.5, 1, 1]
Yellow = [1, 0.9, 0.6]
Green = [0.6, 1, 0.6]
# 关键词(不区分大小写,首字母除外)和颜色
keywords = [["asthma",Green],
                        ["IgE",Aqua],
                        ["omalizumab",Red],
                        ["biologic",Yellow]]
# 读取文件列表
def getRawFileList(path):                                                # 获取一个文件夹下的全部文件名
     files = []
     names = []
     for f in os.listdir(path):
         if not f.endswith("~") or not f == "":                # 返回指定的文件夹包含的文件或文件夹的名字的列表
             files.append(os.path.join(path, f))                # 把目录和文件名合成一个路径
             names.append(f)
     return files, names
# highlight
def highlight_pdf(in_path,name):
        doc = fitz.open(in_path)                                        # 打开pdf
        for page in doc:                                                        # 历遍页面
                for i in keywords:                                        # 历遍关键词
                        text_instances = page.searchFor(i[0])                # 查找关键词,生成列表
                        for inst in text_instances:                        # highlight列表
                                highlight = page.addHighlightAnnot(inst)
                                highlight.setColors(stroke=i[1])
                                highlight.update()
        doc.save("out/"+name, garbage=4, deflate=True, clean=True)                # 保存pdf
def main():
     files,names = getRawFileList(data_dir_in)                # 获取文件列表
     count_num=len(files)                                                # 文件计数
     for i in range(0,len(files)):                                                # 历遍文件
          print ("正在Highlight第{0}篇pdf".format(i+1))
          highlight_pdf(files,names)                                # highlight
          print ("第{0}篇Highlight完成".format(i+1))
if __name__ == '__main__':
     main()
运行效果:


image.png (233.93 KB, 下载次数: 0)
下载附件
2023-5-22 12:17 上传

更新记录
V1.0.0. 日期忘记留了
1. 正式上线,满足基本功能
        
V2.0.0. 日期又忘记留了
1. 关键字改为列表,可以同时设置多个关键字
        
V3.0.0. 没错,还是没记日期
1. 支持了为不同关键字设置不同颜色

关键词, 关键字

您需要登录后才可以回帖 登录 | 立即注册