You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Apps Script中压缩PDF或图片Blob大小?

解决Google Apps Script中PDF/图片Blob体积过大问题

一、压缩上传的图片Blob

在将图片插入临时文档前,直接对图片Blob进行压缩,可通过调整质量、格式来减小体积:

方法1:使用内置工具压缩图片

利用Utilities.compress()方法对Blob进行压缩,可指定压缩质量(0-100,数值越小压缩率越高):

var originalBlob = DriveApp.getFileById(splitText[0]).getBlob();
// 压缩图片,质量设为50(可根据需求调整)
var compressedBlob = Utilities.compress(originalBlob, {quality: 50});
body.appendImage(compressedBlob).setWidth(sizes).setHeight(sizes);

方法2:转换图片格式并调整质量

如果原图是PNG等无损格式,转成JPEG并降低质量能大幅减小体积:

var originalBlob = DriveApp.getFileById(splitText[0]).getBlob();
// 转换为JPEG格式,结合压缩工具优化质量
var compressedBlob = Utilities.compress(originalBlob.getAs(MimeType.JPEG), {quality: 60});
body.appendImage(compressedBlob).setWidth(sizes).setHeight(sizes);

二、压缩PDF Blob

直接从Google Docs转PDF时,可通过设置导出参数优化体积,重点压缩其中的图片:

方法:使用Drive高级服务导出PDF(需先启用)

  1. 在Google Apps Script编辑器中,点击「资源」→「高级Google服务」,启用Drive API。
  2. 修改PDF导出代码,添加优化参数:
// 定义PDF导出优化参数
var exportOptions = {
  jpegQuality: 50, // 图片质量0-100
  useContentOnly: true, // 只导出核心内容,忽略页眉页脚
  omitBackground: true, // 移除文档背景(如果有)
  pageSize: 'A4' // 指定标准页面尺寸,减少空白占比
};

// 导出压缩后的PDF Blob
var blobPDF = Drive.Files.export(newTempFile.getId(), MimeType.PDF, exportOptions);
const pdfFile = pdfFolder.createFile(blobPDF).setName(info[2] + "---" + "Opmeting");

补充方案

如果无法启用Drive API,先确保插入文档的图片已按第一部分方法压缩,再转PDF,生成的文件体积也会相应减小。


内容的提问来源于stack exchange,提问作者Lars Dilweg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 09:27:08