Dynamic Document Generator

Overview

This version is for Appian 23.2 and above. Cloud customers on a lower version of Appian that want to install this plugin should open a support case. Self-managed customers can find the latest jar for Appian 23.1 and lower version in the folder pre-23.2

Convert, merge and generate DOCX, PDF and XML files automatically in an Appian process

Key Features & Functionality

  • PDF from single DOCX with Fonts
    • Convert multiple DOCX files into a single PDF. Please note that the translation from DOCX to PDF is not always 1:1. The template may need to be tweaked or simplified to achieve the desired results.
  • PDF from DOCX without Fonts
    • Convert multiple DOCX files into a single PDF. Please note that the translation from DOCX to PDF is not always 1:1. The template may need to be tweaked or simplified to achieve the desired results. This will not support fonts.
  • PDF from XSL-FO Transformation
    • Uses XSLT to convert an XML to XSL-FO which is then converted to PDF
  • PDF from HTML
    • Converts an HTML document into a single page PDF.
  • PDF from HTML Transformation
    • Uses XSLT to convert an XML to HTML which is then converted to PDF
  • Text Doc from XSLT
    • Uses XSLT to convert an XML to a plain text document (such as HTML, another XML doc, etc).
  • DOCX from XHTML With Styling
    • Converts a valid XHTML file into a DOCX, allowing you to provide your own template file for style reference. Useful for creating dynamic documents that are editable
  • DOCX Merge
    • Merges one or more DOCX files together. If a header or footer exists in any document, they will be removed during the merge process.
    • A configurable separator can be specified: none, line break or page break

Function: xsltransform - Transform source XML using XSL Transform

Anonymous
  • v1.8.1 Release Notes
    • Fixed issue across multiple smart services that would result in a corrupt DOCX.

  • Hi everyone,
    I tried to use the XML:FO to PDF transformations as suggested elsewhere in the forums, but using the sample files provided in the same suggestion, I got stuck with this error:

    2020-06-22 14:46:22,525 [ThreadPoolTaskExecutor-1823] ERROR com.appiancorp.process.workpoller.WorkItemListener - The following exception occurred while attempting to complete work item [(WorkId: 226, WorkType: {Process Id:268491485,Point Id:268446635} Activity Metadata:{Id:268446635,ACPs:{ActivityClassParameter[name=XmlDocument,it=13,v=149781],ActivityClassParameter[name=XslDocument,it=13,v=149998],ActivityClassParameter[name=XslParameters,it=5147,v=<null>],ActivityClassParameter[name=CreateNewDocument,it=26,v=1],ActivityClassParameter[name=NewDocumentName,it=3,v=test01.pdf],ActivityClassParameter[name=NewDocumentDesc,it=3,v=xyz],ActivityClassParameter[name=SaveInFolder,it=12,v=149780],ActivityClassParameter[name=ExistingDocument,it=13,v=<null>],ActivityClassParameter[name=PauseOnError,it=26,v=0]},ARVs:{ActivityReturnVariable[name=ErrorOccurred,it=26,v=<null>],ActivityReturnVariable[name=ErrorText,it=3,v=],ActivityReturnVariable[name=NewDocumentCreated,it=13,v=<null>]}}, Response: null, ServerName: execution01)] - Exception: 
    javax.resource.spi.work.WorkCompletedException: java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "org.apache.batik.dom.AbstractDocument.createEvent(Ljava/lang/String;)Lorg/w3c/dom/events/Event;" the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) of the current class, org/apache/batik/anim/dom/SVGOMDocument, and the class loader (instance of <bootloader>) for interface org/w3c/dom/events/DocumentEvent have different Class objects for the type org/w3c/dom/events/Event used in the signature
    	at org.springframework.jca.work.SimpleTaskWorkManager$DelegatingWorkAdapter.run(SimpleTaskWorkManager.java:247)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	at java.lang.Thread.run(Thread.java:748)
    Caused by: java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "org.apache.batik.dom.AbstractDocument.createEvent(Ljava/lang/String;)Lorg/w3c/dom/events/Event;" the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) of the current class, org/apache/batik/anim/dom/SVGOMDocument, and the class loader (instance of <bootloader>) for interface org/w3c/dom/events/DocumentEvent have different Class objects for the type org/w3c/dom/events/Event used in the signature
    	at org.apache.batik.anim.dom.SVGDOMImplementation.createDocument(SVGDOMImplementation.java:140)
    	at org.apache.fop.fo.extensions.svg.SVGDOMContentHandlerFactory$Handler.startElement(SVGDOMContentHandlerFactory.java:121)
    	at org.apache.fop.fo.FOTreeBuilder$MainFOHandler.startElement(FOTreeBuilder.java:317)
    	at org.apache.fop.fo.FOTreeBuilder.startElement(FOTreeBuilder.java:179)
    	at org.apache.xml.serializer.ToXMLSAXHandler.closeStartTag(ToXMLSAXHandler.java:206)
    	at org.apache.xml.serializer.ToSAXHandler.flushPending(ToSAXHandler.java:279)
    	at org.apache.xml.serializer.ToXMLSAXHandler.startPrefixMapping(ToXMLSAXHandler.java:350)
    	at org.apache.xml.serializer.ToXMLSAXHandler.startPrefixMapping(ToXMLSAXHandler.java:320)
    	at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1317)
    	at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402)
    	at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376)
    	at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402)
    	at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376)
    	at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402)
    	at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376)
    	at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402)
    	at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376)
    	at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402)
    	at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376)
    	at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402)
    	at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376)
    	at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395)
    	at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178)
    	at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402)
    	at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2272)
    	at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1358)
    	at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:711)
    	at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1275)
    	at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1253)
    	at com.appiancorp.ps.xmlfo.util.XmlFoConverter.transform(XmlFoConverter.java:205)
    	at com.appiancorp.ps.xmlfo.util.XmlFoConverter.transformXslFoToPdf(XmlFoConverter.java:212)
    	at com.appiancorp.ps.xmlfo.ss.PdfFromXslFoTransformation.runSmartService(PdfFromXslFoTransformation.java:40)
    	at com.appiancorp.ps.xmlfo.ss.AbstractDocumentGeneration.run(AbstractDocumentGeneration.java:49)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.lambda$call$0(DefaultActivityExecutor.java:131)
    	at com.appiancorp.plugins.PluginUsageLogger.runWithPluginInformation(PluginUsageLogger.java:52)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:131)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:125)
    	at com.appiancorp.common.ContextClassLoaderSwitcher.runInContext(ContextClassLoaderSwitcher.java:25)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor.execute(DefaultActivityExecutor.java:125)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute(UnattendedJavaActivityRequest.java:83)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute0(UnattendedJavaActivityRequest.java:55)
    	at com.appiancorp.process.engine.ContinuationRequest.executeOuter(ContinuationRequest.java:71)
    	at com.appiancorp.process.engine.ContinuationRequest.execute(ContinuationRequest.java:100)
    	at com.appiancorp.process.workpoller.UnattendedRequestHandlerBean.onMessage(UnattendedRequestHandlerBean.java:36)
    	at com.appiancorp.process.workpoller.WorkItem.run(WorkItem.java:84)
    	at org.springframework.jca.work.SimpleTaskWorkManager$DelegatingWorkAdapter.run(SimpleTaskWorkManager.java:239)
    	... 3 more
    Exception in thread "ThreadPoolTaskExecutor-1823" java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "org.apache.batik.dom.AbstractDocument.createEvent(Ljava/lang/String;)Lorg/w3c/dom/events/Event;" the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) of the current class, org/apache/batik/anim/dom/SVGOMDocument, and the class loader (instance of <bootloader>) for interface org/w3c/dom/events/DocumentEvent have different Class objects for the type org/w3c/dom/events/Event used in the signature
    	at org.apache.batik.anim.dom.SVGDOMImplementation.createDocument(SVGDOMImplementation.java:140)
    	at org.apache.fop.fo.extensions.svg.SVGDOMContentHandlerFactory$Handler.startElement(SVGDOMContentHandlerFactory.java:121)
    	at org.apache.fop.fo.FOTreeBuilder$MainFOHandler.startElement(FOTreeBuilder.java:317)
    	at org.apache.fop.fo.FOTreeBuilder.startElement(FOTreeBuilder.java:179)
    	at org.apache.xml.serializer.ToXMLSAXHandler.closeStartTag(ToXMLSAXHandler.java:206)
    	at org.apache.xml.serializer.ToSAXHandler.flushPending(ToSAXHandler.java:279)
    	at org.apache.xml.serializer.ToXMLSAXHandler.startPrefixMapping(ToXMLSAXHandler.java:350)
    	at org.apache.xml.serializer.ToXMLSAXHandler.startPrefixMapping(ToXMLSAXHandler.java:320)
    	at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1317)
    	at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402)
    	at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376)
    	at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402)
    	at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376)
    	at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402)
    	at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376)
    	at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402)
    	at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376)
    	at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402)
    	at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376)
    	at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402)
    	at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376)
    	at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395)
    	at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178)
    	at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402)
    	at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2272)
    	at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1358)
    	at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:711)
    	at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1275)
    	at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1253)
    	at com.appiancorp.ps.xmlfo.util.XmlFoConverter.transform(XmlFoConverter.java:205)
    	at com.appiancorp.ps.xmlfo.util.XmlFoConverter.transformXslFoToPdf(XmlFoConverter.java:212)
    	at com.appiancorp.ps.xmlfo.ss.PdfFromXslFoTransformation.runSmartService(PdfFromXslFoTransformation.java:40)
    	at com.appiancorp.ps.xmlfo.ss.AbstractDocumentGeneration.run(AbstractDocumentGeneration.java:49)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.lambda$call$0(DefaultActivityExecutor.java:131)
    	at com.appiancorp.plugins.PluginUsageLogger.runWithPluginInformation(PluginUsageLogger.java:52)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:131)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:125)
    	at com.appiancorp.common.ContextClassLoaderSwitcher.runInContext(ContextClassLoaderSwitcher.java:25)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor.execute(DefaultActivityExecutor.java:125)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute(UnattendedJavaActivityRequest.java:83)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute0(UnattendedJavaActivityRequest.java:55)
    	at com.appiancorp.process.engine.ContinuationRequest.executeOuter(ContinuationRequest.java:71)
    	at com.appiancorp.process.engine.ContinuationRequest.execute(ContinuationRequest.java:100)
    	at com.appiancorp.process.workpoller.UnattendedRequestHandlerBean.onMessage(UnattendedRequestHandlerBean.java:36)
    	at com.appiancorp.process.workpoller.WorkItem.run(WorkItem.java:84)
    	at org.springframework.jca.work.SimpleTaskWorkManager$DelegatingWorkAdapter.run(SimpleTaskWorkManager.java:239)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	at java.lang.Thread.run(Thread.java:748)
    

    I checked the files (XML and XSL) on an online transformation site and they seem to be working OK.

    Do you have any suggestions about what to check?  Thanks in advance for your help

  • Do we have any function which can be used on interface level without calling the smart service on process model level?

  • HI ,

    Is there a way I can generate(embed) images into the PDF created by the plugin - PDF from HTML Transformation?
    I tried base 64 string but can't get this working. 

  • Do you mean 1.8.0 rather than 1.8.8?

    If so, just ignore the -SNAPSHOT.  It will be removed in the next release.

  • Downloading the latest version as of 04-Jun-2020 via the Admin console, though the version 1.8.8 is shown in the wizard, it installs version 1.8.0-SNAPSHOT in the Appian environment. please let us know if both these versions are the same.

  • Are you generating the pdf from a word document?

  • Is there an example of how I can use this plugin to generate a PDF that has a table with text and pictures?

  • Update: The Appian Health Check report was reporting back false positives as high risk. Please ignore my original message.

  • We are using this plug-in, and in Appian health check report it's flagged as high risk because it's referencing the removed/deprecated Appian APIs. So, will there be an update that will address these issues?