Office(Word、PPT、execl)转pdf Windows与linux平台

Windows

工具实现

在windows或者mac平台上,直接使用office可以导出相应的pdf文件。

代码实现

或者可以使用代码,引用已经实现的三方库来实现转换。比如python中的docx2pdf,引入与使用都很简单。

from docx2pdf import convert
from time import time

if __name__ == '__main__':
    start = time()
    convert("file/xx.docx", "file/xx.pdf")
    end = time()
    print(end-start)

但是这些库一般都不支持在linux平台下,比如docx2pdf的convert源码中,就限制了只能用于win和mac平台:

def convert(input_path, output_path=None, keep_active=False):
    paths = resolve_paths(input_path, output_path)
    if sys.platform == "darwin":
        return macos(paths, keep_active)
    elif sys.platform == "win32":
        return windows(paths, keep_active)
    else:
        raise NotImplementedError(
            "docx2pdf is not implemented for linux as it requires Microsoft Word to be installed"
        )

Linux

在linux平台,需要实现office转pdf的话。可以考虑开源的libreoffice和openoffice,这两者相比之下,个人感觉libreoffice更好使点。下面是我在centos7上面的安装方式。

# 下载安装的压缩包
wget https://mirrors.nju.edu.cn/tdf/libreoffice/stable/7.3.5/rpm/x86_64/LibreOffice_7.3.5_Linux_x86-64_rpm.tar.gz
# 解压
tar -zxvf LibreOffice_7.3.5_Linux_x86-64_rpm.tar.gz
# 进入安装包的目录
cd LibreOffice_7.3.5.2_Linux_x86-64_rpm/RPMS
# 安装本地软件包
yum localinstall *.rpm -y
# 安装其它依赖包
yum install cairo cups-libs libSM ibus libreoffice-headless -y
# fonts是我提前复制的windows下的字体文件夹,复制到系统的fonts下
mv fonts /usr/share/fonts/winfonts
# 修改权限,方便后面安装
chmod -R 755 /usr/share/fonts/winfonts
# 安装字体
fc-cache -fv
# 可查看已经安装的字体
fc-list

转换命令:

libreoffice7.3 --headless --convert-to pdf /home/xxx.docx
libreoffice7.3 --headless --convert-to pdf /home/xxx.pptx
libreoffice7.3 --headless --convert-to pdf /home/xxx.xlsx
libreoffice7.3 --headless --convert-to docx /home/xxx.doc

注意点:

​ 个人测试中,发现libreoffice无法将doc格式的转换成pdf,生成的pdf是xml的源格式。即使是我使用libreoffice将doc装docx之后还是一样的结果。

posted @ 2022-08-03 11:44  红雨520  阅读(1101)  评论(0编辑  收藏  举报