对此我有点陌生,因此对于任何与newb相关的烦恼,我都深表歉意。
我想做的是用各种图像创建一个Google演示文稿,然后将每个幻灯片下载为单独的pdf。我在以pdf格式下载文件时遇到了麻烦。演示文稿正在正确构造。我尝试了几种不同的方法,但尚未找到可行的解决方案。我尝试过的最简单的方法是:
var newFolder=rootFolder.createFolder(sourceSpreadsheet.getName() + ' - Functionals').setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
var deck = SlidesApp.create(NAME); // name determined separately
var presentationID = deck.getId();
...
var blob = DriveApp.getFileById(presentationID).getBlob();
newFolder.createFile(blob);
这确实创建了一个pdf,但是看起来它只是一个空白页。我不确定是否需要在每个幻灯片上而不是整个演示文稿上运行。我找不到任何可以表明这种情况的东西。
我尝试的第二件事是基于为电子表格找到的类似解决方案。我真的不明白如何更改URL将其下载为pdf,这可能与它的问题有关,这就是404的问题。
var presentation = SlidesApp.openById(presentationID);
var url = presentation.getUrl();
url = url.replace(/edit$/,'');
var url_ext = 'export?exportFormat=pdf&format=pdf' + '&muteHttpExceptions=true' //export as pdf
var response = UrlFetchApp.fetch(url + url_ext, {
headers: {
'Authorization': 'Bearer ' + token
}
});
答案 0 :(得分:0)
我已经使用第二种方法来创建Google表格的pdfs。
以下功能可以调整为创建幻灯片的pdf。这使用了REST API,因此您需要根据要格式化pdf的方式使用参数构造URL。
您格式化的网址需要看起来像这样:https://docs.google.com/presentation/d/ **** presentationId **** / export?exportFormat = pdf&format = pdf
您可以在此功能中找到其他用于格式化pdf的可选参数。
function exportPDF(fileId) {
var ss = SpreadsheetApp.openById(fileId);
// Base URL
var url = "https://docs.google.com/spreadsheets/d/SS_ID/export?".replace("SS_ID", ss.getId());
/* Specify PDF export parameters
From: https://code.google.com/p/google-apps-script-issues/issues/detail?id=3579
https://stackoverflow.com/questions/46088042/margins-parameters-for-spreadsheet-export
*/
var url_ext = 'exportFormat=pdf&format=pdf' // export as pdf / csv / xls / xlsx
+ '&size=letter' // paper size legal / letter / A4
+ '&portrait=true' // orientation, false for landscape
+ '&fitw=true&source=labnol' // fit to page width, false for actual size
+ '&top_margin=0.25' //All four margins must be set!
+'&bottom_margin=0.25' //All four margins must be set!
+'&left_margin=0.25' //All four margins must be set!
+'&right_margin=0.25' //All four margins must be set!
+ '&sheetnames=false&printtitle=false' // hide optional headers and footers
+ '&pagenumbers=false&gridlines=false' // hide page numbers and gridlines
+ '&fzr=true' // do not repeat row headers (frozen rows) on each page
+ '&gid='; // the sheet's Id
var token = ScriptApp.getOAuthToken();
var sheet = ss.getSheets()[0]; //get first sheet
// Converts to PDF
var response = UrlFetchApp.fetch(url + url_ext + sheet.getSheetId(), {
headers: {
'Authorization': 'Bearer ' + token
}
});
//convert the response to a blob and store in our array
var blob = response.getBlob().setName(sheet.getName() + '.pdf');
var folderId = '**********your folder id here*******************';
var folder = DriveApp.getFolderById(folderId);
return folder.createFile(blob).getId();
}
答案 1 :(得分:0)
将演示文稿中的所有幻灯片转换为单个pdf
function convertingSlideImagesToPDF() {
var fldr=DriveApp.getFolderById("FolderID");
var ss=SlidesApp.openById("PresentationID");
var slds=ss.getSlides();
var n=0;
for(var i=0;i<slds.length;i++) {
var sldImgA=slds[i].getImages();
if(sldImgA) {
for(var j=0;j<sldImgA.length;j++) {
var imgName=sldImgA[j].getTitle();
var base64=Utilities.base64Encode(sldImgA[j].getBlob().getBytes());
var html='<img src="data:image/jpg;base64,'+base64+'">';
var blob=null;
blob=Utilities.newBlob(html, MimeType.HTML).setName('Image' + n++ + ".pdf");
blob=blob.getAs(MimeType.PDF);
var file=fldr.createFile(blob);
}
}
}
}