背景需求:
批量制作20周计划docx后,阿夏想要打印里面的全部内容,手动打印问题多多:
(1)批量打开文档,费事费力:一个文档一个文档打开,选择打印,费事费力。
(2)部份文件缺失漏打:打印过程中,部分文档会没有被打印成功(打印机太忙了,本人亲测每次都有遗漏)。
(3)后续要打印整理:打印机出现的纸张并不一定按照打印顺序,打印纸顺序变乱,后续还要整理
(4)换电脑还需调格式:有时候打印机没有墨水了,阿夏换一台电脑,就发现docx内的格式字体会变化(分辨率不同,部分字体不一定存在),又要画很大精力重新调整docx格式
解题思路:
所以,那么怎样方便快捷、排序式批量打印大量的docx文件内?有一个方便的方法,就是将单个docx文件或者多份docx批量转成一个PDF文件。当文字被固定、数量被圈定在一个PDF内,就可以实现不变形、不遗漏、能排序的结果。
具体样式:
第一步:
在桌面上建立一个“word2pdf2png”的文件夹,并将需要转换的单个docx或多个docx放入
第二步:
第一种:单个docx
运行后:单个docx转成“单个PDF”和“总计PDF”(两者内容相同)
第二种:多个docx
运行后:
1.每个docx先转成自己的“单个PDF”
2.“word转PDF并合并.PDF”包含了第4周、第5周、第6周 三周内容。(PDF合并后,如果第一份docx内容最后一页只有三行,那么第二分docx内容会直接出现在第四行,所以每个docx要合并,最好都最后一页都设置分页符)
编程代码
'''
阿优乐扬于 2020-08-28 17:48:16 发布
https://blog.csdn.net/ayouleyang/article/details/108283956?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164656378516780269895814%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164656378516780269895814&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-15-108283956.pc_search_insert_ulrmf&utm_term=%E6%89%B9%E9%87%8Fword%E8%BD%ACPDF&spm=1018.2226.3001.4187
'''
# 1.把所有word转化为PDF
from win32com.client import Dispatch
import os
pdfRoot = r"C:\Users\Administrator\Desktop\word2pdf2png" #保存pdf结果的文件夹
wordRoot = r"C:\Users\Administrator\Desktop\word2pdf2png" #读取word的文件夹 多个word放在这里
def doc2pdf(filePath, file):
print("正在转换:",file)
word = Dispatch('Word.Application')
doc = word.Documents.Open(filePath)
outFile = pdfRoot +"\\"+ file.split('.')[0] + ".pdf" #生成pdf文件路径名称
doc.SaveAs(outFile, FileFormat=17)
doc.Close()
word.Quit()
if __name__ == "__main__":
filelist = os.listdir(wordRoot)
for file in filelist:
if (file.endswith(".doc") or file.endswith(".docx")) and ("~$" not in file):
filePath = wordRoot+"\\"+file
doc2pdf(filePath, file)
print ("所有word文件转PDF文件已完成!!!")
# 2.合并所有PDF文件
from PyPDF2 import PdfFileMerger
import os
pdfRoot = r"C:\Users\Administrator\Desktop\word2pdf2png" #保存pdf结果的文件夹
merger = PdfFileMerger() #调用PDF文件合并模块
filelist=os.listdir(pdfRoot) #读取文件夹所有文件
for file in filelist:
if file.endswith(".pdf"):
merger.append(pdfRoot+"\\"+file)#合并PDF文件
merger.write(r"C:\Users\Administrator\Desktop\word2pdf2png\word转PDF并合并.pdf") #写入PDF文件
print ("所有PDF合并后的pdf文件已完成!!!")