how to get export to pdf into zip with all attchment

ankit_gupta1
Tera Expert

i have   a requirement in which i have a UI action on my table , so when ever i click on that button i will get (form pdf + activity pdf + all attachment) into a one zip file that might be downloadable

1 ACCEPTED SOLUTION

ankit_gupta1
Tera Expert

first create a ui action that attach (export to pdf) form pdf in your attachment and call processor



****************************************


var rm = new sn_ws.RESTMessageV2();



rm.setHttpMethod('GET');



var url = gs.getProperty("glide.servlet.uri") + current.getTableName()+ '.do?PDF&sys_id=' + current.sys_id;



rm.setEndpoint(url);



rm.setBasicAuth(gs.getProperty('glide.user.userid'), gs.getProperty('glide.user.password'));



rm.saveResponseBodyAsAttachment(current.getTableName(),current.sys_id,current.number+".pdf");



var response = rm.execute();



action.setRedirectURL('exportAttachmentsToZip.do?sysparm_sys_id=' + current.sys_id + '&sysparm_table=' + current.getTableName() + '&sysparm_num=' + current.number);




*******************************************



create a new processor "exportAttachmentsToZip"




************************************************************


var sysid = g_request.getParameter('sysparm_sys_id');


var table = g_request.getParameter('sysparm_table');


var num = g_request.getParameter('sysparm_num');



//var url = table + '.do?PDF&sys_id=' + sysid;  


  //window.open(url);



var theRecord = new GlideRecord(table);


theRecord.addQuery('sys_id', sysid);


theRecord.query();


theRecord.next();



var zipName = 'attachments.zip';



var StringUtil = GlideStringUtil;



var gr = new GlideRecord('sys_attachment');


gr.addQuery('table_sys_id', theRecord.sys_id);


gr.addQuery('table_name', theRecord.getTableName());


gr.query();



if (gr.hasNext()){


      g_response.setHeader('Pragma', 'public');


      g_response.addHeader('Cache-Control', 'max-age=0');


      g_response.setContentType('application/octet-stream');


      g_response.addHeader('Content-Disposition', 'attachment;filename=' + zipName);


      var out = new Packages.java.util.zip.ZipOutputStream(g_response.getOutputStream());


      var count=0;


      while (gr.next()){


              var sa = new GlideSysAttachment();


              var binData = sa.getBytes(gr);


             


              var file = gr.file_name;


              this.addBytesToZip(out, zipName, file, binData);


              count ++;


      }


      // Complete the ZIP file


      out.close();



var gr1 = new GlideRecord('sys_attachment');


gr1.addQuery('table_sys_id', theRecord.sys_id);


gr1.addQuery('table_name', theRecord.getTableName());


gr1.addQuery('file_name', num+'.pdf');


gr1.query();


if(gr1.next())


  gr1.deleteRecord();




}



function addBytesToZip (out, dir, file, stream){


      // Add ZIP entry to output stream.


      out.putNextEntry(new Packages.java.util.zip.ZipEntry(file));


      out.write(stream, 0, stream.length);


      out.closeEntry();


}




thats work fine . Plz remember user(userid,pass) must have admin role


View solution in original post

5 REPLIES 5

Hello Namrata,

 

Please check below property you have created or not.

gs.getProperty('glide.user.userid'),

gs.getProperty('glide.user.password'));