python3将docx转换成pdf,html文件,pdf转doc文件
直接上代码
# -*- encoding:utf-8 -*-
"""
author:lgh
简单的doc转pdf,html,pdf转doc脚本
依赖库pdfminer3k,pip install pdfminer3k即可
""" from win32com.client import Dispatch, constants from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.layout import LAParams, LTTextBoxHorizontal
from pdfminer.converter import PDFPageAggregator
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed def doc2pdf(input, output):
w = Dispatch('Word.Application')
try:
# 打开文件
doc = w.Documents.Open(input, ReadOnly=1)
# 转换文件
doc.ExportAsFixedFormat(output, constants.wdExportFormatPDF,
Item=constants.wdExportDocumentWithMarkup, CreateBookmarks = constants.wdExportCreateHeadingBookmarks)
return True
except Exception as e:
print(e)
return False
finally:
w.Quit(constants.wdDoNotSaveChanges) def doc2html(input, output):
w = Dispatch('Word.Application')
try:
doc = w.Documents.Open(input, ReadOnly=1)
doc.SaveAs(output, 8)
return True
except Exception as e:
print(e)
return False
finally:
w.Quit(constants.wdDoNotSaveChanges) def pdf2doc(input, output):
try:
with open(input, 'rb') as f:
parser = PDFParser(f)
doc = PDFDocument()
parser.set_document(doc)
doc.set_parser(parser)
# 设置初始化密码
doc.initialize()
if not doc.is_extractable:
raise PDFTextExtractionNotAllowed
else:
rsrcmgr = PDFResourceManager()
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
for page in doc.get_pages():
interpreter.process_page(page)
layout = device.get_result()
for x in layout:
if isinstance(x, LTTextBoxHorizontal):
with open(output, 'a', encoding='utf-8') as f1:
results = x.get_text()
f1.write(results+'\n')
return True
except Exception as e:
print(e)
return False def main():
# rc = doc2pdf(input, output)
# rc = doc2html(input, output)
input = r'F:\save_data\流畅的Python.pdf'
output = r'F:\save_data\test.doc'
rc = pdf2doc(input, output)
if rc:
print('转换成功')
else:
print('转换失败') if __name__ == '__main__':
main()
以上其实是通过com来调用office API,其他语言貌似也可以
当然你也可以用上面的代码将word文件转换成任意格式文件(只要office 2007支持,比如将word文件转换成PDF文件,把8改成17即可),下面是office 2007支持的全部文件格式对应表:
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照着字面意思应该能对应到相应的文件格式,如果你是office 2003可能支持不了这么多格式。word文件转html有两种格式可选wdFormatHTML、wdFormatFilteredHTML(对应数字8、10),区别是如果是wdFormatHTML格式的话,word文件里面的公式等ole对象将会存储成wmf格式,而选用wdFormatFilteredHTML的话公式图片将存储为gif格式,而且目测可以看出用wdFormatFilteredHTML生成的HTML明显比wdFormatHTML要干净许多。
参考自https://blog.csdn.net/binger819623/article/details/6770932
python3将docx转换成pdf,html文件,pdf转doc文件的更多相关文章
- OpenOffice将MS docx转换成pdf文件偶数页眉不显示问题解决办法
OpenOffice版本:4.0(Windows.Linux下测试都出现问题) MS Office版本:2007 问题描述 使用OpenOffice将MS的docx文件转换为pdf文件时,docx文件 ...
- 用java代码把docx转换成pdf文件
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio ...
- 结合Vim ghostscript 将源代码文件转换成语法高亮的pdf格式文档
step 1: 安装ghostscript (debian 环境, 其他环境自行google) sudo apt-get install ghostscript step 2: 用Vim生成ps文件 ...
- Wavefront OBJ 转换成OpenGL ES使用的C/C++文件
项目需要展示3D max模型,通过调研
- python3 变量格式化转换成字符串
num=3 str='I am %f years old' % (num) print(str) 输出 I am 3.000000 years old
- 014_编写批量修改扩展名脚本,如批量将 txt 文件修改为 doc 文件
#!/bin/bash#执行脚本时,需要给脚本添加位置参数 带参for i in "ls *.$1"do #去尾 mv $i ${i%.*}.$2done
- nodejs将PDF文件转换成txt文本,并利用python处理转换后的文本文件
目前公司Web服务端的开发是用Nodejs,所以开发功能的话首先使用Nodejs,这也是为什么不直接用python转换的原因. 由于node对文本的处理(提取所需信息)的能力不强,类似于npm上的包: ...
- linux环境php将word转换成pdf
原文地址:http://www.niu12.com/article/15 ubuntu.java环境.openoffice.jodConverter.php 1.安装java环境 a. jdk下载(我 ...
- html5中将图片的绝对路径转换成文件对象
html5中将图片的绝对路径转换成文件对象 将图片的绝对路径转换成base64编码,请看这篇文章 我们先来理解基本知识点: 1. 理解HTML5中的FileList对象与file对象. 在HTML5中 ...
随机推荐
- linux命令(2):grep命令
实例一: a.log文件内容如下: 从 a.log 文件中提取包含“WARNING”或”FATAL”,同时不包含“IGNOR”的行 grep -E 'WARNING|FATAL' a.log | gr ...
- Commons CLI 学习(1)
The Apache Commons CLI library provides an API for parsing command line options passed to programs. ...
- 自动化运维之saltstack的使用安装
SaltStack 简介 SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块 ...
- Linux下源码安装jdk
1.到官网下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- qtp录制时间控件不允许用户手动输入的解决办法
qtp录制时间控件不允许用户手动输入的解决办法 [前面的话] 一边学习qtp,一边用自己的项目试着写代码,而遇到一个问题就会让自己卡壳很久,这次也是这样的,在写好了登录代码以后,自己就试着写第一个预订 ...
- JS框架的实现
众多流行的JS库都不同程度的污染了原生JS,最典型的如Prototype ,Mootools .JQuery则完全例外,一个匿名函数执行后便诞生了集所有API为一身的强大 $ .虽然如此,JQuery ...
- spring mvc 表单提交 乱码
1.在web.xml添加过滤器: <filter> <filter-name>SpringCharacterEncoding</filter-name> <f ...
- Linux rsync数据定时增量备份
一.安装rsync服务端 1.查看是否安装rsync ps -ef | grep rsync 系统一般默认已安装,安装方法: yum -y install rsync 2.添加配置文件 rsync没有 ...
- Python进程间通信:Queue
Python进程间通信Queue 1.Queue使用方法: Queue.qsize():返回当前队列包含的消息数量: Queue.empty():如果队列为空,返回True,反之False : Que ...
- sql 时间日期格式化
sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-0 ...