自动化将 word 转为 pdf,再将pdf转为图片!
参考:
https://blog.csdn.net/ynyn2013/article/details/49120731
https://www.jianshu.com/p/f57cc64b9f5e
一、将 doc 转为 pdf
1、install 依赖
pip install pywin32
2、直接调用win32com接口打开文件,另存为pdf。SaveAs中的参数17代表村委pdf格式,完了关闭文件,关闭word。
1 def doc2pdf(self):
2 try:
3 w = Dispatch("Word.Application")
4 doc = w.Documents.Open(self.docPath, ReadOnly=1)
5 doc.SaveAs(self.pdfPath, 17)
6 except:
7 traceback.print_exc()
8 finally:
9 doc.Close()
10 w.Quit()
11 self.checkFile(self.pdfPath, 'pdf')
以下为文件格式对应表
wdFormatDocument = 0
wdFormatDocument97 = 0
wdFormatDocumentDefault = 16
wdFormatDOSText = 4
wdFormatDOSTextLineBreaks = 5
wdFormatEncodedText = 7
wdFormatFilteredHTML = 10
wdFormatFlatXML = 19
wdFormatFlatXMLMacroEnabled = 20
wdFormatFlatXMLTemplate = 21
wdFormatFlatXMLTemplateMacroEnabled = 22
wdFormatHTML = 8
wdFormatPDF = 17
wdFormatRTF = 6
wdFormatTemplate = 1
wdFormatTemplate97 = 1
wdFormatText = 2
wdFormatTextLineBreaks = 3
wdFormatUnicodeText = 7
wdFormatWebArchive = 9
wdFormatXML = 11
wdFormatXMLDocument = 12
wdFormatXMLDocumentMacroEnabled = 13
wdFormatXMLTemplate = 14
wdFormatXMLTemplateMacroEnabled = 15
wdFormatXPS = 18
二、将pdf转为图片
1、install 依赖
1.1、pip isntall PyMuPDF
安装完poppler需重启系统后生效。
1 def pdf2image(self):
2 # 建立图片文件夹
3 if not os.path.exists(self.imgFold):
4 os.mkdir(self.imgFold)
5
6 # 转存图片
7 pages = fitz.open(self.pdfPath)
8 for page in pages:
9 imgPath = os.path.join(self.imgFold, str(page.number)+'.jpg')
10 pix = page.getPixmap()
11 pix.writeImage(imgPath)
12 self.checkFile(imgPath, 'last img')
三、直接将word转为图片
方法:结合1,2
代码如下:
1 '''
2 @Author: haikuoxin
3 @Date: 2019-11-11 11:21:12
4 @Last Modified by: haikuoxin
5 @Last Modified time: 2019-11-11 11:21:12
6 '''
7 import os
8 import time
9 import traceback
10 import fitz
11 from win32com.client import Dispatch
12 import comtypes.client
13
14
15 class Word2Pdf2Img():
16 def __init__(self, docPath):
17 # 初始化路径
18 self.docPath = docPath
19 self.fileName = os.path.basename(self.docPath).split('.')[0]
20 self.fileFold = os.path.dirname(self.docPath)
21 self.pdfPath = os.path.join(self.fileFold, self.fileName + '.pdf')
22 self.imgFold = os.path.join(self.fileFold, self.fileName)
23
24 @staticmethod
25 def checkFile(filePath, fileType=''):
26 if os.path.isfile(filePath):
27 print ('file {} existed!'.format(fileType))
28 else:
29 print ('file {} not existed!'.format(fileType))
30
31 def doc2pdf(self):
32 # try:
33 # doc = w.Documents.Open(self.docPath, ReadOnly=1)
34 # doc.SaveAs(self.pdfPath, 17)
35 # doc.Close()
36 # except:
37 # traceback.print_exc()
38 # finally:
39 # w.Quit()
40
41 # w = Dispatch("Word.Application")
42 # doc = w.Documents.Open(self.docPath, ReadOnly=1)
43 # doc.SaveAs(self.pdfPath, 17)
44 # doc.Close()
45 # w.Quit()
46
47 w = comtypes.client.CreateObject('Word.Application')
48 w.Visible = True
49 time.sleep(3)
50 doc = w.Documents.Open(self.docPath)
51 doc.SaveAs(self.pdfPath, FileFormat=17)
52 doc.Close()
53 w.Quit()
54 # os.system('taskkill /f /im WINWORD.EXE')
55 self.checkFile(self.pdfPath, 'pdf')
56
57 def pdf2image(self):
58 # 建立图片文件夹
59 if not os.path.exists(self.imgFold):
60 os.mkdir(self.imgFold)
61
62 # 转存图片
63 pages = fitz.open(self.pdfPath)
64 for page in pages:
65 imgPath = os.path.join(self.imgFold, str(page.number)+'.jpg')
66 pix = page.getPixmap()
67 pix.writeImage(imgPath)
68 self.checkFile(imgPath, 'last img')
69
70 def doc2image(self):
71 self.doc2pdf()
72 self.pdf2image()
73
74 def run():
75 dataFold = r'C:\Users\Administrator\Desktop\chatuClass\data\online'
76 docPaths = [os.path.join(dataFold, name) for name in os.listdir(dataFold)]
77 docCnt = len(docPaths)
78 errorCnt = 0
79 for i, docPath in enumerate(docPaths[:]):
80 if docPath=='':
81 continue
82
83 try:
84 cvter = Word2Pdf2Img(docPath)
85 print (docCnt, i, errorCnt, cvter.fileName)
86 cvter.doc2image()
87 except:
88 errorCnt += 1
89 traceback.print_exc()
90
91 if __name__ == "__main__":
92 run()
93 # docPath = r'C:\Users\Administrator\Desktop\chatuClass\data\test\b.docx'
94 # cvter = Word2Pdf2Img(docPath)
95 # cvter.doc2pdf()
自动化将 word 转为 pdf,再将pdf转为图片!的更多相关文章
- CAD转PDF再由pdf转jpg图片
免费的PDF转JPG图片 https://www.gaitubao.com/pdf-to-jpg/
- 将Word转为带书签的PDF
将word文档存为PDF可以带来很多便利,在这里就不多说了.下面讨论一下转换方法. 我现在使用的是Word2010+Acrobat9,所以这里仅讨论使用这种组合的转换方法. 在Word2010中有两种 ...
- Python将word文档批量转PDF
前面有一篇<Python批量创建word文档(2)- 加图片和表格>的文章,利用这篇文章创建的word文档来批量转PDF文档.代码: 1 ''' 2 #python批量将word文档转换成 ...
- java 如何将 word,excel,ppt如何转pdf --openoffice (1)
承上启下,可折叠 上一篇说的是:服务器是windows server时,用jacob将msoffice(指的是word,excel,ppt)转换成pdf. 若被部署项目的服务器是centOS等linu ...
- Jacob工具类使用文件互转服务 word转html html转excel word转pdf excel转pdf ppt转pdf
前提条件 必须安装MS office 1.jdk使用jdk1.8 2.jacob.dll放在..\jdk1.8\jre\bin目录下 3.eclipse的jre版本要和jdk一致,window-&g ...
- word,excel,ppt,txt转换为 PDF
/// <summary> /// 将word文档转换成PDF格式 /// </summary> /// <param name="sourcePath&quo ...
- 将Word,PDF文档转化为图片
#region 将Word文档转化为图片 /// <summary> /// 将Word文档转化为图片 /// </summary> /// <param name=&q ...
- java实现word,ppt,excel,jpg转pdf
word,excel,jpeg 转 pdf 首先下载相关jar包:http://download.csdn.net/detail/xu281828044/6922499 import java.io. ...
- PDF转WORD工具推荐:迅捷PDF转换器6.8版
迅捷PDF转换器是一款功能强大的pdf转换成word转换器软件.它不仅支持pdf转换成word,word转pdf,还可以实现excel,ppt,jpg与pdf文件的一键式转换.有了它,你可以很轻松转换 ...
- 用java将简单的word文档换成pdf文档
用java将简单的word文档换成pdf文档的方式很多,因为很多都没有实际测试过,所以这里就先泛泛的说一下 整体上来看分两种: 1.纯java代码实现,有很多优秀的开源软件可以用,比如poi,itex ...
随机推荐
- LeetCode783. 二叉搜索树节点最小距离
题目 和LeetCode530没什么区别 1 class Solution { 2 public: 3 vector<int>ans; 4 int minDiffInBST(TreeNod ...
- Upload - Labs (上)
Pass - 01: 1.尝试上传一个php文件:aaa.php,发现只允许上传某些图片类型,用bp抓包,发现http请求都没通过burp就弹出了不允许上传的提示框,这表明验证点在前端,而不在服务端 ...
- XSS - Labs 靶场笔记(下)
Less - 11: 1.观察界面和源代码可知,依旧是隐藏表单 2.突破点是 $str11=$_SERVER['HTTP_REFERER']; (本题为HTTP头REFERER注入) 3.因此构造pa ...
- 被集群节点负载不均所困扰?TKE 重磅推出全链路调度解决方案
引言 在 K8s 集群运营过程中,常常会被节点 CPU 和内存的高使用率所困扰,既影响了节点上 Pod 的稳定运行,也会增加节点故障的几率.为了应对集群节点高负载的问题,平衡各个节点之间的资源使用率, ...
- [Usaco2007 Feb]Cow Party
题目描述 农场有N(1≤N≤1000)个牛棚,每个牛棚都有1只奶牛要参加在X牛棚举行的奶牛派对.共有M(1≤M≤100000)条单向路连接着牛棚,第i条踣需要Ti的时间来通过.牛们都很懒,所以不管是前 ...
- 【Azure Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件
问题描述 在博文([Azure App Service For Container]创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务)中我们通过VS 201 ...
- mysql+MHA高可用
MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀 ...
- JavaScript中函数的定义!
JavaScript中函数的定义! 1 自定义函数(命名函数) function fun() {}; 2 函数表达式(匿名函数) var fun = function () {}; 3 利用 new ...
- echarts图表X轴文字过长解决解决方案:根据文字长度自动旋转
Echarts 标签中文本内容太长的时候怎么办 ? 关于这个问题搜索一下,有很多解决方案.无非就是 省略(间隔显示).旋转文字方向.竖排展示 前面两种解决方案,就是echarts暴露的: { ax ...
- Linux网卡没有eth0显示ens33原因以及解决办法
原因 首先说明下eth0与ens33的关系: 目前的主流网卡为使用以太网络协定所开发出来的以太网卡 (Ethernet),因此我们 Linux 就称呼这种网络接口为 ethN (N 为数字). 举例来 ...