乐于分享
好东西不私藏

关于 X 昕 PDF 编辑器 处理 200 M 文件、删几页就直接报错崩溃这件事

关于 X 昕 PDF 编辑器 处理 200 M 文件、删几页就直接报错崩溃这件事

问题表现

py 脚本处理

import fitz
import os

def redact_top_header(pdf_path, output_path):
"""
    指定区域擦除,针对于PDF编辑工具无法识别 xx机构添加页眉页脚广告等区域的情况
    "
""
    try:
        doc = fitz.open(pdf_path)
        rect = fitz.Rect(0, 0, 595, 69)  # 指定区域

for page in doc:
# 加擦除框
            page.add_redact_annot(rect, fill=(1, 1, 1))
# 每页应用,这是 1.24.1 正确用法
            page.apply_redactions()
print(f"✅ 处理中:{page}")

        doc.save(output_path, garbage=3, deflate=True)
        doc.close()
print(f"✅ 处理完成:{os.path.basename(pdf_path)}")

    except Exception as e:
print(f"❌ 失败:{pdf_path},原因:{e}")

def batch_process_pdfs(input_dir, output_dir):
    os.makedirs(output_dir, exist_ok=True)
for fname in os.listdir(input_dir):
if fname.lower().endswith(".pdf"):
            in_path = os.path.join(input_dir, fname)
            out_path = os.path.join(output_dir, fname)
            redact_top_header(in_path, out_path)
print("🎉 全部批量处理完成!")



def delete_pdf_pages(pdf_path, output_path, delete_pages):
"""
    指定页码删除,针对于 PDF 编辑器编辑较大 PDF崩溃问题,某昕,做出来的产品【lj】,曾经接触过的贵司离职员工更【lj】(整天把自己大厂出来的挂嘴边,🤣🤣🤣 <大厂>)
    "
""
    try:
        doc = fitz.open(pdf_path)
# 转换为 0开始的页码,倒序删除
        delete_pages_0 = [p - 1 for p in delete_pages if 1 <= p <= doc.page_count]
        delete_pages_0.sort(reverse=True)

for page_num in delete_pages_0:
            doc.delete_page(page_num)

        doc.save(output_path)
        doc.close()
print(f"✅ 删页完成:{os.path.basename(pdf_path)}")
    except Exception as e:
print(f"❌ 删页失败 {pdf_path}:{str(e)}")


def batch_delete_pages(input_dir, output_dir, delete_pages):
    os.makedirs(output_dir, exist_ok=True)
for fname in os.listdir(input_dir):
if fname.lower().endswith(".pdf"):
            in_path = os.path.join(input_dir, fname)
            out_path = os.path.join(output_dir, fname)
            delete_pdf_pages(in_path, out_path, delete_pages)






DELETE_PAGES = [1, 2]  # 要删除的页码
INPUT_FOLDER = r"D:\test"
OUTPUT_FOLDER = r"D:\test1"
# ==============================================================

if __name__ == "__main__":
    batch_process_pdfs(INPUT_FOLDER, OUTPUT_FOLDER)

# batch_delete_pages(INPUT_FOLDER, OUTPUT_FOLDER, DELETE_PAGES)

总结

  • 自悟。

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 关于 X 昕 PDF 编辑器 处理 200 M 文件、删几页就直接报错崩溃这件事

猜你喜欢

  • 暂无文章