如何用Google Apps Script保存Google Slide为PDF并保留原幻灯片格式?
解决Google幻灯片转PDF时保留原格式的问题
在使用Google Apps Script导出Google幻灯片为PDF时,若直接调用默认导出方法,常会出现4:3格式幻灯片被强制转为16:9、导致内容错乱的情况。要保留原幻灯片的比例,需在导出URL中指定对应尺寸参数,具体实现如下:
核心思路
先获取幻灯片的原始页面设置,再在PDF导出请求中添加匹配的尺寸参数,覆盖默认导出格式。
代码实现
function saveSlideAsPdfWithOriginalSize() { // 获取当前活跃的幻灯片文件 const presentation = SlidesApp.getActivePresentation(); const pageSetup = presentation.getPageSetup(); const originalPageSize = pageSetup.getPageSize(); // 映射原幻灯片尺寸到PDF导出的参数值 let exportSizeParam; switch(originalPageSize) { case SlidesApp.PageSize.STANDARD_4_3: exportSizeParam = 'w1024-h768'; break; case SlidesApp.PageSize.WIDE_16_9: exportSizeParam = 'w1920-h1080'; break; case SlidesApp.PageSize.WIDE_16_10: exportSizeParam = 'w1280-h800'; break; case SlidesApp.PageSize.A4: exportSizeParam = 'w827-h1169'; break; case SlidesApp.PageSize.LETTER: exportSizeParam = 'w850-h1100'; break; default: exportSizeParam = 'w1024-h768'; } // 构造带尺寸参数的PDF导出URL const fileId = presentation.getId(); const exportUrl = `https://docs.google.com/presentation/d/${fileId}/export/pdf?${exportSizeParam}`; // 发起授权请求获取PDF内容 const authToken = ScriptApp.getOAuthToken(); const response = UrlFetchApp.fetch(exportUrl, { headers: { 'Authorization': `Bearer ${authToken}` } }); // 将PDF保存到Google Drive const pdfBlob = response.getBlob().setName(`${presentation.getName()}_原格式.pdf`); DriveApp.createFile(pdfBlob); }
关键说明
- 获取原始尺寸:通过
getPageSetup()和getPageSize()获取幻灯片的原始比例类型,比如STANDARD_4_3对应4:3格式。 - 匹配导出参数:不同幻灯片尺寸对应固定的宽高参数(如4:3对应
w1024-h768),确保导出PDF尺寸与原幻灯片一致。 - 授权请求:使用
ScriptApp.getOAuthToken()获取授权令牌,确保有权限访问并导出幻灯片内容。
内容的提问来源于stack exchange,提问作者seinecle
相关产品推荐
相关产品推荐

