pdf - 如何在单击按钮时显示自定义 PDF 模板

标签 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){  


    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()); 
}

提前致谢

最佳答案

我最近的做法:

  • 用户事件添加调用 suitelet 的按钮 (window.open('suitelet URL'))

  • Suitelet 呈现自定义模板

您可以在 Suitelet 中进行这样的渲染(参数:请求、响应),custscript_pdf_template 使用 NetSuite Advanced HTML 语法指向 Cabinet 上的 html 文件

    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)

关于pdf - 如何在单击按钮时显示自定义 PDF 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38047521/

相关文章:

javascript - 根据下拉菜单中的选项通过 SuiteScript 隐藏自定义列字段

javascript - 如何在套件中使用 nlapiXMLToPDF

c# - 将图像添加到单元格 - iTextSharp

javascript - 如何使用 javascript 将必填字段设置为 false

python - 在 python3 中通过 PDF 写入文本

javascript - 如何在 NetSuite 或 javascript 中解码私钥的 BASE64、PCKS-8 表示形式?

javascript - 引用错误 : nlapiLoadFile is not defined error In Netsuite

javascript - 如何在 Suitelet 打印输出 (Netsuite) 中对行项目使用高阶函数而不是 FOR 循环?

swift - 如何在 Swift 中获取 PDF 中的所有文本?

java - 在 Chrome 的 Vaadin 子窗口中显示嵌入的 PDF