背景故事:为了满(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. 支持了为不同关键字设置不同颜色