实现windows 和linux环境 word转pdf功能

本文章实现不同环境,word文档转pdf文档

一、linux环境

1、环境安装

去网站下载最新版libreoffice安装包
https://mirrors.cloud.tencent.com/libreoffice/libreoffice/stable/
以下几个版本都可以
在这里插入图片描述
deb是ubuntu,mac是苹果,rpm是centos
在这里插入图片描述
选择LibreOffice_6.4.4_Linux_x86-64_rpm.tar.gz
在这里插入图片描述
解压:

tar -zxvf LibreOffice_6.4.4_Linux_x86-64_rpm.tar.gz 

安装:

cd LibreOffice_6.4.4.2_Linux_x86-64_rpm/RPMS/
yum localinstall *.rpm
2、测试安装是否成功:
libreoffice6.4 --version

命令转格式测试:

libreoffice6.4 --convert-to pdf:writer_pdf_Export ./123.docx --outdir ./
问题汇总:

1、如果libreoffice出现cpu100%并且长时间无响应
2、word转pdf之后,中文乱码
解决方法(注:方法1基本就解决了上述两个问题):

1、linux系统缺少中文字体导致

具体操作:
建一个chinese目录,找到windows的C:\Windows\Fonts的部分字体,msyh.ttf,msyhbd.ttf,simsun.ttc,simkai.ttf,simhei.ttf,simfang.ttf,把字体放到chinese目录里。并把此目录移动到linux中的/usr/share/fonts/下

chmod -R 755 /usr/share/fonts/chinese  //赋予权限
fc-list | grep chinese        // 可以查看到已安装新增的字体了
2、禁用libreoffice屏幕显示(不一定管用)
# 找到安装目录sofficerc文件
vim /etc/libreoffice/sofficerc

Logo=1 改为 Logo=0

二、windows环境

1、环境安装
pip install pypiwin32

测试可以用集成代码

三、windows和linux集成代码

import os
import platform
import subprocess
from win32com.client import Dispatch

def doc2pdf_windows(input_file):
    word = Dispatch('Word.Application')
    doc = word.Documents.Open(input_file)
    doc.SaveAs(input_file.replace(".doc", ".pdf"), FileFormat=17)
    doc.Close()
    word.Quit()

def doc2pdf_linux(docFile):
    """
    convert a doc/docx document to pdf format (linux only, requires libreoffice)
    :param doc: path to document
    """
    file_path = os.path.dirname(os.path.realpath(docFile))
    cmd = 'libreoffice6.4 --convert-to pdf:wirter_pdf_Export'.split() + [docFile] + ['--outdir'] + [file_path]
    p = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
    p.wait(timeout=30)
    stdout, stderr = p.communicate()
    if stderr:
        raise subprocess.SubprocessError(stderr)

if __name__ == '__main__':
    file = 'D:\\work\\code\\test.doc'
    sys = platform.system()
    if sys == "Windows":
        doc2pdf_windows(file)
    elif sys == "Linux":
        doc2pdf_linux(file)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平原2018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值