通过 google-apps-script 将 goole 文档转换为 pdf 时如何删除不需要的额外页面?

问题描述 投票:0回答:2

我有一个旧脚本(除其他外)可以将 google 文档转换为 pdf。 以前工作正常,但现在文件的 pdf 版本中出现了两个额外的空白页。

我刚刚发现这个问题也会影响谷歌文档中的“下载为pdf”菜单选项。在这种情况下有很多解决方法,但我需要 google-apps-script 的解决方法。

这篇文章中,类似问题的解决方案似乎涉及页面大小的微调。我尝试过类似的方法,但它并不适用。 我还尝试了一些其他(随机的)页面大小和边距变化,但无济于事。

下面我粘贴了一个最小的工作示例。它应该在您的主驱动器文件夹中创建一个文档文件“test”及其 pdf 版本“test.pdf”。

非常感谢任何摆脱这两个额外页面的帮助。

谢谢

function myFunction() {
  // this function 
  // - creates a google document "test", 
  // - writes "this is a test" inside it
  // - saves and closes the document
  // - creates a pdf version of the document, called "test.pdf"
  //
  // the conversion is ok, except two extra blank pages appear in the pdf version.


  // create google document
  var doc = DocumentApp.create('test');
  var docFile = DriveApp.getFileById( doc.getId() );
  // set margins (I need landscape layout)
  // this is an attempt to a solution, inspired by https://stackoverflow.com/questions/18426817/extra-blank-page-when-converting-html-to-pdf
  var body = doc.getBody();
  body.setPageHeight(595.2).setPageWidth(841.8);   
  var mrg = 40; // in points
  body.setMarginTop(mrg).setMarginBottom(mrg);   
  body.setMarginLeft(mrg).setMarginRight(mrg);   
  // write something
  body.appendParagraph('this is a test').setHeading(DocumentApp.ParagraphHeading.HEADING2).setAlignment(DocumentApp.HorizontalAlignment.CENTER);  
  // save and close file
  doc.saveAndClose();
  // convert file to pdf
  var docblob = docFile.getAs('application/pdf');
  // set pdf name
  docblob.setName("test.pdf");
  // save pdf file
  var file = DriveApp.createFile(docblob);

}
pdf google-apps-script google-docs
2个回答
1
投票

我在 8 个月前的 Google 产品论坛上的这篇文章中找到了问题的根源和解决方案。

如果未选中视图 -> 打印布局中的选项,多余的页面会出现在 pdf 中。 我用我的账户和同事的账户做了一些进一步的测试。 结果一致:

  1. 未选中查看 -> 打印布局时,文档的 pdf 版本中会出现两页额外的页面
  2. 当选中查看 -> 打印布局时,文档的 pdf 版本具有预期的页数。
  3. 此设置还会影响 Google Apps 脚本中的 documentApp 服务。也就是说:仅当选中 Google 文档中的“查看->打印布局”选项时,上述脚本才会生成预期的 pdf 版本。

我不明白这种行为如何成为一个“功能”,所以我认为这是一个错误。顺便说一句,“打印布局”似乎对我的文档没有任何明显的影响(除了弄乱 pdf 版本)。令我惊讶的是,8 个月后,这个错误仍然存在。

上面的数字 3 让我感到惊讶,因为我认为在(任何)谷歌文档中手动设置的选项不会影响我的脚本。 我目前正在寻找一种从脚本内部设置“打印布局”选项的方法。到目前为止我还没有运气。


0
投票

这太烦人了。他们为什么要做这样的蠢事?他们应该在推出文档选项卡之前更好地测试其功能。

© www.soinside.com 2019 - 2024. All rights reserved.