NetSuite — не может ссылаться на изображения из папки

#javascript #netsuite #suitescript

#javascript #netsuite #suitescript

Вопрос:

Мой код:

 function combineExpenseFiles(type){
    try{
        var currentRecordId = nlapiGetRecordId();
        var currentRecord = nlapiLoadRecord('expensereport',currentRecordId);
        var expensesLineItemCount = currentRecord.getLineItemCount('expense');
        var template = '';
        var fileParts = new Array();
        template  = '<?xml version="1.0"?><!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">n';
        template  = '<pdf>n<head>n';
        template  = '</head>n<body>n';
        flag=1;
        for(var i=1;i<=expensesLineItemCount;i  ){
            var fileId = currentRecord.getLineItemValue('expense','expmediaitem',i);
            var file = nlapiLoadFile(fileId); 
            var name = file.getName();

            //var fileUrl = file.getURL();

            nlapiLogExecution('DEBUG','online',file.isOnline());
            var fileUrl = '/core/media/media.nl?id=36333amp;c=3960047amp;h=487697f81e113499d5f4';
            template  = '<img src="';
            template  = nlapiEscapeXML(fileUrl);
            template  = '" width="10%" height="10%"></img>n<br></br><br></br>';
            break;
        }
        template  = '</body>n</pdf>';
        nlapiLogExecution('DEBUG','filename',template);

        var renderer = nlapiCreateTemplateRenderer(); 
        renderer.setTemplate(template); 
        //renderer.addRecord('url',url);
        var xml = renderer.renderToString();
        nlapiLogExecution('DEBUG','xml',xml);
        var combinefile = nlapiXMLToPDF(xml);



        combinefile.setEncoding('UTF-8');
        combinefile.setName('expense_f.pdf');
        nlapiLogExecution('DEBUG','file',combinefile);
        combinefile.setFolder(2221); // Amit_Expenses

        nlapiSubmitFile(combinefile);

    }catch(error){
        //nlapiLogExecution('DEBUG','error1',error.getDetails());
        nlapiLogExecution('DEBUG','error',error.toString());
    }    
}
  

Что делает этот код, так это то, что он принимает все файлы «jpeg», связанные с расходом, и создает шаблон, содержащий все файлы, и генерирует файл .pdf, содержащий все изображения. Код работает отлично.

На данный момент я жестко запрограммировал URL-адрес файла для целей тестирования.

Проблема в том, что код не может ссылаться на изображения для определенных папок. Например, если я ссылаюсь на изображения профиля сотрудников, это ссылается на них, но для некоторых папок код не может ссылаться на изображения этих папок.

Я проверил, что эти папки не являются частными. Пожалуйста, предложите

Ответ №1:

Исходя из моего опыта, мне пришлось установить «Доступно без входа в систему» для любого изображения, которое мне нужно отобразить в формате PDF. Я не могу объяснить более глубокую причину, почему. Я могу только рассказать вам, как мне удалось обойти проблему.

Я полагаю, что это как-то связано с тем, как NetSuite реализовал генератор XML в PDF. Похоже, он не запускается в том же контексте, что и основной скрипт. Но, как я уже говорил выше, я не уверен, почему.

Надеюсь, вы найдете это полезным.

Комментарии:

1. Спасибо, я рассмотрю это 🙂

2. Если файл .pdf, то есть ли способ объединить все файлы .pdf, связанные с расходами, и создать один файл PDF?

3. Вроде как, вы должны исследовать тег pdfset из BFO. BFO — это библиотека xml для преобразования в PDF, которую использует NetSuite.

4. @DeepakGarg можете ли вы отметить мой ответ как правильный, поскольку он сработал.