在Google脚本中压缩PDF的总大小

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

我有一个表单,用户可以在其中放入图片。这些图片使用谷歌驱动器添加到临时文档中。 然后,该临时文档将被传输为 PDF 文件。 之后,PDF 将通过电子邮件发送。

有时此附件对于电子邮件而言太大。 有没有办法压缩 PDF 文件(blob)的大小? 或者压缩图像文件大小(图像也是一个blob)?

图片:

var blob   = DriveApp.getFileById(splitText[0]).getBlob();
body.appendImage(blob).setWidth(sizes).setHeight(sizes);

PDF

const blobPDF = newTempFile.getAs(MimeType.PDF); 
const pdfFile = pdfFolder.createFile(blobPDF).setName( info[2] + "---" +  "Opmeting");
google-apps-script pdf compression image-compression
1个回答
0
投票

Image: just adds an image from a google drive url. The image is added on a new line in a temp document. the PDF makes from that temp doc a blob. Then a PDF en renames it.
,不幸的是,我无法正确想象你的整个脚本。但是,如果您的显示脚本包含在您的实际脚本中,请测试以下修改。

来自:

var blob = DriveApp.getFileById(splitText[0]).getBlob();
body.appendImage(blob).setWidth(sizes).setHeight(sizes);

致:

var blob = DriveApp.getFileById(splitText[0]).getBlob();
,它假设
splitText[0]
是您的图像文件的文件ID。

var blob = UrlFetchApp.fetch(`https://drive.google.com/thumbnail?sz=w512&id=${splitText[0]}`, { headers: { authorization: "Bearer " + ScriptApp.getOAuthToken() } }).getBlob(); // The endpoint is from https://stackoverflow.com/a/31504086
body.appendImage(blob).setWidth(sizes).setHeight(sizes);

在这种情况下,它假设变量

sizes
已经在其他地方声明了。

或者,下面的修改如何?

var blob = UrlFetchApp.fetch(`https://drive.google.com/thumbnail?sz=w${sizes}&id=${splitText[0]}`, { headers: { authorization: "Bearer " + ScriptApp.getOAuthToken() } }).getBlob(); // The endpoint is from https://stackoverflow.com/a/31504086
body.appendImage(blob);
  • 通过此修改,
    splitText[0]
    的图像文件的大小被更改并放入
    appendImage(blob)
    的文档中。在本变形例中,改变(缩小)放入文档中的图像的尺寸。我猜测这可能会导致导出的 PDF 文件的大小减小。

注:

  • 不幸的是,我无法正确想象你的整个剧本。所以,这只是我的猜测。
© www.soinside.com 2019 - 2024. All rights reserved.