PDF 清除文档信息
使用说明
程序自动扫描当前路径下的 pdf 文档,判断文档信息是否需要清除
-
清除前
-
清除后
自定义配置
- 新建 config.ini 文件
[global]
NanjingAuthor = ' '
NanjingProducer = ' '
NanjingCreator = ' '
查看日志
- 日志路径:.\log
源码
开源地址: https://github.com/ChenDudo/PDFCleaner
# !/usr/bin/env python3
# -*-coding:utf-8 -*-
# @Author : Chen Do
import configparser
from PyPDF2 import PdfFileReader
from PyPDF2 import PdfWriter
import os
import time
import sys
import io
import datetime
global NanjingAuthor
global NanjingProducer
global NanjingCreator
NanjingAuthor = "Firmware Development Group"
NanjingProducer = "MindMotion Nanjing Ecosystem"
NanjingCreator = "Chen Do"
global handle_num
output_file = []
handle_num = 0
def create_detail_day():
# day_time = datetime.datetime.now().strftime('day'+'%Y_%m_%d')
# hour_time = datetime.datetime.now().strftime('time' + "%H_%M_%S")
detail_time = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
return detail_time
class Logger(object):
def __init__(self, filename="Default.log", path=".\\"):
# sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
self.terminal = sys.stdout
self.log = open(os.path.join(path, filename), "a", encoding='utf8')
def write(self, message):
self.terminal.write(message)
self.log.write(message)
def flush(self):
pass
def handle_doc(outputfilepath, filepath, filename):
global handle_num
global NanjingAuthor
global NanjingProducer
global NanjingCreator
readfilepath = filepath + '\\' + filename
outputfilepath = outputfilepath + '\\' + filename
if not filename.endswith('.pdf'):
print("[ERROR]\t\""+filename+'\" is not *.Pdf files!')
return
# reader & writer
reader = PdfFileReader(readfilepath)
writer = PdfWriter()
# read meta
meta = reader.metadata
l_creation_data_raw = str(meta.creation_date_raw)
l_modification_date_raw = str(meta.modification_date_raw)
if (meta.producer == NanjingProducer) and (meta.author == NanjingAuthor) and (meta.creator == NanjingCreator):
print("[WARN]\t\""+filename+'\" needn\'t to change!')
return
# Add all pages to the writer
for page in reader.pages:
writer.add_page(page)
# Add the metadata
writer.add_metadata(
{
"/Author": NanjingAuthor,
"/Creator": NanjingCreator,
"/Producer": NanjingProducer,
"/CreationDate": l_creation_data_raw,
"/ModDate": l_modification_date_raw
}
)
# Save the new PDF to a file
with open(outputfilepath, "wb") as f:
writer.write(f)
print('[INFO]\t'+'\"'+filename+"\" Done! "+'*'*36)
# decoder handle number
handle_num = handle_num + 1
output_file.append(outputfilepath)
''' (config.ini) file module:
[global]
NanjingAuthor = 'Firmware Development Group'
NanjingProducer = 'MindMotion Nanjing Ecosystem'
NanjingCreator = 'Chen Do'
'''
def read_config_file(filepath):
global NanjingAuthor
global NanjingProducer
global NanjingCreator
conf_file = filepath + "\\config.ini"
conf = configparser.ConfigParser()
if os.path.exists(conf_file):
conf.read(conf_file)
if not "global" in conf:
print("[WARN]\tNo global section in config file")
pass
else:
if 'NanjingAuthor' in conf['global']:
NanjingAuthor = eval(conf.get("global", "NanjingAuthor"))
if 'NanjingProducer' in conf["global"]:
NanjingProducer = eval(conf.get("global", "NanjingProducer"))
if 'NanjingCreator' in conf["global"]:
NanjingCreator = eval(conf.get("global", "NanjingCreator"))
else:
print("[ERROR]\tNo Config files, Use default config")
# NanjingAuthor = "Firmware Development Group"
# NanjingProducer = "MindMotion Nanjing Ecosystem"
# NanjingCreator = "Chen Do"
print("[info]\tNow Use following Config :")
print("\t[Author]: " + NanjingAuthor)
print("\t[Producer]: " + NanjingProducer)
print("\t[Creator]: " + NanjingCreator)
- 下载链接