SuiteScript 2.0 Рендеринг PDF в браузер без сохранения - PullRequest
0 голосов
/ 22 мая 2019

У меня есть Suitelet, рендеринг PDF из различных типов записей, которые в настоящее время не имеют расширенной функциональности PDF.

Все отлично работает, когда я файл.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), но получил тот же результат.

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 23 мая 2019

После сна я поняла, что сделала неправильно.

Для сохранения PDF код остается без изменений.

Чтобы открыть в браузере без сохранения, мне просто нужно было открыть URL-адрес SuiteLet, а не 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);
...