一个简单的脚本,让pdf开启夜间模式

因为平常我比较喜欢晚上看面试题。 市面上很多的面试题pdf都是白色的晚上看的话非常的刺眼。 所以我本能的去互联网搜索看看有没有pdf转换为夜间模式的。 搜索了一段时间后发现并没有这种东西。于是我自己做了一个转换的python脚本。

python 复制代码
import os
import fitz  # PyMuPDF
from PIL import Image, ImageOps

def convert_pdf_to_night_mode(input_pdf, output_pdf):
    doc = fitz.open(input_pdf)
    images = []

    for page_number in range(len(doc)):
        page = doc.load_page(page_number)
        pix = page.get_pixmap(dpi=150)
        img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
        inverted_img = ImageOps.invert(img)
        images.append(inverted_img.convert("RGB"))

    if images:
        images[0].save(output_pdf, save_all=True, append_images=images[1:])
        print(f"已转换: {os.path.basename(output_pdf)}")


def batch_convert_folder(input_folder, output_folder):
    # 创建输出文件夹(如果不存在)
    os.makedirs(output_folder, exist_ok=True)

    # 遍历所有 PDF 文件
    for filename in os.listdir(input_folder):
        if filename.lower().endswith('.pdf'):
            input_pdf_path = os.path.join(input_folder, filename)
            output_pdf_path = os.path.join(output_folder, filename)
            convert_pdf_to_night_mode(input_pdf_path, output_pdf_path)

    print("所有 PDF 已转换完毕!")



input_folder_path = "input_pdfs"    # 输入文件夹路径
output_folder_path = "night_pdfs"   # 输出文件夹路径

batch_convert_folder(input_folder_path, output_folder_path)

使用的方法也非常的简单。

bash 复制代码
pip install pymupdf pillow

之后运行就可以了。 我们来看效果。 这个是没有转换之前的:

我们来看转换之后的

相关推荐
默默地离开2 分钟前
从0到1掌握React+TypeScript开发:前端工程化实践指南
前端·react.js·typescript
Spider_Man4 分钟前
手指一拉,世界焕新:移动端下拉刷新全攻略
前端·javascript·react.js
恋猫de小郭5 分钟前
Flutter 里的 Layer 解析,带你了解不一样角度下的 Flutter 渲染逻辑
android·前端·flutter
1phoenix6 分钟前
JavaScript 实现自定义右键菜单
前端·javascript·css
迷你二鹏7 分钟前
前端之Git
前端·git
GoGeekBaird13 分钟前
大模型应用的五大拦路虎:一位从业者的深度反思与破局指南
后端·github
洛卡卡了13 分钟前
面试官问我会不会用 AI,我拿出这个 Ollama + FastGPT 项目给他看
人工智能·后端·docker
ifanatic14 分钟前
[每周一更]-(第148期):使用 Go 进行网页抓取:Colly 与 Goquery 的对比与思路
开发语言·后端·golang
二闹21 分钟前
大厂前端研发岗位设计的30道Webpack面试题及解析
前端·面试
拾光拾趣录27 分钟前
实现 `this` 对象的深拷贝:从“循环引用崩溃”到生产级解决方案
前端·javascript