首页 > 其他分享 >多个word转化成PDF文件后再合并成一个PDF文件

多个word转化成PDF文件后再合并成一个PDF文件

时间:2023-09-05 14:12:14浏览次数:34  
标签:文件 word file path PDF folder pdf os out

"""
** 将 多个word 文档 转化成 PDF 文件, 最后合并成一个PDF文件**
"""
`

import os

from win32com import client
from PyPDF2 import PdfMerger # 使用PdfMerger

def wordToPdf(folder): # 将 多个word 文档 转化成 PDF 文件
os.chdir(folder)
file_type = 'docx'
out_folder = folder + "\PDF"
if not os.path.exists(out_folder):
print('Creating output folder...')
os.makedirs(out_folder)
print(out_folder, 'created.')
else:
print(out_folder, 'already exists.\n')
# print(os.listdir("."))
# exit()
try:
for files in os.listdir("."):
if files.endswith(".docx"):
out_name = files.replace(file_type, r"pdf")
in_file = os.path.abspath(folder + "\" + files)
out_file = os.path.abspath(out_folder + "\" + out_name)
print(in_file, 'Exporting', out_file, "\n\n")
word = client.DispatchEx("Word.Application")
word.Visible = 0 # 后台运行
word.DisplayAlerts = 0 # 不显示,不警告
doc = word.Documents.Open(in_file, Encoding='gbk')
doc.SaveAs(out_file, FileFormat=17)
doc.Close()
word.Quit()
except Exception as e:
print("出错了!", e)

def mergePDF(folder): # 将多个 PDF 文件,合并成一个PDF文件
# 设置文件所在位置
target_path = folder + "\PDF" # pdf文件所在文件夹绝对路径
pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]

os.chdir(target_path)
out_folder = target_path + "\\MPDF"
if not os.path.exists(out_folder):
    print('Creating output folder...')
    os.makedirs(out_folder)
    print(out_folder, 'created.')
else:
    print(out_folder, 'already exists.\n')

# 调用合并方法
file_merger = PdfMerger()  # 调用
for pdf in pdf_lst:
    file_merger.append(pdf)  # 合并pdf文件
# 选择合并后文件存储位置
out_name = "MergePDF.pdf"
out_file = os.path.abspath(out_folder + "\\" + out_name)
file_merger.write(out_file)  # 合并后文件所在位置
print("合并完成")

if name == 'main':
folder = r"J:\1_7"
wordToPdf(folder)
mergePDF(folder)
`

标签:文件,word,file,path,PDF,folder,pdf,os,out
From: https://www.cnblogs.com/HeroZhang/p/17679404.html

相关文章

  • rm删除大量文件时提示Argument list too long
    查找mysql文件夹占用过大的原因是有很多类似wsrep_recovery.aE9T2i的文件,需要删除直接rmwsrep_recovery*-rf时提示bash:/usr/bin/rm:Argumentlisttoolong需要换种方式用find删除find /var/lib/mysql -name"wsrep_recovery*" -typef -exec rm-rf {} \;......
  • python request上传多个文件和其他字段
    使用 requests 库可以方便地上传多个文件和其他字段。当使用Python的requests.post函数时,您可以在其中添加异常处理来捕获可能的网络错误或HTTP错误。 importrequestsurl='http://cbim.com/upload'files={'file1':('file1.txt',open('file1.txt','rb'),'tex......
  • TinyMCE实现WORD粘贴公式自动上传
    ​  自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了。一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器)中时,编辑器都无法自动上传图片。需要用户手动一张张上传Word图片。如果只有一张图片还能......
  • Linux文件查看和处理命令
    文件查看和处理命令touch:创建空文件和修改文件时间戳touch改变文件的atime和mtime(ctime会随之改变)-a改变atime-m改变mtimestat:查看文件的属性及元数据cat:显示文件的内容,适合看小文件n显示行号catm1m2>file(将文件m1和m2合并后放入文件file中)>输出重定向>覆盖之前文件内容......
  • flask设置静态文件目录、模板目录
    fromflaskimportFlask,render_templateapp=Flask(import_name=__name__,static_url_path='/',static_folder='static',template_folder='templates')#添加html访问路由@app.route('/')defblog():retur......
  • 等长文件的导出
    Step1创建一个新的Excel命名为“等长文件”Step2数据线等长数据在AD中选择PCB面板,再选择创建的Nets的数据线类。选择排序方式,按名称排序。右键网络,选择所有网络。复制,粘贴到Excel。Step3地址线等长数据在AD中选择PCB面板,再选择创建的xSignal的地址线类。选择排序......
  • 用 Visual Studio Code 开发 Angular 应用自动生成的 .angular 文件夹
    在Angular开发中,项目根目录下的.angular文件夹是AngularCLI工具的一部分,它包含了一些配置和缓存文件,用于提高开发效率和构建性能。.angular文件夹的作用主要包括:缓存构建信息:.angular文件夹中包含了一些缓存文件,用于存储先前构建的信息,以加速后续的构建过程。这有助于......
  • xfs文件系统-------使用备份文件恢复被误删的文件
    LinuxCentos7xfs文件误删了怎么办——快速恢复xfs文件xfs文件恢复xfs类型的文件可使用xfsdump与xfsrestore工具进行备份恢复。若系统中未安装xfsdump与xfsrestore工具,可以通过yuminstall-yxfsdump命令安装。xfsdump按照inode顺序备份一个xfs文件系统。xfsdump......
  • 操作系统中文件系统的实现和分配方式探析(上)
    虚拟文件系统在Linux文件系统中,用户空间、系统调用、虚拟机文件系统、缓存、文件系统以及存储之间存在着紧密的关系。如下图:在操作系统中,文件系统起到了重要的作用,它们负责管理操作系统中的文件和目录。然而,不同的文件系统有着不同的实现方式和存储位置。为了提供一个统一的......
  • a标签下载文件并自定义文件名
     一、href的属性地址必须是和你前端同源情况下<ahref="URL"download="文件名">//download属性也可以设置一个值来规定下载文件的名称。所允许的值没有限制,浏览器将自动检测正确的文件扩展名并添加到文件。注意:只有Firefox和Chrome支持download属性,如果涉及跨域情况下,d......