我有一个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为true时,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)
,但得到的结果相同。
我在这里想念什么?
答案 0 :(得分:0)
睡了之后,我发现做错了什么。
要保存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);