【问题标题】:Print a chart from Google Sheets horizontally水平打印 Google 表格中的图表
【发布时间】:2019-09-19 23:32:17
【问题描述】:

我需要找到将图表水平打印为 pdf/image/sheet 的方法

我用代码自动打印。

现在我正在打印从电子表格选项卡创建的 pdf,但尽管有选项设置,它总是垂直打印。

它将漂亮的水平 pdf 保存在 Drive 上,然后垂直打印。

当我打印统计数据时,我需要它是水平的。

这是我的带有选项的代码:

  var requestData = {
    "oAuthServiceName": "spreadsheets",
    "oAuthUseToken": "always",
  };  
  
  //spreadsheet id
  var ssID = ss.getId()
  
  //sheet id
  var sID = ss.getSheetByName("Print").getSheetId();
   
  //creating pdf  
  var pdf = UrlFetchApp.fetch("https://docs.google.com/spreadsheets/d/"+ssID+"/export?gid="+sID+"&portrait=false&size=letter&fitw=true&format=pdf",requestData).getBlob();  
  
  //folder to created pdf in
  var folder = DriveApp.getFolderById("1RseEezmGT2gSBS9rgdV0E2ggRD5O6dyu")
 
  //creating pdf in this folder with given name
  var file = folder.createFile(pdf).setName("Chart")
  
  var docID = file.getId()

  var printerID = "02f4280c-9e83-da7d-d5ff-ca0f25ca03e3"
  var docName = "Chart"

  //starts printing
  printGoogleDocument(docID, printerID, docName)

function printGoogleDocument(docID, printerID, docName) {
  
  var ticket = {
    version: "1.0",
    print: {
      color: {
        type: "STANDARD_COLOR",
        vendor_id: "Color"
      },
      duplex: {
        type: "NO_DUPLEX"
      }
    }
  };

  var payload = {
    "printerid" : printerID,
    "title"     : docName,
    "content"   : DriveApp.getFileById(docID).getBlob(),  
    "contentType": "application/pdf",
    "ticket"    : JSON.stringify(ticket)
  };

  var response = UrlFetchApp.fetch('https://www.google.com/cloudprint/submit', {
    method: "POST",
    payload: payload,
    headers: {
      Authorization: 'Bearer ' + getCloudPrintService().getAccessToken()
    },
    "muteHttpExceptions": true
  });

所以我在这里使用选项portrait=false 打印为横向。不工作。

欣赏水平打印的任何解决方案。

【问题讨论】:

  • 错误也可能与printGoogleDocument函数有关。也提供该代码。
  • @TheMaster 用这些数据更新了帖子。

标签: javascript google-apps-script google-sheets printing google-cloud-print


【解决方案1】:

尝试在票证中包含page_orientation

  var ticket = {
    version: "1.0",
    print: {
      color: {
        type: "STANDARD_COLOR",
        vendor_id: "Color"
      },
      duplex: {
        type: "NO_DUPLEX"
      },
      page_orientation: { //Added
        type:1//or type:"LANDSCAPE"
      }
    }
  };

参考资料:

【讨论】:

  • 不幸的是不能这样工作。你确定格式正确吗?
  • 我试过 png 图像而不是 pdf 并且它水平打印图像但在垂直页面上(打印机默认为横向)。如果有人帮助处理png,那将有所帮助。 pdf或png。
  • @kiki 你也试过type:"LANDSCAPE"吗?您也可以尝试设置dpifit_to_page 选项。如果这些都不起作用,您可以尝试通过手机进行云打印吗?如果是这样,你能达到你想要的结果吗?
  • fit_to_page: { type: 1} 工作。谢谢!它在水平页面上打印水平图表。
  • 但图表周围的空间太大))我尝试使用边距:{ type:“BORDERLESS”或边距:{ type:0 },这是一个错误。你知道如何正确表达吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
相关资源
最近更新 更多