syed_faheem
ServiceNow Employee

For anyone who is facing broken HTML borders functionality in Jakarta (i.e. HTML borders are not showing up), this functionality was broken in Jakarta and then fixed in Kingston. Technical Support has recently released a HotFix for Jakarta (i.e. Jakarta Patch 5 Hotfix 3) which resolves this issue. This Hotfix can be requested from technical support by opening up a support incident.


Hi Syed,



In Geneva the PDF generator worked fine, but now in Jakarta it works, but I'm not getting my Header Images from my template record?



Have you got the same issues?



Gr. Roanld


Hi Ronald, it seems that there is a new restriction on the size of the images in the newer Jakarta version. They are stated here from what i have found: HR Document Templates



It basically states:


  • The logo image to use in your header. The header image can be a maximum of 50px high. If your letterhead includes a logo and text, ensure that the logo image includes the text, as you can only configure the image in the header.
  • The logo image to use in your footer, if applicable. The logo image can be a maximum of 15px high. You can configure both an image and text in the footer.


Also the way they accept images has changed from the previous versions. Take a look at the HR plugins example, but doing a direct image works better like:


this.headerImage = instance + "Print-logo-workorder.jpgx";



I ended up sending in the image like this:


var headerId = gr.u_header.getDisplayValue() ? gr.u_header.getDisplayValue().substring(0, gr.u_header.getDisplayValue().indexOf('.iix')) : '';


this.headerImage = this._getTemplateImage(headerId);



And the function invoked looked like this:


  _getTemplateImage: function(attachmentSysId){


// gs.addInfoMessage('Going to add image of ID= ' + attachmentSysId);


if(gs.nil(attachmentSysId))


return '';


var imageAttachment = new GlideRecord('sys_attachment');


imageAttachment.get(attachmentSysId);


var binaryData = new GlideSysAttachment().getBytes(imageAttachment);


var base64Image = GlideStringUtil.base64Encode(binaryData);


if (!gs.nil(base64Image))


return '<img src=\"data:image/png;base64,'+ base64Image +   '"/>';


else


gs.info('Issue found with getting the image');


return '';


},


DRL
Tera Contributor

For what I can see, HTML borders do work - but they do only with the tag attribute (<table border="1"...) and not with the CSS styling (<table style="border:1px solid black;"...)



Does anybody know how to add a page break / new page though? We are discussing the issue with SNsupport but nothing seems to work.


jake_mckenna
ServiceNow Employee

In Jakarta and Kingston, the best way to add a page break was to invoke a new function added in the GeneralPDF script include to add this functionality to the generator. Below is what i had to do, and will admit this was a customization to the OOB since i edited the GeneralPDF script includes.



In GeneralPDF i changed the addHTML function to look like this around line 290:


var objects = this.htmlWorker.parseToList(contentReader);



for ( var i = 0; i < objects.size(); i += 1) {


var element = objects.get(i);


if(element.toString() == "[{!Page_Break}]") {


//adding a new page if this element is found!


this.document.addNewPage();


} else {


this.document.add(element);


}


}


In my template i added a line like this in the necessary spot:


{!Page_Break}