自己写的一个小工具,用于批量转换word为pdf,使用方式:

将完整代码拷贝到文档中,并修改名称为words2pdfs.py
将该文件拷贝到需要转换的文档目录下
在终端中输入python words2pdfs.py
终端会列出来是否需要转换以下文档,输入yes即可。
注意:运行后会在当前目录下生成一个pdfs的文件夹,里面就是转换后的所有文件


#coding=utf-8
import os,shutil,sys
from win32com import client
import time
success = 0
fail = 0
def encode_content(content=''):
return content.decode('utf-8').encode('cp936')
def doc2pdf(doc_name, pdf_name):
"""
:word文件转pdf
:param doc_name word文件名称
:param pdf_name 转换后pdf文件名称
"""
global success, fail
try:
word = client.DispatchEx("Word.Application")
if os.path.exists(pdf_name):
os.remove(pdf_name)
worddoc = word.Documents.Open(doc_name,ReadOnly = 1)
worddoc.SaveAs(pdf_name, FileFormat = 17)
success += 1
print '%s >>>>>>> %s 转换成功'.decode('utf-8').encode('cp936') %(os.path.split(doc_name)[1] , os.path.split(pdf_name)[1])
return pdf_name
except Exception as e:
fail += 1
print(e)
print encode_content('%s 转换失败..' % doc_name)
return 1
finally:
worddoc.Close()
word.Quit()
def doc2docx(doc_name,docx_name):
"""
:doc转docx
"""
try:
# 首先将doc转换成docx
word = client.Dispatch("Word.Application")
doc = word.Documents.Open(doc_name)
#使用参数16表示将doc转换成docx
doc.SaveAs(docx_name,16)
except:
pass
finally:
doc.Close()
word.Quit()
def createDirs(basePath=os.getcwd()):
# 存放转化后的pdf文件夹
pdfs_dir = basePath + '/pdfs'
if not os.path.exists(pdfs_dir):
os.mkdir(pdfs_dir)
return pdfs_dir
def getFileNames(basePath=os.getcwd()):
filenames=[]
# move all .words files to words_dir
for file in os.listdir(basePath):
if file.endswith('.docx'):
filenames.append(file)
elif file.endswith('.doc'):
filenames.append(file)
else:
pass
return filenames
def convert(basePath=os.getcwd(),filenames=[]):
pdfs_dir=createDirs(basePath)
for filename in filenames:
pdfName='.'.join(filename.split('.')[:-1])+'.pdf'
doc2pdf(os.path.join(basePath,filename),os.path.join(pdfs_dir,pdfName))
if __name__ == '__main__':
basePath=os.getcwd()
lfileNames=getFileNames(basePath)
if len(lfileNames) == 0:
print encode_content('未检测到word文档')
sys.exit()
print encode_content('内容分析中...')
print encode_content('检测到当前目录下共有word文档:%d' % len(lfileNames))
print('are you going to convert these files to pdf?')
for filename in lfileNames:
print(filename)
print("input \"yes\" to start convert, and \"no\" to quik program")
while True:
command=raw_input()
if command=='yes':
convert(basePath,lfileNames)
print(encode_content('成功: %d' % success))
print(encode_content('失败: %d' % fail))
time.sleep(10)
break
elif command=='no':
break
else:
print('wrong command,input yes or no please')
 

---------------------
版权声明:本文为CSDN博主「Fantastic_Liar」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Fantastic_Liar/article/details/90452928

批量转换word为pdf的更多相关文章

  1. Linux系统下Java 转换Word到PDF时,结果文档内容乱码的解决方法

    本文分享在Linux系统下,通过Java 程序代码将Word转为PDF文档时,结果文档内容出现乱码该如何解决.具体可参考如下内容: 1.问题出现的背景 在Windows系统中,使用Spire.Doc ...

  2. markdown文本转换word,pdf

    pandoc及下载和安装 pandoc是什么 pandoc是一个软件,是一个能把千奇百怪的文档格式互相转换的神器,是一把文档转换的瑞士军刀(swiss-army knife).不多说,放一张其官网(h ...

  3. 批量转换word文档到pdf文件

    最近在整理每周的工作记录.因为每周的工作记录大都是单独的word文件,有时候忘记了也不容易找出来,一个个打开查找太费劲,因此想着把这些文件通过word2016的另存为功能转换为pdf,然后永Acrob ...

  4. PCB 批量Word转PDF实现方法

    自上次公司电脑中毒带来的影响,导致系统自动生成的Word档PCB出货报告,通过公司邮件服务器以附件的方式发送给客户后,客户是无法打开或打开缓慢的现象,如果将Word档转为PDF后在客户端是可以正常打开 ...

  5. Java转换Word文件到PDF文件

    使用Docx4j将Word文件转换为PDF文件: public static void convertDocxToPDF(String docxFilePath, String pdfPath) th ...

  6. ASP.NET Word转为PDF

    1.首先安装 Microsoft Office 2007加载项:Microsoft Save as PDF-简体中文版:下载地址: http://download.microsoft.com/down ...

  7. java 将word转为PDF (100%与word软件转换一样)

    jdk环境:jdk_8.0.1310.11_64    (64位) 1.引入pom文件 <!-- word转pdf(依赖windows本地的wps) --> <dependency& ...

  8. 【源码】Word转PDF V1.0.1 小软件,供新手参考

    昨天有一朋友让我帮忙找一款Word转PDF的软件,今天自己捣鼓出点成果封装个Helper供大家使用~ 开源地址:https://github.com/dunitian/WordConvertPDF 软 ...

  9. word转pdf swf 在线预览

    来源:http://www.cnblogs.com/wuhenke/archive/2010/08/01/1789750.html 之前在项目中研究使用了一套word转PDF,然后将PDF转成SWF的 ...

随机推荐

  1. kubernetes第八章--NFS PersistentVolume

  2. 从 SimpleIntegerProperty 看 Java属性绑定(property binding) 与 观察者模式(Observable)

    //TODO:ExpressionHelper .bindBidirectional双向绑定.以及IntegerExpression的一系列算术方法和返回的IntegerBinding暂未详细解析(比 ...

  3. Django:ORM介绍

    1.ORM概念 ​ 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. ​ 简单的说,ORM是通过使用描述 ...

  4. XML 约束

    XML约束 一.约束 约束:规定 xml 文档的书写规则 要求: 1.能够在 xml 中引入约束文档 2.能够简单的读懂约束文档 分类: 1.DTD:一种简单的约束技术(后缀.dtd) 2.Schem ...

  5. Spark运行原理【史上最详细】

    https://blog.csdn.net/lovechendongxing/article/details/81746988 Spark应用程序以进程集合为单位在分布式集群上运行,通过driver程 ...

  6. PHP开发工具 zend studio

    一.搭建PHP开发环境Apahce服务器Dreamwear创建站点 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/ ...

  7. [ipsec][strongswan] strongswan源码分析-- (二)rekey/reauth机制分析

    目录 strongwan sa分析(二) 名词约定 rekey/reauth 机制分析 1 概述 2 reauth 3 CHILD SA rekey 4 IKE SA rekey 5 其他 stron ...

  8. Linux命令——tree

    参考:Linux tree Command Tutorial for Beginners (6 Examples) 简介 Linux tree命令用于以树状图列出目录的内容. 执行tree指令,它会列 ...

  9. VLAN实验3:理解Hybrid接口的应用

    实验环境 实验拓扑图 实验编址 实验步骤1.基本配置按照实验编址为PC配置IP地址,以PC5为例 在PC5与PC1通过ping命令测试,发现通讯正常.(以此为例,其他的我就不一一截图测试了.) 在S1 ...

  10. 移动端开发-viewport与媒体查询

    首先要知道,在移动开发中,手机的浏览器会默认网页是为宽屏而设计的,它会缩小整个页面来适应屏幕. 1. 不使用viewport出现的问题 提到响应式设计,大家首先想到的可能是 Bootstrap , @ ...