Reputation: 228
I am able to render Advanced PDF template/Email Template but not Transaction Forms PDF Layouts. I tried below:
var renderer = render.create();
renderer.setTemplateById(104);
var fileObj = renderer.renderAsPdf();
But I get Missing_PDF_Parameter error.
Where am I going wrong?
Upvotes: 4
Views: 3540
Reputation: 1
Here's a sample working snippet which prints the Invoice PDF and saves a copy in the File Cabinet. For invoices, the Subsidiary record has to be added if your PDF Template includes subsidiary values in it.
var idInvoice = ''; //Invoice ID
var sInvNum = ''; //File Name
var idFolder = ''; //File Cabinet Folder
var nPDFTemplateId = 1; //Integer value of the PDF Template Internal ID
var recInv = record.load({type: 'invoice', id: idInvoice});
var idSubsidiary = recInv.getValue({fieldId: 'subsidiary'}); //Subsidiary ID
var recSubsidiary = record.load({type: 'subsidiary', id: idSubsidiary});
var rendererInv = render.create();
rendererInv.addRecord('subsidiary', recSubsidiary);
rendererInv.addRecord('record', recInv);
rendererInv.setTemplateById(nPDFTemplateId);
var pdfFileInv = rendererInv.renderAsPdf();
pdfFileInv.folder = idFolder;
pdfFileInv.isOnline = true;
pdfFileInv.name = sInvNum;
idFileInv = pdfFileInv.save();
Upvotes: 0
Reputation: 2250
Glancing through the docs, it looks like you are missing the actual transaction record that you want to render, as well as the PDF template code. I tested with using their XML from the docs and it worked for me. Try something like the below.
require(['N/render','N/record'],function(render,record){
function testing(){
var xmlStr="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<!DOCTYPE pdf PUBLIC \"-//big.faceless.org//report\" \"report-1.1.dtd\">\n" +
"<pdf lang=\"ru-RU\" xml:lang=\"ru-RU\">\n" + "<head>\n" +
"<link name=\"russianfont\" type=\"font\" subtype=\"opentype\" " +
"src=\"NetSuiteFonts/verdana.ttf\" " + "src-bold=\"NetSuiteFonts/verdanab.ttf\" " +
"src-italic=\"NetSuiteFonts/verdanai.ttf\" " + "src-bolditalic=\"NetSuiteFonts/verdanabi.ttf\" " +
"bytes=\"2\"/>\n" + "</head>\n" +
"<body font-family=\"russianfont\" font-size=\"18\">\n??????? ?????</body>\n" + "</pdf>";
var renderer=render.create();
renderer.templateContent=xmlStr;
renderer.addRecord('record',record.load({
type:record.Type.INVOICE,
id:123456789
}));
var invoicePdf=renderer.renderAsPdf();
}
testing();
});
Link to render docs: 2.0 render.TemplateRenderer
Upvotes: 1