【问题标题】:Convert a gdoc into image将文档转换为图像
【发布时间】:2019-08-02 08:04:33
【问题描述】:

有没有办法从谷歌文档创建图像(例如 png)? 我的意思是图像,而不仅仅是 pdf。 GetAS 仅创建 pdf,但如果 contentType 设置为 image/png 或其他等效格式,则会返回错误。 我的(实际上是微不足道的)代码是

function convertFile() {
var SOURCE_TEMPLATE = "1HvqYidpUpihzo_HDAQ3zE5ScMVsHG9NNlwPkN80GHK0";
var TARGET_FOLDER = "1Eue-3tJpE8sBML0qo6Z25G0D_uuXZjHZ";
var source = DriveApp.getFileById(SOURCE_TEMPLATE);
var targetFolder = DriveApp.getFolderById(TARGET_FOLDER);
var target = source.makeCopy(source,targetFolder);
var newFile = DriveApp.createFile(target.getAs('image/png'));
}

当我运行此代码时,我收到以下错误(我的翻译):

不支持从 application/vnd.google-apps.document 到 image/png 的转换。

【问题讨论】:

  • 您希望将每个页面检索为 PNG 数据。我的理解正确吗?顺便问一下,为了正确你的情况,你能提供你当前的脚本吗?
  • 是的,没错。我的脚本很简单:我刚刚验证了 'newFile = DriveApp.createFile(target.getAs('application/pdf'));'创建一个 pdf,但 'newFile = DriveApp.createFile(target.getAs('image/png'));'返回错误。
  • 感谢您的回复。我可以问你关于你的回复吗? 1.target是什么? 2. 可以提供returns an error.的详细信息吗? 3.你可以通过更新在你的问题中添加脚本吗?我认为这将帮助用户思考您的问题。如果您能合作解决您的问题,我很高兴。
  • 感谢您帮助我。我是stackoverflow的新手,所以如果我没有正确提问,我很抱歉。现在我在我的问题中插入了代码和我得到的错误
  • 感谢您回复和更新您的问题。我提出了一个解决方法作为答案。你能确认一下吗?如果此解决方法不是您想要的,我深表歉意。

标签: google-apps-script google-drive-api file-conversion convertapi


【解决方案1】:

这个答案怎么样?

错误原因:

makeCopy() 返回文件对象。 getAs() 不能用于此。这样,错误就发生了。

解决方法:

很遗憾,在现阶段,Google Document 无法直接导出为 PNG 图片。所以需要想办法解决。谷歌文档可以转换为 PDF。这个答案使用这个。作为一种解决方法,我想建议使用外部 API,即 ConvertAPI。我认为使用外部 API,脚本变得简单。这是API的一种方法(PDF to PNG API),可以将PDF数据转换为PNG数据。

例如,当您尝试此操作时,您还可以使用“免费包”进行测试。当您尝试使用“免费套餐”时,请在“免费套餐”注册并找回您的密钥。

示例脚本:

在运行此脚本之前,请检索您的密钥并进行设置。

var secretkey = "###";  // Please set your secret key.

var SOURCE_TEMPLATE = "1HvqYidpUpihzo_HDAQ3zE5ScMVsHG9NNlwPkN80GHK0";
var TARGET_FOLDER = "1Eue-3tJpE8sBML0qo6Z25G0D_uuXZjHZ";
var url = "https://v2.convertapi.com/convert/pdf/to/png?Secret=" + secretkey;
var options = {
  method: "post",
  payload: {File: DriveApp.getFileById(SOURCE_TEMPLATE).getBlob()},
}
var res = UrlFetchApp.fetch(url, options);
res = JSON.parse(res.getContentText());
res.Files.forEach(function(e) {
  var blob = Utilities.newBlob(Utilities.base64Decode(e.FileData), "image/png", e.FileName);
  DriveApp.getFolderById(TARGET_FOLDER).createFile(blob);
});

参考资料:

【讨论】:

  • 我只想补充一点,ConvertAPI 有另一个缩略图生成器 API,可以提取第一页并将其转换为 png 图像,它的工作速度比 PDF 到 PNG 快一点。 Rest API 端点是 v2.convertapi.com/convert/pdf/to/…
  • 感谢它完美运行,有人知道其他具有相同用途的 API 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-29
  • 2012-03-04
  • 1970-01-01
  • 2018-10-17
  • 2011-06-19
  • 2015-02-14
  • 2023-03-25
相关资源
最近更新 更多