ubuntu 下 python 将ppt,word 转换为pdf.

前言:

  在我以前的博客中有这么两篇博客,一篇是:将word 转换为图片(word to pdf ->pdf to image),另一篇是:python将ppt文件转换为jpg图片. 这两篇博客都是讲如何将word,ppt转换为图片,但是这些方法都是在win系统中实现的,而在ubuntu下根本无法运行代码.原因时转换过程中借用的时win的接口库win32com. 这个库bantu压根不存在.所以以前的方法在ubuntu系统就不能实现了,只能另寻出路所幸,皇天不服有心人,在经过多日查找,终于找到解决方法.

ppt转换为pdf:

准备工作:安装 subprocess 这个库

打开终端,执行以下语句:

sudo pip3 install subprocess

安装库以后就好办了,执行一下代码便可以实现转换.

import subprocess
from subprocess import Popen, PIPE

    def ppt_to_pdf(self, outfile, infile, timeout=None):
        """将ppt 转换为pdf

        函数说明:将路径为infile的ppt文件转换为pdf,保存进路径为outfile的pdf文件.

        参数: outfile(str):保存文件pdf 的路径.

        参数: infile(str):ppt文件的路径.

        参数: timeout:转换文件时的时间延迟.
        """
        args = ['libreoffice', '--headless', '--convert-to', 'pdf', '--outdir',outfile, infile]
        process = subprocess.run(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=timeout)
        re.search('-> (.*?) using filter', process.stdout.decode())

同理,将word转换为pdf

import subprocess
from subprocess import Popen, PIPE


    def word_to_pdf(self,outfile, infile, timeout=None):
        """将word 转换为pdf

        函数说明:将路径为infile的word文件转换为pdf,保存进路径为outfile的pdf文件.

        参数: outfile(str):保存文件pdf 的路径.

        参数: infile(str):word文件的路径.

        参数: timeout:转换文件时的时间延迟.
        """
        args = ['libreoffice', '--headless', '--convert-to', 'pdf', '--outdir', outfile, infile]
        process = subprocess.run(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=timeout)
        re.search('-> (.*?) using filter', process.stdout.decode())

将word,ppt转换为pdf 的方法是一样的,只不过是输入文件不一样罢了.

下面顺便也提一下将pdf转换为图片吧

首先要先安装 fitz 这个库,打开终端使用以下代码.

sudo pip3 install fitx

转换的代码:

from PyQt5 import QtGui
import fitz

pdf = fitz.open(file)
for pg in range(pdf.pageCount):
     page = pdf.loadPage(pg)  # 使用循环将所有转换为图片。
     pagePixmap = page.getPixmap()
     # 获取 image 格式
     imageFormat = QtGui.QImage.Format_RGB888
     # 生成 QImage 对象
     pageQImage = QtGui.QImage(pagePixmap.samples, pagePixmap.width,pagePixmap.height, pagePixmap.stride, imageFormat)
     pageQImage.save(file1 + '/image' + '%s.jpg' % (pg + 1))
pdf.close()

 

你可能感兴趣的:(ubuntu 下 python 将ppt,word 转换为pdf.)