package org.joget.plugin.pdf; import org.joget.plugin.base.ApplicationPlugin; import org.joget.plugin.base.DefaultPlugin; import org.joget.plugin.base.PluginProperty; import org.joget.workflow.model.WorkflowAssignment; import com.lowagie.text.Document; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.PdfWriter; import java.io.File; import java.io.FileOutputStream; import java.util.logging.Level; import java.util.logging.Logger; import java.util.Map; import org.joget.commons.util.SetupManager; import org.joget.workflow.util.WorkflowUtil; public class PdfPlugin extends DefaultPlugin implements ApplicationPlugin { public String getName() { return "PDF Plugin"; } public String getVersion() { return "1.0.2"; } public String getDescription() { return "generates PDF"; } public PluginProperty[] getPluginProperties() { PluginProperty[] properties = new PluginProperty[] { new PluginProperty("formDataTable", "Form Data Table", PluginProperty.TYPE_TEXTFIELD, null, ""), new PluginProperty("content", "Content", PluginProperty.TYPE_TEXTAREA, null, null), new PluginProperty("baseDirectory", "Base Directory", PluginProperty.TYPE_TEXTFIELD, null, SetupManager.getBaseDirectory() + File.separator + "pdfPlugin"), new PluginProperty("outputFilename", "Output Filename", PluginProperty.TYPE_TEXTFIELD, null, "#assignment.processId#") }; return properties; } public Object execute(Map properties) { Object result = null; try { String formDataTable = (String) properties.get("formDataTable"); String content = (String) properties.get("content"); String baseDirectory = (String) properties.get("baseDirectory"); String outputFilename = (String) properties.get("outputFilename"); if (baseDirectory == null || baseDirectory.trim().length() == 0) { baseDirectory = SetupManager.getBaseDirectory() + File.separator + "pdfPlugin"; } if (outputFilename == null || outputFilename.trim().length() == 0) { outputFilename = "#assignment.processId#"; } // update variables WorkflowAssignment wfAssignment = (WorkflowAssignment) properties.get("workflowAssignment"); content = WorkflowUtil.processVariable(content, formDataTable, wfAssignment); baseDirectory = WorkflowUtil.processVariable(baseDirectory, formDataTable, wfAssignment); outputFilename = WorkflowUtil.processVariable(outputFilename, formDataTable, wfAssignment); if (!outputFilename.endsWith(content)) { outputFilename += ".pdf"; } //generate pdf Document document = new Document(); File outFile = null; try { new File(baseDirectory).mkdirs(); outFile = new File(baseDirectory, outputFilename); PdfWriter.getInstance(document, new FileOutputStream(outFile)); document.open(); document.add(new Paragraph(content)); } catch (Exception e) { e.printStackTrace(); } finally { document.close(); } return result; } catch (Exception e) { Logger.getLogger(getClass().getName()).log(Level.WARNING, "Error executing plugin", e); return null; } } }