吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1216|回复: 1
收起左侧

[Python 原创] pdf关键词highlight

[复制链接]
dlwjmcf 发表于 2023-5-22 12:15
本帖最后由 dlwjmcf 于 2023-5-22 12:18 编辑

起个名字:没想过,就叫“一键Highlight PDF 关键词”吧!
背景故事:为了满(ying)足(fu)第三方审计要求,他们的参考文献需要Highlight以体现阅读了文章,所以搞了个一键Hightlight关键字
开发出来的新玩法:筛选大会pdf版日程的时候,先用这个脚本跑一遍,Highlight出关键字,然后点开注释栏,只看Highlight的东西就好了



主要是用到fitz库处理pdf,功能比较简单,做一个解决日常工作中问题的小工具也无妨。

[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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[i],names[i])                                # highlight
          print ("第{0}篇Highlight完成".format(i+1))
 
 
if __name__ == '__main__':
     main()


运行效果:
image.png

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

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xiaoxiaohuy 发表于 2023-5-27 21:39
学习了解
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-5-23 17:20

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表