Merge Multiple PDF
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-27-2023 05:09 AM
How to Merge multiple PDF's and the merged pdf needs to be visible in the request form in attachment section.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-27-2023 05:20 AM
You can merge multiple PDF files and attach the merged PDF file to a ServiceNow request form using a combination of ServiceNow's document API and workflow activities. Here are the general steps:
Create a workflow with a script activity to merge the PDF files. You can use a third-party library such as iText or PDFBox to perform the merging. Here is some example code using the iText library:
// Create a new document
Document document = new Document();
// Create a PdfCopy object to merge the files
PdfCopy copy = new PdfCopy(document, new FileOutputStream("merged.pdf"));
document.open();
// Loop through the files to be merged
String[] fileNames = {"file1.pdf", "file2.pdf", "file3.pdf"};
for (String fileName : fileNames) {
// Open the input PDF
PdfReader reader = new PdfReader(fileName);
// Merge the input PDF into the output document
copy.addDocument(reader);
// Close the input PDF
reader.close();
}
// Close the output document
document.close();
Use a document API call to upload the merged PDF file to the ServiceNow instance. You can use the sn_doc_api global object to make the API call. Here is some example code:
// Set up the API parameters
var file = new GlideSysAttachment();
file.write('merged.pdf', 'application/pdf', new Packages.java.io.File('merged.pdf'));
var gr = new GlideRecord('sys_attachment');
gr.initialize();
gr.table_name = 'sc_request';
gr.table_sys_id = current.sys_id;
gr.file_name = 'merged.pdf';
gr.content_type = 'application/pdf';
gr.size_bytes = file.getSize();
gr.sys_created_by = gs.getUserID();
gr.sys_created_on = gs.nowDateTime();
// Insert the attachment record and upload the file
var attachmentSysId = gr.insert();
file.write(gr.sys_id);
Set the attachment field on the request form to the attachment record created in step 2. You can use a script to set the value of the field to the attachment record sys_id. Here is some example code:
// Set the value of the attachment field to the attachment record sys_id
var attachmentSysId = gr.sys_id;
current.variables.attachment = 'sys_attachment:' + attachmentSysId;
If my answer solved your issue, please mark my answer as Correct & Helpful based on the Impact.
Thanks
Ravi Gaurav
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-27-2023 09:50 PM
All the above scripts should be written in workflow run script?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-15-2024 12:25 AM
Hello @dharani2607
Did you manage to merge PDFs in Servicenow ?
I have a similar requirement. It would be of great help if you have a solution.
Thanks,
Aly
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-03-2024 02:53 PM
Hello Dharani
We have similar requirments where we need to merge multiple PDF attchments into a single PDF.
Did you manage to implement merge PDF?
Any lead or advice will really help us.
Thanks!
Sanjay