如何在单击按钮时显示自定义PDF模板
我想在新窗口中显示PDF模板,同时单击销售订单中的按钮。我使用用户事件脚本在销售订单流程中创建了按钮。在那之后我就不能继续了。单击销售订单时,是否可以在新窗口中显示自定义PDF模板 我的代码:如何在单击按钮时显示自定义PDF模板,pdf,netsuite,suitescript,Pdf,Netsuite,Suitescript,我想在新窗口中显示PDF模板,同时单击销售订单中的按钮。我使用用户事件脚本在销售订单流程中创建了按钮。在那之后我就不能继续了。单击销售订单时,是否可以在新窗口中显示自定义PDF模板 我的代码: USER EVENT SCRIPT: // creating button in user event script before load event in view mode unction userEventBeforeLoad(type, form, request){
USER EVENT SCRIPT:
// creating button in user event script before load event in view mode
unction userEventBeforeLoad(type, form, request){
if(type == 'view'){
var internalId = nlapiGetRecordId();
if (internalId != null) {
var createPdfUrl = nlapiResolveURL('SUITELET', 'customscript_back0rdered_itm_pdf', 'customdeploy_backord_itm_pdf_dep', false);
createPdfUrl += '&id=' + internalId;
//---add a button and call suitelet on click that button and it will open a new window
var addButton = form.addButton('custpage_printpdf', 'Print PDF', "window.open('" + createPdfUrl + "');");
}
else {
nlapiLogExecution('DEBUG', 'Error', 'Internaal id of the record is null');
}
}
}
SUITELET SCRIPT:
function suitelet(request, response){
var xml = "<?xml version=\"1.0\"?>\n<!DOCTYPE pdf PUBLIC \"-//big.faceless.org//report\" \"report-1.1.dtd\">\n";
xml += "<pdf>";
xml += "<head><macrolist><macro id=\"myfooter\"><p align=\"center\"><pagenumber /></p></macro></macrolist></head>";
xml += "<body size= \"A4\" footer=\"myfooter\" footer-height=\"0.5in\">";
var record = request.getParameter('internalId');
xml +="record"; //Add values(in string format) what you want to show in pdf
xml += "</body></pdf>";
var file = nlapiXMLToPDF(xml);
response.setContentType('PDF', 'Print.pdf ', 'inline');
response.write(file.getValue());
}
用户事件脚本:
//在视图模式下加载事件之前在用户事件脚本中创建按钮
函数userEventBeforeLoad(类型、窗体、请求){
如果(类型==“视图”){
var internalId=nlapiGetRecordId();
if(internalId!=null){
var createPdfUrl=nlapisolveurl('SUITELET','customscript\u back0ordered\u itm\u pdf','customdeploy\u backorder\u itm\u pdf\u dep',false);
createPdfUrl+='&id='+internalId;
//---添加一个按钮并单击该按钮调用suitelet,它将打开一个新窗口
var addButton=form.addButton('custpage_printpdf','printpdf','window.open('“+createPdfUrl+”);”);
}
否则{
nlapiLogExecution('DEBUG','Error','Internaal id为null');
}
}
}
SUITELET脚本:
函数suitelet(请求、响应){
var xml=“\n\n”;
xml+=“”;
xml+=“”;
xml+=“”;
var record=request.getParameter('internalId');
xml+=“记录”;//添加要在pdf中显示的值(字符串格式)
xml+=“”;
var file=nlapimmltopdf(xml);
response.setContentType('PDF','Print.PDF','inline');
write(file.getValue());
}
提前感谢我最近的做法:
- 用户事件添加调用suitelet的按钮(window.open('suitelet URL'))
- Suitelet呈现自定义模板
var template = nlapiGetContext().getSetting('SCRIPT', 'custscript_pdf_template');
var purchaseOrder = nlapiLoadRecord('purchaseorder', tranId);
var xmlTemplate = nlapiLoadFile(template);
var renderer = nlapiCreateTemplateRenderer();
var file;
xmlTemplate = xmlTemplate.getValue();
renderer.setTemplate(xmlTemplate);
renderer.addRecord('record', purchaseOrder);
xmlTemplate = renderer.renderToString();
file = nlapiXMLToPDF(xmlTemplate);
resObj = file.getValue();
response.setContentType('PDF', 'printOut.pdf', 'inline');
response.write(resObj)
在代码中,除了创建一个按钮并记录状态之外,您什么也不做。你的代码在哪里可以阅读/下载?HIi pipechang,我根据你的回答做了逻辑:单击用户事件脚本中的按钮,它会在新窗口中打开suitelet,并尝试渲染以使用suitelet创建自定义模板,但我知道如何做,你能给出一个示例代码吗