初次创建仓库提交代码
1. 已经构建好了架子了。 2. 添加了示例的插件
This commit is contained in:
76
tools/doc2pdf.py
Normal file
76
tools/doc2pdf.py
Normal file
@@ -0,0 +1,76 @@
|
||||
"""
|
||||
You need to install these libraries in the Linux os.
|
||||
1、sudo apt-get install python3
|
||||
2、sudo apt-get install libreoffice
|
||||
3、sudo apt-get install unoconv
|
||||
4、cd /usr/share/fonts/ mkdir chinese
|
||||
5、cp Windows os C:\Windows\Fonts to /usr/share/fonts/chinese
|
||||
chmod -R 755 /usr/share/fonts/chinese
|
||||
fc-cache -fv
|
||||
fc-list | grep chinese //check the new fonts
|
||||
6、Directions for use
|
||||
For example:
|
||||
python3 doc2pdf.py "./MI_SYS_API_V3.docx" "./MI_SYS_API_V3.pdf"
|
||||
"""
|
||||
import subprocess
|
||||
import os
|
||||
import sys
|
||||
|
||||
try:
|
||||
from comtypes import client
|
||||
except ImportError:
|
||||
client = None
|
||||
|
||||
try:
|
||||
from win32com.client import constants, gencache
|
||||
except ImportError:
|
||||
constants = None
|
||||
gencache = None
|
||||
|
||||
|
||||
def doc2pdf(docPath, pdfPath):
|
||||
"""
|
||||
convert a doc/docx document to pdf format
|
||||
:docPath: path to doc/docx Input
|
||||
:pdfPath: path to pdf Output
|
||||
"""
|
||||
docPathTrue = os.path.abspath(docPath)
|
||||
if client is None:#判断环境,linux环境这里肯定为None
|
||||
return doc2pdf_linux(docPathTrue, pdfPath)
|
||||
# name, ext = os.path.splitext(doc)
|
||||
# try:
|
||||
# word = client.DispatchEx("Word.Application")
|
||||
# worddoc = word.Documents.Open(doc)
|
||||
# worddoc.SaveAs(name + '.pdf', FileFormat=17)
|
||||
# except Exception:
|
||||
# raise
|
||||
# finally:
|
||||
# worddoc.Close()
|
||||
# word.Quit()
|
||||
word = gencache.EnsureDispatch('Word.Application')
|
||||
doc = word.Documents.Open(docPathTrue, ReadOnly=1)
|
||||
doc.ExportAsFixedFormat(pdfPath,
|
||||
constants.wdExportFormatPDF,
|
||||
Item=constants.wdExportDocumentWithMarkup,
|
||||
CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
|
||||
word.Quit(constants.wdDoNotSaveChanges)
|
||||
|
||||
|
||||
def doc2pdf_linux(docPath, pdfPath):
|
||||
"""
|
||||
convert a doc/docx document to pdf format (linux only, requires libreoffice)
|
||||
:param doc: path to doc/docx document
|
||||
cmd = 'libreoffice --headless --convert-to pdf :writer_pdf_Export'.split() + [filePath] + ['--outdir'] + [destDir]
|
||||
"""
|
||||
filePath = docPath
|
||||
destDir = pdfPath
|
||||
cmd = 'libreoffice --headless --convert-to pdf :writer_pdf_Export'.split() + [filePath] + ['--outdir'] + [destDir]
|
||||
print(filePath)
|
||||
p = subprocess.Popen(cmd,stderr=subprocess.PIPE, stdout=subprocess.PIPE)
|
||||
p.wait(timeout=60)
|
||||
stdout, stderr = p.communicate()
|
||||
if stderr:
|
||||
raise subprocess.SubprocessError(stderr)
|
||||
|
||||
if __name__ == '__main__':
|
||||
doc2pdf(sys.argv[1], sys.argv[2])
|
||||
Reference in New Issue
Block a user