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

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

  1.  
#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')
  1.  

---------------------
版权声明:本文为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. JS中回调函数的简单用法

    a能拿b,b能拿到c,c能拿到d,实现a拿到d的东西. function a() { b(function (data) { console.log(data); }); } function b(c ...

  2. a标签中target属性为“_blank”时存在安全问题

    今天看到一个比较有意思的洞,虽然不够严重,但是却普遍存在各大src中 熟悉js的朋友都应该知道当我们在调用window下的open方法创建一个新窗口的同时,我们可以获得一个创建窗口的opener句柄, ...

  3. 写Shell脚本自动生成首行

    送给经常写shell脚本的兄弟们常写shell脚本的时候,大家一定都有困扰,怎么样能让.sh文件的表头自己生成,不用我们自己去敲呢 首先我们要编写一下/etc/vimrc执行 vim /etc/vim ...

  4. c# 日期和时间System.DateTime

  5. table标签修改tr,td标签的行距

    修改tr标签的行距,tbale标签的td标签间距 看如下Css文件的代码,其都没有table的tr行距产生效果 tr{ margin-top: 10px; padding: 10px; } td{ m ...

  6. UIP和lwip的区别 转载

    uIP是专门为8位和16位控制器设计的一个非常小的TCP/IP栈.完全用C编写,因此可移植到各种不同的结构和操作系统上,一个编译过的栈可以在几KB ROM或几百字节RAM中运行.uIP中还包括一个HT ...

  7. openstack虚拟机,采用ssh密钥登录

    在openstack中,制作出的镜像有两种登录方式 1:直接密码登录 2:秘钥登录 在openstack中加入了公钥对应自己会有一份秘钥,该怎样用秘钥进行登录, 可以直接如图在控制节点中,输入ssh ...

  8. CloudCompare 的简单的使用说明

    来自:https://blog.csdn.net/datase/article/details/79797795 File open:打开 save:保存 Global Shift settings: ...

  9. 无向图的割点和桥 tarjan 模板

    #include <bits/stdc++.h> using namespace std; const int MAXN = 20005; const int MAXM = 100005; ...

  10. HttpMessageConverter(消息转换器 )和@responsebody使用(转)

    @responsebody表示该方法的返回结果直接写入HTTP response body中 一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@resp ...