100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > docx 转换成html转pdf python3将docx转换成pdf html文件 pdf转doc文件

docx 转换成html转pdf python3将docx转换成pdf html文件 pdf转doc文件

时间:2024-09-03 06:54:45

相关推荐

docx 转换成html转pdf python3将docx转换成pdf html文件 pdf转doc文件

直接上代码

#-*- encoding:utf-8 -*-

"""author:lgh

简单的doc转pdf,html,pdf转doc脚本

依赖库pdfminer3k,pip install pdfminer3k即可"""

from win32com.client importDispatch, constantsfrom pdfminer.pdfparser importPDFParser, PDFDocumentfrom pdfminer.pdfinterp importPDFResourceManager, PDFPageInterpreterfrom pdfminer.layout importLAParams, LTTextBoxHorizontalfrom pdfminer.converter importPDFPageAggregatorfrom pdfminer.pdfinterp importPDFTextExtractionNotAlloweddefdoc2pdf(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)returnTrueexceptException as e:print(e)returnFalsefinally:

w.Quit(constants.wdDoNotSaveChanges)defdoc2html(input, output):

w= Dispatch('Word.Application')try:

doc= w.Documents.Open(input, ReadOnly=1)

doc.SaveAs(output,8)returnTrueexceptException as e:print(e)returnFalsefinally:

w.Quit(constants.wdDoNotSaveChanges)defpdf2doc(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 notdoc.is_extractable:raisePDFTextExtractionNotAllowedelse:

rsrcmgr=PDFResourceManager()

laparams=LAParams()

device= PDFPageAggregator(rsrcmgr, laparams=laparams)

interpreter=PDFPageInterpreter(rsrcmgr, device)for page indoc.get_pages():

interpreter.process_page(page)

layout=device.get_result()for x inlayout:ifisinstance(x, LTTextBoxHorizontal):

with open(output,'a', encoding='utf-8') as f1:

results=x.get_text()

f1.write(results+'\n')returnTrueexceptException as e:print(e)returnFalsedefmain():#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)ifrc:print('转换成功')else:print('转换失败')if __name__ == '__main__':

main()

以上其实是通过com来调用office API,其他语言貌似也可以

当然你也可以用上面的代码将word文件转换成任意格式文件(只要office 支持,比如将word文件转换成PDF文件,把8改成17即可),下面是office 支持的全部文件格式对应表:

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 可能支持不了这么多格式。word文件转html有两种格式可选wdFormatHTML、wdFormatFilteredHTML(对应数字8、10),区别是如果是wdFormatHTML格式的话,word文件里面的公式等ole对象将会存储成wmf格式,而选用wdFormatFilteredHTML的话公式图片将存储为gif格式,而且目测可以看出用wdFormatFilteredHTML生成的HTML明显比wdFormatHTML要干净许多。

参考自/binger819623/article/details/6770932

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。