python office转pdf linux_使用纯python将docx转换为pdf(在linux上,没有li...

我正在处理一个试图开发网络应用程序的问题,其中一部分将上传的docx文件转换为pdf文件(经过一些处理后).使用python-docx和其他方法,我不需要安装word的windows机器,甚至Linux上的libreoffice,用于大多数处理(我的web服务器是pythonanywhere – linux但没有libreoffice,没有sudo或apt安装权限).但转换为pdf似乎需要其中之一.通过在这里和其他地方探索问题,这是我到目前为止:

import subprocess

try:

from comtypes import client

except ImportError:

client = None

def doc2pdf(doc):

"""

convert a doc/docx document to pdf format

:param doc: path to document

"""

doc = os.path.abspath(doc) # bugfix - searching files in windows/system32

if client is None:

return doc2pdf_linux(doc)

name, ext = os.path.splitext(doc)

try:

word = client.CreateObject('Word.Application')

worddoc = word.Documents.Open(doc)

worddoc.SaveAs(name + '.pdf', FileFormat=17)

except Exception:

raise

finally:

worddoc.Close()

word.Quit()

def doc2pdf_linux(doc):

"""

convert a doc/docx document to pdf format (linux only, requires libreoffice)

:param doc: path to document

"""

cmd = 'libreoffice --convert-to pdf'.split() + [doc]

p = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE)

p.wait(timeout=10)

stdout, stderr = p.communicate()

if stderr:

raise subprocess.SubprocessError(stderr)

如您所见,一种方法需要comtypes,另一种方法需要libreoffice作为子进程.除了切换到更复杂的托管服务器,还有什么解决方案吗?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值