SuiteScript 2.0 在不保存的情况下将 PDF 渲染到浏览器

SuiteScript 2.0 Render PDF to Browser without Saving

我有一个 Suitelet 从目前没有高级 PDF 功能的各种记录类型渲染 PDF。

当我 file.save() 完成的 PDF 时一切正常,但我想要在浏览器中打开 PDF 而不先保存到文件柜的选项。

目前,脚本的动作部分是这样的:

        var templateFile = config.getValue({fieldId:'custrecord_extpdf_template_xml'});

        var templateHTML = file.load({id: templateFile}).getContents();


        var renderer = render.create();

        renderer.templateContent = templateHTML;

        renderer.addRecord('record',rec);
        renderer.addRecord('config',config);


        if (SAVETORECORD) {
            var PDF = renderer.renderAsPdf();
            PDF.folder = config.getValue({fieldId: 'custrecord_extpdf_temp_folder'});
            PDF.name = param.rectype + param.id + '.pdf';
            var fid = PDF.save();
            var attachitem = record.attach({
                record: { type: 'file', id: fid },
                to: { type: param.rectype, id: param.id }
            })

            context.response.write(file.load({id:fid}).url )
        }
        else {
            var PDF = renderer.renderAsPdf();
            PDF.name = param.rectype + param.id + '.pdf';
            context.response.writeFile(PDF,false)
        }

当变量 SAVETORECORD 为真时,PDF 呈现良好,并在新选项卡中打开,附加到记录,并保存到文件柜。

然而,当 SAVETORECORD 为 false 时,一个新的 window 打开但是是空白的。

Suitelet 是使用以下代码从自定义按钮触发器调用的:

        var response = https.get({url: suiteletURL });
        if (response.body) window.open(response.body,'_blank');
        window.location.reload(true);

我试过 context.response.writeFile(PDF,false)context.response.writeFile(PDF,true) 但得到的结果相同。

我在这里错过了什么?

在上面睡了一觉后,我发现我做错了什么。

要保存 PDF,代码保持原样。

要在浏览器中打开而不保存,我只需要从按钮脚本中打开 SuiteLet URL 而不是 response.body:

            if (SAVERECORD) {
                var response = https.get({url: suiteletURL });
                if (response.body) window.open(response.body,'_blank');
            }
            else {
                window.open(suiteletURL,'_blank');
            }

            window.location.reload(true);