Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在suitelet中使用nlapiXMLToPDF_Javascript_Netsuite_Suitescript - Fatal编程技术网

Javascript 如何在suitelet中使用nlapiXMLToPDF

Javascript 如何在suitelet中使用nlapiXMLToPDF,javascript,netsuite,suitescript,Javascript,Netsuite,Suitescript,目前正在使用Suitescript 1.0创建邮件合并pdf生成器。这就是我构建它的方式——有4个脚本(1个用户事件、1个客户端脚本和2个Suitelet)。 用户事件脚本生成一个下拉菜单,显示它部署到的任何记录上的所有可用模板 function beforeLoad(type, form){ var folderId = "folderId"; var filters = new Array(); filters[0] = new nlobjSearchFil

目前正在使用Suitescript 1.0创建邮件合并pdf生成器。这就是我构建它的方式——有4个脚本(1个用户事件、1个客户端脚本和2个Suitelet)。 用户事件脚本生成一个下拉菜单,显示它部署到的任何记录上的所有可用模板

function beforeLoad(type, form){

  var folderId = "folderId";
  var filters = new Array();
  filters[0] = new nlobjSearchFilter('internalid', null, 'is', folderId);
  
  var columns = new Array();
  var filename = new nlobjSearchColumn('name', 'file');
  var file_id = new nlobjSearchColumn('internalid', 'file');
  
  
  var fieldId = "custpage_mail_merge_dropdown";
  var fieldLabel = "Mail Merge Dropdown";
  

  var select = form.addField(fieldId, 'select', fieldLabel);

  columns[0] = filename;
  columns[1] = file_id;
  
  var searchResults = nlapiSearchRecord('folder', null, filters, columns);
  if(searchResults){
    for(var i = 0; i < searchResults.length; i++){
      var f = searchResults[i];
      //add values to the dropdown field created earlier in the UI
      
      select.addSelectOption(f.getValue(file_id), f.getValue(filename))
    }
  }

}
第一个suitelet的目的是加载从下拉列表中选择的模板并将其返回到客户端,在客户端使用ejs.render()进行转换

SUITELET 1

function mail_merge(req, res){
  
  var fileName = req.getParameter('fileName');
  
  if(fileName){
    var fileId = "Templates__/"+fileName;
    var load_file = nlapiLoadFile(fileId);
    var fileContent = load_file.getValue();
    res.write(fileContent);
    nlapiLogExecution("DEBUG", "STATUS", "Suitelet script activated : "+fileName);
  }  

  
}

第二个suitelet(应该是)根据传递给客户端脚本的第一个suitelet转换后的内容,帮助创建PDF文档。 SUITELET 2

function pdf_mail_merge(req, res){
    

    var ejsCompiled = req.getParameter('ejsCompiled');
    //Split by </pdf> due to unexpected string tagging along with file content
    ejsCompiled = ejsCompiled.split("</pdf>")[0];
    ejsCompiled +="</pdf>";
    if(ejsCompiled){
      nlapiLogExecution('DEBUG', 'STATUS', "EJS Compiled "+ejsCompiled);
      try{
      var pdf_file = nlapiXMLToPDF(ejsCompiled);
      }catch(err){
        nlapiLogExecution('DEBUG', 'STATUS', err);
      }
      res.setContentType("PDF", "somename.pdf");
      res.write(pdf_file.getValue());
      nlapiLogExecution('DEBUG', 'STATUS', "Second script activated "+JSON.stringify(pdf_file))
    }  
  
    
  }
  
功能pdf\u邮件\u合并(req,res){
var ejsCompiled=req.getParameter('ejsCompiled');
//由于意外的字符串标记和文件内容,按拆分
ejsCompiled=ejsCompiled.split(“”[0];
ejsCompiled+=“”;
如果(ejsCompiled){
nlapiLogExecution('DEBUG','STATUS','EJS Compiled'+ejsCompiled);
试一试{
var pdf_file=nlapiXMLToPDF(ejsCompiled);
}捕捉(错误){
nlapiLogExecution('DEBUG','STATUS','err);
}
res.setContentType(“PDF”、“somename.PDF”);
res.write(pdf_file.getValue());
nlapiLogExecution('DEBUG','STATUS','Second script activated'+JSON.stringify(pdf_文件))
}  
}
在从下拉列表中选择选项时,我收到以下消息: “在此页上运行的脚本中发生意外错误…意外的\u错误”

这是用于测试的模板。这正是nlapiXMLToPDF将用作参数的字符串

<pdf>
    <head>

    </head>
    <body>
        <h1>Template One</h1>
    </body>
</pdf>

模板一

这就是让我困惑的地方,这根弦对我来说似乎很好,但我一直在犯这个奇怪的错误。如果你们中的任何人能够提供任何关于问题可能是什么的见解,我们将不胜感激。请原谅我的长篇大论,我认为发布用于解决此问题的大部分代码会很有用。

您的模板似乎缺少BFO模板引擎所需的XML和DOCTYPE声明(请参阅第8页)

尝试在模板字符串的末尾添加以下内容:

<?xml version="1.0"?>
<!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">

<?xml version="1.0"?>
<!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">