PDF Tools

Overview

Contains multiple Smart Services and Functions for interacting with PDF Documents.

Key Features & Functionality

Smart Services:

  • Merge PDF - Merges multiple PDF documents into a single document.
  • Extract PDF Pages - Extracts a range of pages from an existing PDF into a new PDF.
  • Fill PDF - Populates the fields of a PDF Form and optionally flattens it disallow further changes.
  • Create PDF Content - Allows text to be added to a PDF with control over the style, position, and angle. An existing PDF can be updated or a new one created from scratch.
  • Convert PDF to Image - Creates an array of images or a multi-page tiff from a PDF.
  • Compress PDF - Compresses the images in the PDF to make it smaller.
  • Un-protect and Copy PDF - Using the document password, create an un-protected copy of a protected PDF.
  • Convert Image to PDF - Creates a PDF starting from one or many images. It also supports multi-page tiff images.
  • Encrypt PDF - Encrypts an existing PDF with a password.

Functions:

  • Get PDF Metadata - Retrieves metadata on the PDF: page count, title, author, security, encryption, etc.
  • Get PDF Text - Retrieves the text content from a PDF.
  • Get PDF Form Fields - Retrieves the populated form field values of an unflattened PDF.
  • Get PDF Signature Fields - Retrieves the populated signature field values of an unflattened PDF.
  • Get PDF Bookmarks - Retrieves the list of bookmarks and associated page number in the PDF

Anonymous
  • Hello, I am trying to use the "Convert Image to PDF" Smart Service.

    Trying to convert an .SVG file to PDF, an unspecified error occurs. Is this as intended? Are SVG images not supported?

  • Hi

    Previously working "Convert Image to PDF" smart service fails after plugin upgrade to v2.4.0 on 22.1 cloud environment.

    Using the "Convert Image to PDF" smart service to convert a tif to pdf.

    Delete plugin and re-added. Same error occurs.

    Process model fails with an error of "Convert Image to PDF   An error occurred in executing an Activity Class."

    The logs show the following:-

    2022-05-11 14:17:54,251 [ThreadPoolTaskExecutor-49682] ERROR com.appiancorp.process.workpoller.WorkItemListener - The following exception occurred while attempting to complete work item [[WorkId: 647, EngineId: execution02, Request: UnattendedJavaActivityRequest:536879925 as XXX by XXX, ProcessId: 2156450, ProcessModelId: 164, Response: null]] - Exception:
    javax.resource.spi.work.WorkCompletedException: java.lang.NoClassDefFoundError: javax/imageio/ImageReadParam
    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:750)
    Caused by: java.lang.NoClassDefFoundError: javax/imageio/ImageReadParam
    at com.github.jaiimageio.impl.plugins.tiff.TIFFImageReaderSpi.createReaderInstance(TIFFImageReaderSpi.java:118)
    at javax.imageio.spi.ImageReaderSpi.createReaderInstance(ImageReaderSpi.java:320)
    at javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:529)
    at javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:513)
    at com.appiancorp.ps.pdftools.ConvertImageToPDF.run(ConvertImageToPDF.java:79)
    at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.lambda$call$0(DefaultActivityExecutor.java:136)
    at com.appiancorp.plugins.PluginUsageLogger.runWithPluginInformation(PluginUsageLogger.java:52)
    at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:136)
    at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:130)
    at com.appiancorp.common.ContextClassLoaderSwitcher.runInContext(ContextClassLoaderSwitcher.java:27)
    at com.appiancorp.process.runtime.framework.DefaultActivityExecutor.execute(DefaultActivityExecutor.java:130)
    at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute(UnattendedJavaActivityRequest.java:88)
    at com.appiancorp.process.engine.UnattendedJavaActivityRequestResponseCreator.getJavaActivityResultResponse(UnattendedJavaActivityRequestResponseCreator.java:21)
    at com.appiancorp.process.engine.UnattendedJavaActivityRequest.getJavaActivityResultResponse(UnattendedJavaActivityRequest.java:67)
    at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute0(UnattendedJavaActivityRequest.java:55)
    at com.appiancorp.common.persistence.data.AppianDataUserContextProvider.executeWithConsistentDataReads(AppianDataUserContextProvider.java:135)
    at com.appiancorp.process.engine.ProcessContinuationRequest.executeOuter(ProcessContinuationRequest.java:68)
    at com.appiancorp.process.engine.ContinuationRequest.execute(ContinuationRequest.java:124)
    at com.appiancorp.process.workpoller.UnattendedRequestHandlerBean.onMessage(UnattendedRequestHandlerBean.java:36)
    at com.appiancorp.process.workpoller.WorkItem.run(WorkItem.java:103)
    at org.springframework.jca.work.SimpleTaskWorkManager$DelegatingWorkAdapter.run(SimpleTaskWorkManager.java:239)
    ... 3 more
    Caused by: java.lang.ClassNotFoundException: Unable to load class 'javax.imageio.ImageReadParam' because the bundle wiring for pdftools is no longer valid.
    at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1610)
    at org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
    at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2064)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    ... 24 more
    Exception in thread "ThreadPoolTaskExecutor-49682" java.lang.NoClassDefFoundError: javax/imageio/ImageReadParam
    at com.github.jaiimageio.impl.plugins.tiff.TIFFImageReaderSpi.createReaderInstance(TIFFImageReaderSpi.java:118)
    at javax.imageio.spi.ImageReaderSpi.createReaderInstance(ImageReaderSpi.java:320)
    at javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:529)
    at javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:513)
    at com.appiancorp.ps.pdftools.ConvertImageToPDF.run(ConvertImageToPDF.java:79)
    at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.lambda$call$0(DefaultActivityExecutor.java:136)
    at com.appiancorp.plugins.PluginUsageLogger.runWithPluginInformation(PluginUsageLogger.java:52)
    at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:136)
    at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:130)
    at com.appiancorp.common.ContextClassLoaderSwitcher.runInContext(ContextClassLoaderSwitcher.java:27)
    at com.appiancorp.process.runtime.framework.DefaultActivityExecutor.execute(DefaultActivityExecutor.java:130)
    at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute(UnattendedJavaActivityRequest.java:88)
    at com.appiancorp.process.engine.UnattendedJavaActivityRequestResponseCreator.getJavaActivityResultResponse(UnattendedJavaActivityRequestResponseCreator.java:21)
    at com.appiancorp.process.engine.UnattendedJavaActivityRequest.getJavaActivityResultResponse(UnattendedJavaActivityRequest.java:67)
    at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute0(UnattendedJavaActivityRequest.java:55)
    at com.appiancorp.common.persistence.data.AppianDataUserContextProvider.executeWithConsistentDataReads(AppianDataUserContextProvider.java:135)
    at com.appiancorp.process.engine.ProcessContinuationRequest.executeOuter(ProcessContinuationRequest.java:68)
    at com.appiancorp.process.engine.ContinuationRequest.execute(ContinuationRequest.java:124)
    at com.appiancorp.process.workpoller.UnattendedRequestHandlerBean.onMessage(UnattendedRequestHandlerBean.java:36)
    at com.appiancorp.process.workpoller.WorkItem.run(WorkItem.java:103)
    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:750)
    Caused by: java.lang.ClassNotFoundException: Unable to load class 'javax.imageio.ImageReadParam' because the bundle wiring for pdftools is no longer valid.
    at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1610)
    at org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
    at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2064)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    ... 24 more

  • Unfortunately not. Still unresolved

  • Having the same issue, had any luck with this in the last couple of days?

  • Hello,

    I am trying to convert a PDF document to image through the relative node "Convert PDF to Image", but there is an error during Activity Class execution. The details report the following:

    bundleName for SmartServiceException, builder.smartServiceClass=class com.appiancorp.ps.pdftools.AbstractPDFDocumentGeneration 

    I have populated the fields for inputs and outputs as follows:

    Inputs:

    • Document: pv!document (type Document)
    • Save In Folder: pointer constant (type Folder)
    • Image Format: JPG (type Text)
    • DPI Resolution: left blank (not mandatory field)

    Outputs:

    • Images Created: docAsImage (Type Document, Multiple)

    Any help appreciated.

    Best regards.

  • Release Notes - v2.4.0
    • Added ability to configure resolution of files outputted from Image to PDF smart service
  • v2.3.3 Release Notes
    • Security Updates

  • When a new version of the plugin contains a new version of a CDT, the previous version needs to be deleted before a new one is deployed. Please delete PdfBookmark and redeploy the plugin.

  • Hello, i've just tried to upgrade to the version 2.3.2 and i've got this message :

    2022-01-27 12:32:53,879 [Timer-4] INFO com.appiancorp.cache.DatabaseAuxiliaryCache - Removing expired entries from db cache: uiState-auxiliary
    2022-01-27 12:52:22,376 [Appian Plugin Hot Deploy] INFO com.appiancorp.plugins.osgi.LoggingPluginFactoryDecorator - Plug-in Artifact 'pdf-tools-2.3.2.jar' SHA256 hash is b2805268f0cb9ee3be3b3f294a0e7b661b7736ddfc26185d2effe7860d10b1ff
    2022-01-27 12:52:29,455 [Appian Plugin Hot Deploy] INFO com.appiancorp.plugins.LoggingPluginEventListener - Successfully un-installed Plug-in 'PDF Tools' (pdftools) version 2.3.1.
    2022-01-27 12:52:29,458 [Appian Plugin Hot Deploy] INFO com.appiancorp.plugins.loaders.UnloadingDirectoryPluginLoader - Removed plugin pdftools
    2022-01-27 12:52:30,254 [Appian Plugin Hot Deploy] WARN com.appiancorp.type.config.plugin.PojoDatatypesConfig - The data type [uuid={http://types.appiancorp.com/ps}PdfBookmark] in plug-in [key=pdftools, module=PdfBookmark] was not imported because it or another data type in the plug-in module was already present on the system with a different structure, but the version of the plug-in that provided the existing data type could not be determined. If you intend to change the structure of this data type you must first delete the data type from the system and deploy this plug-in again. If the problem persists, check that all data type precedents of the data type are declared in the same plug-in module or are listed before this data type in the appian-plug.xml. If you did not intend to change the structure of this data type, this message can be safely ignored as it is a false positive in the structure comparison mechanism. Please submit the plug-in and accompanying log messages to Appian Support for further analysis. (APNX-1-4165-003)
    2022-01-27 12:52:31,295 [Appian Plugin Hot Deploy] INFO com.appiancorp.plugins.osgi.AppianOsgiPlugin - Successfully installed Plug-in 'PDF Tools' (pdftools) version 2.3.2.

    How should i fix it ?

    Regards 

  • v2.3.2 Release Notes
    • Resolved issues with appian-plugin.xml - Extract PDF Attachments is now correctly referenced.