我有一个表单,用户可以在其中放入图片。这些图片使用谷歌驱动器添加到临时文档中。 然后,该临时文档将被传输为 PDF 文件。 之后,PDF 将通过电子邮件发送。
有时此附件对于电子邮件而言太大。 有没有办法压缩 PDF 文件(blob)的大小? 或者压缩图像文件大小(图像也是一个blob)?
图片:
var blob = DriveApp.getFileById(splitText[0]).getBlob();
body.appendImage(blob).setWidth(sizes).setHeight(sizes);
const blobPDF = newTempFile.getAs(MimeType.PDF);
const pdfFile = pdfFolder.createFile(blobPDF).setName( info[2] + "---" + "Opmeting");
从
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 文件的大小减小。