suitescript2.0 - SuiteScript 2.0 将 PDF 渲染到浏览器而不保存
问题描述
我有一个 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 时,会打开一个新窗口但为空白。
使用以下代码从自定义按钮触发器调用 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);
推荐阅读
- scikit-learn - 如何通过调整决策函数的阈值来调整支持向量分类器(SVC)的预测(svc.predict())?
- python - python中max()、min()函数的正确使用
- laravel - 覆盖 html 模板行为后,我将 AIMEOS 电子商务扩展程序放在 Laravel 文件夹的哪个位置?
- php - 我想动态创建按钮并访问任何特定的
- apache2 - Apache2服务器不工作
- ios - 单击 a 后,我需要覆盖 segue 函数
- c++ - 如何在 Qt 中使用 boost::asio::deadline_timer?
- python - 如何从数据框中找到句子中的最大单词和字符数?
- html - 如何使用 Laravel 样式中的 {{$percentage}} 变量值更改 Bootstrap 进度条宽度?
- android - Android Cotountine Scope 在房间回调 OnOpen 中不起作用