通过Google Slides Api或Drive api将Google幻灯片导出为图像

问题描述

我正在使用驱动器中存在的模板ppt动态生成Google幻灯片。我需要将此新创建的ppt转换为图像,并将其存储在驱动器本身的另一个文件夹中。我可能在演示文稿中有多个幻灯片

from google.oauth2 import service_account
import googleapiclient.discovery

ScopES = (
    'https://www.googleapis.com/auth/drive','https://www.googleapis.com/auth/presentations',)
SERVICE_ACCOUNT_FILE = 'cred.json'

credentials = service_account.Credentials.from_service_account_file(
        SERVICE_ACCOUNT_FILE,scopes=ScopES) 

SLIDES = discovery.build('slides','v1',credentials=credentials)
DRIVE  = discovery.build('drive','v3',credentials=credentials)

TMPLFILE = 'title slide template' 

rsp = DRIVE.files().list(q="name='%s'" % TMPLFILE).execute().get('files')[0]
print(rsp)
DATA = {'name': 'Google Slides API template DEMO','parents': ['id_of_the_folder_for_storing_new_ppt']}
print('** copying template %r as %r' % (rsp['name'],DATA['name']))
DECK_ID = DRIVE.files().copy(body=DATA,fileId=rsp['id']).execute().get('id')
print(DECK_ID)

print('** Replacing placeholder text')

reqs = [
    {'replaceAllText': {
        'containsText': {'text': '{{text}}'},'replaceText': final_til[0]
    }},]

SLIDES.presentations().batchUpdate(body={'requests': reqs},presentationId=DECK_ID).execute()

### till this point I was creating a new ppt 
### Now I need to save it as an image file

print('DONE')

解决方法

最简单的实现功能的方法是使用presentations.pages.getThumbnail

通过指定

使用此方法
  • presentationId
  • 要导出的幻灯片中的slidesId
  • mimeType用于导出-例如PNG
  • thumbnailSize-为图像提供所需的质量

该请求将返回您类型的contentURL https://lh3.googleusercontent.com/XXXXXXXXXXXXXXXXXX=s1600" 您可以使用它在浏览器中将幻灯片作为图像查看,或从中在云端硬盘中创建文件。

旁注:

如果要导出整个演示文稿而不是一张幻灯片,请改用Files: export。但是,此方法仅允许您仅将演示文稿导出为PDF,而不能导出为PNG(至少不能直接导出)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...