赞
踩
【第三方库】3个
【Py版本】3.9
【使用前提】关闭所有的word文档
- import os
- from datetime import datetime
- from docx2pdf import convert
- from pdf2docx import parse
- from PyPDF2 import PdfMerger
- from PyPDF2 import PdfReader,PdfWriter
-
-
- #将文件夹中的所有Word文档批量转换为PDF
- def wordtopdf(url):
- if not os.path.exists(url):
- return False
- result=convert(url)#若满足条件"result==None"则表明转换成功
- return result==None
-
- #将文件夹中的所有PDF批量转换为Word文档
- def pdftoword(url):
- if not os.path.exists(url):
- return False
- all_files_successful = True # 假设所有文件都成功转换
- for root, dirs, files in os.walk(url):
- for file in files:
- if file.endswith(".pdf"):
- pdf_file_path = os.path.join(root, file)
- result = parse(pdf_file_path)
- if result is not None: # 转换失败
- all_files_successful = False
- break # 如果有一个文件转换失败,就跳出内层循环
- return all_files_successful
-
- #合并指定路径的pdf文档(顺序:01 02 03开头文件名依次排序)
- def mergepdf(url):
- if not os.path.exists(url):
- return False
- merger = PdfMerger()
- output_path=url+f"\\合并pdf_{datetime.now().strftime('%Y%m%d%H%M%S')}.pdf"#输出路径
- # 遍历文件夹下的所有PDF文件并合并
- for root, dirs, files in os.walk(url):
- for file in files:
- if file.endswith(".pdf"):
- pdf_file_path = os.path.join(root, file)
- merger.append(pdf_file_path)
- # 将合并后的PDF保存到指定输出路径
- merger.write(output_path)
- merger.close()
- return True
-
- #提取pdf的图像
- def pdfimages(pdfurl):
- if not os.path.exists(pdfurl):
- return False
- reader = PdfReader(pdfurl)
- all = len(reader.pages) #返回pdf有多少页
- count = 0
- for i in range(0,all):
- page = reader.pages[i]
- for image_file_object in page.images:
- with open(f"{os.path.dirname(pdfurl)}/图{count+1}_{datetime.now().strftime('%Y%m%d%H%M%S')}.png", "wb") as fp:
- fp.write(image_file_object.data)
- count += 1
- return True
-
- # 在PDF文件中加水印函数
- def pdfcreatewater(pdfurl, pdf_watermark):
- if not os.path.exists(pdfurl) or not os.path.exists(pdf_watermark):
- return False
- # 把水印的文件读入
- watermark = PdfReader(pdf_watermark)
- # 取出水印文件的第1页
- waterpage = watermark.pages[0]
- # 读入要加入水印的PDF文件
- vreader = PdfReader(pdfurl)
- # 取得要加入水印的文件的页数
- n = len(vreader.pages)
- # print(n)
- # 生成一个PDF文件写对象
- vwriter = PdfWriter()
- # 通过循环给第一页加上水印
- for i in range(n):
- # 取得PDF文件的一页
- onepage = vreader.pages[i]
- # 通过mergePage将水印加到该页面
- onepage.merge_page(waterpage)
- # 在写对象中加入一页
- vwriter.add_page(onepage)
- # 打开最终形成的包含水印的文件
- with open(f"{os.path.dirname(pdfurl)}/合成水印_{datetime.now().strftime('%Y%m%d%H%M%S')}.pdf", 'wb') as f:
- # 通过写对象写到文件中
- vwriter.write(f)
- return True
第一步,打开word,按以下步骤添加水印
二、若水印不够多,则双击页眉,可以拖拽水印
【注意】水印背景是透明的不准出现白色,若有覆盖情况请检查水印文件
【效果】
按顺序命名即可,例如"01xxx","02xxx","03xxxx"…………
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。