直接上代码

# -*- 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文件的更多相关文章

  1. OpenOffice将MS docx转换成pdf文件偶数页眉不显示问题解决办法

    OpenOffice版本:4.0(Windows.Linux下测试都出现问题) MS Office版本:2007 问题描述 使用OpenOffice将MS的docx文件转换为pdf文件时,docx文件 ...

  2. 用java代码把docx转换成pdf文件

    import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio ...

  3. 结合Vim ghostscript 将源代码文件转换成语法高亮的pdf格式文档

    step 1: 安装ghostscript (debian 环境, 其他环境自行google) sudo apt-get install ghostscript step 2:  用Vim生成ps文件 ...

  4. Wavefront OBJ 转换成OpenGL ES使用的C/C++文件

    项目需要展示3D max模型,通过调研

  5. python3 变量格式化转换成字符串

    num=3 str='I am %f years old' % (num) print(str) 输出 I am 3.000000 years old

  6. 014_编写批量修改扩展名脚本,如批量将 txt 文件修改为 doc 文件

    #!/bin/bash#执行脚本时,需要给脚本添加位置参数 带参for i in "ls *.$1"do     #去尾     mv $i ${i%.*}.$2done

  7. nodejs将PDF文件转换成txt文本,并利用python处理转换后的文本文件

    目前公司Web服务端的开发是用Nodejs,所以开发功能的话首先使用Nodejs,这也是为什么不直接用python转换的原因. 由于node对文本的处理(提取所需信息)的能力不强,类似于npm上的包: ...

  8. linux环境php将word转换成pdf

    原文地址:http://www.niu12.com/article/15 ubuntu.java环境.openoffice.jodConverter.php 1.安装java环境 a. jdk下载(我 ...

  9. html5中将图片的绝对路径转换成文件对象

    html5中将图片的绝对路径转换成文件对象 将图片的绝对路径转换成base64编码,请看这篇文章 我们先来理解基本知识点: 1. 理解HTML5中的FileList对象与file对象. 在HTML5中 ...

随机推荐

  1. linux命令(18):chmod命令

    1. 命令格式: chmod [-cfvR] [--help] [--version] mode file 2. 命令功能: 用于改变文件或目录的访问权限,用它控制文件或目录的访问权限. 3. 命令参 ...

  2. maven新建web项目提示The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

    maven新建web项目提示The superclass "javax.servlet.http.HttpServlet" was not found on the Java Bu ...

  3. gradle eclipse 配置

    http://blog.csdn.net/caolaosanahnu/article/details/17022321 从gradle官网下载 解压,配置环境变量,gradle -v 验证 gradl ...

  4. Python+Selenium 自动化实现实例-Link 捕捉元素的几种方法

    from selenium import webdriver driver = webdriver.Chrome() driver.get("http://www.baidu.com&quo ...

  5. python2下向文件写入unicode编码的内容,codecs包

    python内置库中的open方法只能读写ascii码,如果想写入Unicode字符,需要使用codecs包. # -*- coding: utf-8 -*- import codecs import ...

  6. PHP需要学习成长路径

    第一阶段:基础阶段(基础PHP程序员) 重点:把LNMP搞熟练(核心是安装配置基本操作) 目标:能够完成基本的LNMP系统安装,简单配置维护;能够做基本的简单系统的PHP开发;能够在PHP中型系统中支 ...

  7. PHP数组转对象,对象转数组

    废话不多,直接上代码: <?php class object_array{ //数组转对象 public static function array_to_object($e){ if(gett ...

  8. [水煮 ASP.NET Web API2 方法论](1-6)Model Validation

    问题 想要 ASP.NET Web API 执行模型验证,同时可以和 ASP.NET MVC 共享一些验证逻辑. 解决方案 ASP.NET Web API 与 ASP.NET MVC 支持一样的验证机 ...

  9. hdu多校6

    这个场要恶心死我了.. 1001 积分题,不要四舍五入 //#pragma comment(linker, "/stack:200000000") //#pragma GCC op ...

  10. 在 Bootstraptable 插件基础上新增可编辑行

    http://www.tuicool.com/articles/YbEVv2v 为什么调用 bootstraptable 原生方法会有问题 首先我必须肯定, bootstraptable 是一款很强大 ...