实现移动端显示pptx文档遇到的坑

业务需求是用户可以在app上直接预览pptx格式的文档。为此开始查阅资料,找了一些可以实现预览的方式(能成功的程序只能在windows下跑通并显示,效果还可以)

一、pptx-图片

import pythoncom
import win32com
import win32com.client

 

powerpoint = win32com.client.Dispatch('PowerPoint.Application')
powerpoint.Visible = True
ppt_path = ppt_root + pptFileName
ppt = powerpoint.Presentations.Open(ppt_path)
# 保存为图片
ppt.SaveAs(sys.path[0] + '.jpg', 17)

# 关闭powerpoint软件
powerpoint.Quit()

# 遍历得到所有的jpg文件
ims = [Image.open(fn) for fn in listdir() if fn.endswith('.jpg')]

# 单副图像尺寸
width, height = ims[0].size
# 创建空白长图
result = Image.new(ims[0].mode, (width, height * len(ims)))

# 拼接
for i, im in enumerate(ims):
    result.paste(im, box=(0, i * height))

# 保存
result.save('result.jpg')
imgPath = sys.path[0] + '/result.jpg'

 

with open(imgPath, 'rb') as f:
    image = f.read()
response = Response(image, mimetype='image/png')

# 删除生成的图片
for root, dirs, files in os.walk(sys.path[0]):
    for name in files:
        if name.endswith(".jpg"):  # 填写规则
            os.remove(os.path.join(root, name))

Return response

 

win32com只能在windows下安装使用,所以无法部署到服务器上(这是在部署的时候才明白的,所以浪费了很多时间,希望其他人看到这句话后不要再走弯路。)

 

二、Pptx-pdf

由于服务返回pdf是可以实现在线预览的,所以可以将pptx转为pdf作为结果return出去。(但是直接把pptx返回出去会直接跳转下载链接)

因为这部分也需要用到win32com,所以暂时不考虑用这种方法,windows上的实现以后再贴。

posted on 2019-05-31 09:46  金克丝  阅读(264)  评论(0)    收藏  举报

导航