首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将每个google幻灯片转换为PDF和JPG?

如何将每个google幻灯片转换为PDF和JPG?
EN

Stack Overflow用户
提问于 2021-05-17 01:28:25
回答 1查看 810关注 0票数 3

Google脚本

  • 我想创建PDF文件每一个幻灯片的谷歌幻灯片文件(一个正常的幻灯片与文字和图表)。
  • 我回顾了过去的问题,我找到了一个生成PDF文件的解决方案,但将幻灯片作为图像(我需要能够搜索那些pdf中的单词)
  • 另一种解决方案是用于转换电子表格-> PDF,但它也不适用于我的情况。

这是我的参考

代码语言:javascript
复制
function autoFlyerGenerator() {

  const name_file = "FILE_NAME";
  
  // Template file in Google slide
  const ppt_file = DriveApp.getFileById(##SLIDE_ID##);
  // Temporal folder to store a temporal slide file
  const temp_folder = DriveApp.getFolderById(##TEMP_FOLDER_ID##);
  // PDF folder
  const pdf_folder = DriveApp.getFolderById(##PDF_FOLDER_ID##);

  // My current spreadsheet
  const ss = SpreadsheetApp.getActive();
  const values_ss = ss.getDataRange().getValues();

  const temp_ppt = ppt_file.makeCopy(temp_folder).setName(name_file);
  const open_temp_ppt = SlidesApp.openById(temp_ppt.getId());
  const slides = open_temp_ppt.getSlides();

  // First for-loop iterate over all rows (without the header)
  // Second for-loop iterate over all columns
  for (var index = 0; index < ss.getLastRow()-1; index++){
    for (var col = 0; col < ss.getLastColumn(); col++){
      slides[index].replaceAllText(values_ss[0][col], values_ss[index+1][col])
    }
  }

  open_temp_ppt.saveAndClose();

  // This code block create a single PDF of the slide
  const pdfContentBlob = temp_ppt.getBlob();
  pdf_folder.createFile(pdfContentBlob).setName(name_file);
}

更新

  • 我忘了提到Google幻灯片文件的页面设置大小与默认设置不同。
  • 这个问题的第一个答案解决了生成pdf文件的问题,但它没有考虑幻灯片的大小。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-17 02:21:48

我相信你的目标如下。

  • 您希望将Google幻灯片的每一页导出为每个PDF文件。
  • 您希望使用Google脚本来实现这一点。

在这种情况下,下面的流如何?

  1. 从源Google幻灯片中检索所有幻灯片。
  2. 创建一个时间谷歌幻灯片。
  3. 将每个页面导出为PDF文件。
  4. 删除时间谷歌幻灯片。

当这个流被反射到一个脚本中时,如下所示。

示例脚本:

请将以下脚本复制并粘贴到Google幻灯片的脚本编辑器中,并运行函数myFunction。这样,脚本就可以运行了。

代码语言:javascript
复制
function myFunction() {
  const folderId = "###"; // Please set the folder ID you want to put the exported PDF files.

  // 1. Retrieve all slides from the source Google Slides.
  const slide = SlidesApp.getActivePresentation();
  const srcSlides = slide.getSlides();

  // 2. Create a temporal Google Slides.
  let temp = SlidesApp.create("temp");
  const id = temp.getId();
  const file = DriveApp.getFileById(id);
  const folder = DriveApp.getFolderById(folderId);

  // 3. Export each page as a PDF file.
  srcSlides.forEach((s, i) => {
    temp.appendSlide(s);
    temp.getSlides()[0].remove();
    temp.saveAndClose();
    folder.createFile(file.getBlob().setName(`page_${i + 1}.pdf`));
    temp = SlidesApp.openById(id);
  });

  // 4. Remove the temporal Google Slides.
  file.setTrashed(true);
}
  • 在这种情况下,每个PDF文件的文件名都类似于page_1.pdfpage_2.pdf

注意:

  • 从标题中,如果要将每张幻灯片导出为每个JPEG文件而不是PDF文件,则还可以使用以下示例脚本。在本例中,使用了幻灯片API。所以,在运行脚本之前,请在高级谷歌服务上启用幻灯片API。 函数myFunction() { const folderId = "###";//请设置要放置导出的###文件的文件夹ID。// 1.从源Google幻灯片中检索所有幻灯片。const幻灯片= SlidesApp.getActivePresentation();const id = slide.getId();const srcSlides = slide.getSlides();// 2.将每个页面导出为一个JPEG文件。const文件夹= DriveApp.getFolderById(folderId);srcSlides.forEach(s,i) => { const url = Slides.Presentations.Pages.getThumbnail(id,s.getObjectId(),{"thumbnailProperties.mimeType":"PNG"}).contentUrl;const = UrlFetchApp.fetch(url).getAs(MimeType.JPEG);
代码语言:javascript
复制
- In this case, the filenames of each JPEG file are like `page_1.jpg`, `page_2.jpg`.

参考文献:

添加:

从下一次行动的回复来看,

我的幻灯片文件的页面设置与默认设置不同,所以当应用您的代码时,生成的PDF文件以默认大小结束,从而产生扭曲的文件。我该怎么解决这个问题?实际上,这是我的错。我的意思是,我的原始谷歌幻灯片文件有一个不同的页面设置(假设14x18厘米)。您的代码可以工作,但是生成的PDF文件具有幻灯片的默认页面设置。

从上面的答复来看,页面大小似乎不是默认的。在这种情况下,我建议使用原来谷歌幻灯片的页面大小。示例脚本如下所示。

示例脚本:

代码语言:javascript
复制
function myFunction2() {
  const folderId = "###"; // Please set the folder ID you want to put the exported PDF files.

  // 1. Retrieve all slides from the source Google Slides.
  const slide = SlidesApp.getActivePresentation();
  const srcId = slide.getId();
  const srcSlides = slide.getSlides();

  // 2. Create a temporal Google Slides.
  const file = DriveApp.getFileById(srcId).makeCopy("temp");
  const id = file.getId();
  let temp = SlidesApp.openById(id);
  temp.getSlides().forEach((e, i) => {
    if (i != 0) e.remove();
  });
  const folder = DriveApp.getFolderById(folderId);

  // 3. Export each page as a PDF file.
  srcSlides.forEach((s, i) => {
    temp.appendSlide(s);
    temp.getSlides()[0].remove();
    temp.saveAndClose();
    folder.createFile(file.getBlob().setName(`page_${i + 1}.pdf`));
    temp = SlidesApp.openById(id);
  });

  // 4. Remove the temporal Google Slides.
  file.setTrashed(true);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67562994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档