在Google Apps Script中创建横向PDF

5

我正在尝试通过Google Apps Script创建一个以横向方式(A4大小)显示的PDF文档。目前我使用的代码会生成一个纵向的PDF文档。

function pdfSheet() {
  var d = new Date();
  var cdate = d.getDate();
  var cmonth = d.getMonth() + 1;
  var cyear = d.getFullYear();
  var current = [cdate + "-" + cmonth + "-" + cyear];

  var imageBlob = UrlFetchApp.fetch("https://sites.google.com/site/mysite/smalllogo.png").getBlob();
  var base64EncodedBytes = Utilities.base64Encode(imageBlob.getBytes());
  var logo = "<img src='data:image/png;base64," + base64EncodedBytes + "' width='170'/>";


  var html = "<table width='100%'><tr><td align='right'>" + logo + "<br><br><b>Date:</b> " + current + "</td></tr></table>"; //PDF content will carry on here.

  var gmailLabels  = "PDF";  
  var driveFolder  = "My Gmail";
  var folders = DriveApp.getFoldersByName(driveFolder);
  var folder = folders.hasNext() ? 
    folders.next() : DriveApp.createFolder(driveFolder);

  var subject = 'Test PDF';


  var tempFile = DriveApp.createFile("temp.html", html, "text/html");
  var page = folder.createFile(tempFile.getAs("application/pdf")).setName(subject + ".pdf")
  tempFile.setTrashed(true); 

  var link = page.getUrl();
  Logger.log(link);

}

我找到了一种方法。如果你还感兴趣,这里是链接 https://code.google.com/p/google-apps-script-issues/issues/detail?id=3579。它有效。 - nupac
请查看此线程: https://dev59.com/WXzaa4cB1Zd3GeqPVuPX - Jim Garner
有人能找到如何横向打印PDF或者这对PDF不起作用的解决方法吗?&portrait=false无效。 - kiki
1个回答

5

我大部分是从另一个用户那里获取的,并编辑了电子邮件主题中当前日期(按美国东部时间)和PDF名称。希望对你有所帮助!

// Simple function to send Daily Status Sheets
// Load a menu item called "Project Admin" with a submenu item called "Send Status"
// Running this, sends the currently open sheet, as a PDF attachment
function onOpen() {
  var submenu = [{name:"Send Status", functionName:"exportSomeSheets"}];
  SpreadsheetApp.getActiveSpreadsheet().addMenu('Project Admin', submenu);  
}

 function creatPDF() {
  SpreadsheetApp.flush();

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  //Date set with format in EST (NYC) used in subject and PDF name
  var period = Utilities.formatDate(new Date(), "GMT+5", "yyyy.MM.dd");
  var url = ss.getUrl();

  //remove the trailing 'edit' from the url
  url = url.replace(/edit$/, '');

  //additional parameters for exporting the sheet as a pdf
  var url_ext = 'export?exportFormat=pdf&format=pdf' + //export as pdf
    //below parameters are optional...
    '&size=letter' + //paper size
    '&portrait=false' + //orientation, false for landscape
    '&fitw=true' + //fit to width, false for actual size
    '&sheetnames=false&printtitle=false&pagenumbers=false' + //hide optional headers and footers
    '&gridlines=false' + //hide gridlines
    '&fzr=false' + //do not repeat row headers (frozen rows) on each page
    '&gid=' + sheet.getSheetId(); //the sheet's Id

  var token = ScriptApp.getOAuthToken();

  var response = UrlFetchApp.fetch(url + url_ext, {
    headers: {
      'Authorization': 'Bearer ' + token
    }
  });

  var blob = response.getBlob().setName(ss.getName() + " " + period + '.pdf');

  //from here you should be able to use and manipulate the blob to send and email or create a file per usual.
   var email = 'email@co-email.com'; 
   var subject = "subject line " + period ;
    var body = "Please find attached your Daily Report.";
//Place receipient email between the marks
    MailApp.sendEmail( email, subject, body, {attachments:[blob]});


}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接