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

如何在NetSuite SuiteScript中压缩PDF与XML文件并存入文件柜?

NetSuite Suitelet 实现PDF+XML文件压缩为ZIP并存储到文件柜

你可以借助NetSuite的N/compress模块,直接将生成的PDF和XML文件打包成ZIP后存入文件柜,无需单独保存两个原文件(如果业务需要保留原文件,也可以保留原保存逻辑,再从文件柜获取文件对象添加到压缩包)。以下是修改后的完整脚本:

/**
*@NApiVersion 2.1
*@NScriptType Suitelet
*/
define(['N/file', 'N/redirect', 'N/record', 'N/runtime', 'N/search', 'SuiteScripts/invoice_module_refactored', 'N/compress'], 
function (file, redirect, record, runtime, search, pdfModule, compress) {

    function onRequest(context) {
        // 获取请求参数中的记录ID和类型
        var recordId = context.request.parameters.recordId;
        log.debug("recordId", recordId);
        var recordType = 'invoice';

        // 生成PDF文件对象
        var pdfFile = pdfModule.getPDF(recordType, recordId);
        log.debug("pdfFile", pdfFile);
        // 注:若无需单独保留原PDF,可跳过单独保存步骤,直接用于压缩

        // 生成XML文件对象
        // 请确保xmlContent变量已通过业务逻辑正确生成XML内容
        var xmlFile = file.create({
            name: 'E-Invoice_' + recordId + '.xml',
            fileType: file.Type.PLAINTEXT,
            contents: xmlContent
        });
        log.debug("xmlFile", xmlFile);
        // 注:若无需单独保留原XML,可跳过单独保存步骤,直接用于压缩

        // 创建ZIP归档对象
        var zipArchive = compress.createArchive({
            type: compress.Type.ZIP
        });

        // 将PDF和XML文件添加到ZIP包
        zipArchive.addFile({file: pdfFile});
        zipArchive.addFile({file: xmlFile});

        // 将ZIP归档转为可保存的文件对象
        var zipFile = file.create({
            name: 'E-Invoice_Package_' + recordId + '.zip',
            fileType: file.Type.ZIP,
            contents: zipArchive.toByteArray()
        });

        // 指定存储的目标文件夹ID
        zipFile.folder = 12823;
        // 保存ZIP文件到文件柜
        var zipFileId = zipFile.save();
        log.debug("zipFileId", zipFileId);
    }

    return {
        onRequest: onRequest
    };
});

关键说明:

  • 压缩核心逻辑:通过compress.createArchive()创建ZIP类型的归档对象,再用addFile()方法将生成的PDF、XML文件对象添加进压缩包
  • 存储优化:如果不需要单独保留PDF和XML原文件,可删除原脚本中的pdfFile.save()和xmlFile.save()步骤,直接用未保存的文件对象打包,减少文件柜冗余存储
  • 变量检查:请确认xmlContent变量已通过你的业务逻辑正确生成XML内容,否则XML文件会为空
  • 文件夹ID:请确认12823是目标存储文件夹的正确ID,按需修改即可

内容的提问来源于stack exchange,提问作者Maira S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:20:19