{
  "bundles": [
    {
      "@type": "NXBundle",
      "artifactId": "nuxeo-platform-pdf-utils",
      "artifactVersion": "2021.64.6",
      "bundleGroup": {
        "@type": "NXBundleGroup",
        "bundleIds": [
          "org.nuxeo.binary.metadata",
          "org.nuxeo.directory.mongodb",
          "org.nuxeo.dmk-adaptor",
          "org.nuxeo.ecm.audit.io",
          "org.nuxeo.ecm.default.config",
          "org.nuxeo.ecm.jwt",
          "org.nuxeo.ecm.permissions",
          "org.nuxeo.ecm.platform",
          "org.nuxeo.ecm.platform.api",
          "org.nuxeo.ecm.platform.collections.core",
          "org.nuxeo.ecm.platform.commandline.executor",
          "org.nuxeo.ecm.platform.convert",
          "org.nuxeo.ecm.platform.csv.export",
          "org.nuxeo.ecm.platform.dublincore",
          "org.nuxeo.ecm.platform.filemanager",
          "org.nuxeo.ecm.platform.htmlsanitizer",
          "org.nuxeo.ecm.platform.mail",
          "org.nuxeo.ecm.platform.oauth",
          "org.nuxeo.ecm.platform.oauth1",
          "org.nuxeo.ecm.platform.pdf",
          "org.nuxeo.ecm.platform.query.api",
          "org.nuxeo.ecm.platform.rendering",
          "org.nuxeo.ecm.platform.threed",
          "org.nuxeo.ecm.platform.thumbnail",
          "org.nuxeo.ecm.platform.types",
          "org.nuxeo.ecm.platform.url",
          "org.nuxeo.ecm.platform.usermanager",
          "org.nuxeo.ecm.quota",
          "org.nuxeo.ecm.webdav",
          "org.nuxeo.importer.stream",
          "org.nuxeo.mail",
          "org.nuxeo.mongodb.audit",
          "org.nuxeo.search.ui",
          "org.nuxeo.usermapper"
        ],
        "hierarchyPath": "/grp:org.nuxeo.ecm.platform",
        "id": "grp:org.nuxeo.ecm.platform",
        "name": "org.nuxeo.ecm.platform",
        "parentIds": [],
        "readmes": [
          {
            "blobProviderId": "default",
            "content": "# Nuxeo Platform Importer\n\n## About Nuxeo Platform Importer\n\nThe file importer comes as a Java library (with nuxeo runtime service) and a sample JAX-RS interface to launch, monitor and abort import jobs.\nThis project is an on-going project, supported by Nuxeo\n\n## Building\n### How to Build Nuxeo Platform Importer\nBuild the Nuxeo Platform Importer with Maven:\n```$ mvn install -Dmaven.test.skip=true```\n\n## Deploying\nNuxeo Platform Importer is available as two package add-ons [from the Nuxeo Marketplace]\nhttps://connect.nuxeo.com/nuxeo/site/marketplace/package/nuxeo-platform-importer\nhttps://connect.nuxeo.com/nuxeo/site/marketplace/package/nuxeo-scan-importer\n\n## Resources\n### Documentation\nThe documentation for Nuxeo Platform Importer is available in our Documentation Center: http://doc.nuxeo.com/x/gYBVAQ\n\n### Reporting Issues\nYou can follow the developments in the Nuxeo Platform project of our JIRA bug tracker, which includes a Nuxeo Platform Importer component:\nhttps://jira.nuxeo.com/browse/NXP/component/10621\n\nYou can report issues on: http://answers.nuxeo.com/\n\n## About Nuxeo\nNuxeo dramatically improves how content-based applications are built, managed and deployed, making customers more agile, innovative and successful. Nuxeo provides a next generation, enterprise ready platform for building traditional and cutting-edge content oriented applications. Combining a powerful application development environment with SaaS-based tools and a modular architecture, the Nuxeo Platform and Products provide clear business value to some of the most recognizable brands including Verizon, Electronic Arts, Sharp, FICO, the U.S. Navy, and Boeing. Nuxeo is headquartered in New York and Paris. More information is available at www.nuxeo.com.\n",
            "digest": "83bb2a4c6415c9f07db3ab17fa99510c",
            "encoding": "UTF-8",
            "length": 1753,
            "mimeType": "text/plain",
            "name": "README.md"
          }
        ],
        "version": "2021.64"
      },
      "bundleId": "org.nuxeo.ecm.platform.pdf",
      "components": [
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.operation.OperationServiceComponent--operations",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/org.nuxeo.ecm.platform.pdf/org.nuxeo.ecm.platform.pdf.operations/Contributions/org.nuxeo.ecm.platform.pdf.operations--operations",
              "id": "org.nuxeo.ecm.platform.pdf.operations--operations",
              "registrationOrder": 22,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.operation.OperationServiceComponent",
                "name": "org.nuxeo.ecm.core.operation.OperationServiceComponent",
                "type": "service"
              },
              "version": "2021.64.6",
              "xml": "<extension point=\"operations\" target=\"org.nuxeo.ecm.core.operation.OperationServiceComponent\">\n\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFAddPageNumbersOperation\"/>\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFConvertToPicturesOperation\"/>\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFEncryptOperation\"/>\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFEncryptReadOnlyOperation\"/>\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFExtractInfoOperation\"/>\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFExtractLinksOperation\"/>\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFExtractPagesOperation\"/>\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFExtractTextOperation\"/>\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFMergeBlobsOperation\"/>\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFMergeDocumentsOperation\"/>\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFRemoveEncryptionOperation\"/>\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFWatermarkImageOperation\"/>\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFWatermarkPDFOperation\"/>\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFWatermarkTextOperation\"/>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/org.nuxeo.ecm.platform.pdf/org.nuxeo.ecm.platform.pdf.operations",
          "name": "org.nuxeo.ecm.platform.pdf.operations",
          "requirements": [],
          "resolutionOrder": 448,
          "services": [],
          "startOrder": 373,
          "version": "2021.64.6",
          "xmlFileContent": "<component name=\"org.nuxeo.ecm.platform.pdf.operations\">\n\n  <extension target=\"org.nuxeo.ecm.core.operation.OperationServiceComponent\" point=\"operations\">\n\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFAddPageNumbersOperation\" />\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFConvertToPicturesOperation\" />\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFEncryptOperation\" />\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFEncryptReadOnlyOperation\" />\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFExtractInfoOperation\" />\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFExtractLinksOperation\" />\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFExtractPagesOperation\" />\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFExtractTextOperation\" />\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFMergeBlobsOperation\" />\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFMergeDocumentsOperation\" />\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFRemoveEncryptionOperation\" />\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFWatermarkImageOperation\" />\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFWatermarkPDFOperation\" />\n    <operation class=\"org.nuxeo.ecm.platform.pdf.operations.PDFWatermarkTextOperation\" />\n\n  </extension>\n\n</component>",
          "xmlFileName": "/OSGI-INF/pdf-utils-operations.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.ecm.platform.pdf.service.PDFTransformationServiceImpl",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/org.nuxeo.ecm.platform.pdf/org.nuxeo.pdf.utils.service",
          "name": "org.nuxeo.pdf.utils.service",
          "requirements": [],
          "resolutionOrder": 449,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.pdf.utils.service",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/org.nuxeo.ecm.platform.pdf/org.nuxeo.pdf.utils.service/Services/org.nuxeo.ecm.platform.pdf.service.PDFTransformationService",
              "id": "org.nuxeo.ecm.platform.pdf.service.PDFTransformationService",
              "overriden": false,
              "version": "2021.64.6"
            }
          ],
          "startOrder": 929,
          "version": "2021.64.6",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.pdf.utils.service\">\n\n  <service>\n    <provide interface=\"org.nuxeo.ecm.platform.pdf.service.PDFTransformationService\" />\n  </service>\n\n  <implementation class=\"org.nuxeo.ecm.platform.pdf.service.PDFTransformationServiceImpl\" />\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/service-contrib.xml",
          "xmlPureComponent": false
        }
      ],
      "fileName": "nuxeo-platform-pdf-utils-2021.64.6.jar",
      "groupId": "org.nuxeo.ecm.platform",
      "hierarchyPath": "/grp:org.nuxeo.ecm.platform/org.nuxeo.ecm.platform.pdf",
      "id": "org.nuxeo.ecm.platform.pdf",
      "location": "",
      "manifest": "Manifest-Version: 1.0\r\nArchiver-Version: Plexus Archiver\r\nCreated-By: Apache Maven\r\nBuilt-By: root\r\nBuild-Jdk: 11.0.24\r\nBundle-ManifestVersion: 2\r\nBundle-Version: 1.0.0\r\nBundle-SymbolicName: org.nuxeo.ecm.platform.pdf;singleton:=true\r\nBundle-Name: nuxeo-platform-pdf-utils\r\nBundle-ClassPath: .\r\nBundle-ActivationPolicy: lazy\r\nBundle-RequiredExecutionEnvironment: JavaSE-1.7\r\nBundle-Vendor: Nuxeo\r\nNuxeo-Component: OSGI-INF/pdf-utils-operations.xml,OSGI-INF/service-co\r\n ntrib.xml\r\n\r\n",
      "maxResolutionOrder": 449,
      "minResolutionOrder": 448,
      "packages": [],
      "readme": {
        "blobProviderId": "default",
        "content": "# Nuxeo Platform PDF Utils\n\nA set of utilities to deal with PDFs from a [nuxeo](http://nuxeo.com) application.\n\n## Operations\n\nThese operations can be used in Studio after importing their JSON definitions to the Automation registry.\n\n_A quick reminder: To get the JSON definition of an operation, you can install the plug-in, start nuxeo server then go to {server:port}/nuxeo/site/automation/doc. All available operations are listed, find the one you are looking for and follow the links to get its JSON definition._\n\n* **`PDF: Add Page Numbers`** (id `PDF.AddPageNumbers`)\n  * Accepts a Blob, returns a Blob\n  * The input blob must be a PDF\n  * The returned blob contains the page numbers, displayed using the parameters (position, font, ...)\n    * Notice the input blob is _not_ modified, a copy (+ page numbers) is returned\n\n  * The following parameters let you tune the operation:\n    * `startAtPage` (default: 1)\n    * `startAtNumber` (default: 1)\n    * `position`\n      * Can be Bottom right, Bottom center, Bottom left, Top right, Top center, or Top left\n      * Default: Bottom Right\n\n    * `fontName` (default: Helvetica)\n    * `fontSize` (default: 16)\n    * `hex255Color`\n      * Expressed as either 0xrrggbb or #rrggbb (case insensitive)\n      * Default value: 0xffffff\n\n    * `password`: If the PDF is encrypted, the password that will allow modification.\n\n* **`PDF: Extract Pages`** (id `PDF.ExtractPages`)\n  * Accept either a blob or a document as input\n  * Returns a blob built with the extracted pages\n  * If the input is a document, the `xpath` parameter must be used (default: `file:content`)\n  * The following parameters let you tune the operation:\n    * `startPage`\n      * If < 1 => realigned to 1\n      * If > `endPage` or > number of pages, a blank PDF is returned\n\n    * `endPage`\n      * If > number of pages, it is realigned to the number of pages\n\n    * `fileName`\n      * If not used, the filename will be the original file name plus the page range. For example, if the original name was \"mydoc.pdf\" and you extract pages 10 to 25, the resulting PDF will have a file name of \"mydoc-10-25.pdf\".\n\n    * `pdfTitle`\n      * If not used, title is not set\n      * Warning: This is not the `dc:title`. It is the title as stored in the metadata of the PDF.\n\n    * `pdfSubject`\n      * If not used, subject is not set\n\n    * `pdfAuthor`\n      * If not used, author is not set\n\n    * `password`: If the PDF is encrypted, the password that will allow extraction.\n\n* **`PDF: Merge with Blob(s)`** (id `PDF.MergeWithBlobs`)\n  * This operation merges all the blobs in a specific order (see below) and returns the final, merged PDF. Some properties (subject, ...) can also be set at the same time (optional)\n  * The order of the PDF is the following:\n    * Input blob\n    * Blob referenced by the Context variable whose name is `toAppendVarName`\n    * Blobs referenced as a `BlobList` by the Context variable whose name is `toAppendListVarName`\n    * Blobs stored in the documents whose IDs are referenced as a `String List` by the Context variable whose name is `toAppendDocIDsVarName`\n      * The `xpath` parameter is used to get the blob in each document\n      * Optional. Default value is `file:content`\n\n    * **Important**: The operation expects the _Context variable names_, _not the values_ of the variables. For example in Studio, say you have a multivalued String field named `myschema:the_ids`. It stores IDs of documents (typically, filled by the user using a \"Multiple Documents Suggestion Widget\"). In an Automation Chain, to merge the PDF embedded in a these documents with an input blob you would write (see we use `listArticles`, not `@{listArticles}`):\n    ```\n    . . . previous operations . . .\n    Set Context Variable\n      name: listArticles\n      value: @{Document[\"myschema:the_ids\"]}\n    . . .\n    PDF: Merge with Blob(s)\n      ..other parameters\n      toAppendDocIDsVarName: listArticles\n    ```\n    * These parameters are optional. Still, you probably want to use at least one of them :-)\n\n* **`PDF: PDF: Merge with Document(s)`** (id `PDF.MergeWithDocs`)\n  * See the documentation of `PDF: Merge with Blob(s)`\n  * The difference is that the input is a document. The operation extracts the blob from the `xpath` field. Notice that it is ok for this blob to be null, the operation will still merge all the other blobs referenced in the parameters\n\n* **`PDF: Info to Fields`** (id `PDF.InfoToFields`)\n  * Extract the info of the PDF and put them in the fields referenced by the `properties` parameter, return the modified document. If there is no blob or if the blob is not a PDF, all the values referenced in `properties` are cleared (set to empty string, 0, ...)\n  * Parameters:\n    * `xpath`: The xpath of the blob to handle in the document. Default value is `file:content`\n    * `save`: If true, the document is saved after its fields have been populated\n    * `properties`\n      * A `key=value` list (one key-value pair/line), where `key` is the xpath of the destination field and `value` is one of the following (case sensitive):\n\n    ```\n    File name\n    File size\n    PDF version\n    Page count\n    Page size\n    Page width\n    Page height\n    Page layout\n    Title\n    Author\n    Subject\n    PDF producer\n    Content creator\n    Creation date\n    Modification date\n    Encrypted\n    Keywords\n    Media box width\n    Media box height\n    Crop box width\n    Crop box height\n    Can Print\n    Can Modify\n    Can Extract\n    Can Modify Annotations\n    Can Fill Forms\n    Can Extract for Accessibility\n    Can Assemble\n    Can Print Degraded\n    ```\n\n    The  permission fields (starting with \"Can ...\") contain \"true\" or \"false\". Every field is \"true\" if the document is not encrypted or is opened with the _owner_ password.\n      * For example, say you have an `InfoOfPDF` schema, prefix `iop`, with misc. fields. You could write:\n    ```\n    iop:pdf_version=PDF version\n    iop:page_count=Page count\n    iop:page_size=Page size\n    ...etc...\n    ```\n\n* **`PDF: Watermark with Text`** (id `PDF.WatermarkWithText`)\n  * Accepts a Blob, returns a Blob\n  * Returns a _new_ blob combining the input PDF and the `watermark` text set on every pages, using the different `properties`.\n  * If `watermark` is empty, a simple copy of the input blob is returned\n  * `properties` is a `key=value` set where `key` can be one of the following. When not used, a default value applies:\n    * `fontFamily` (default: \"Helvetica\")\n    * `fontSize` (default: 36.0)\n    * `rotation` (default: 0)\n    * `hex255Color` (default: \"#000000\")\n    * `alphaColor` (default: 0.5)\n    * `xPosition` (default: 0)\n    * `yPosition` (default: 0)\n    * `invertY` (default: \"false\")\n\n  * _More details about some `properties`_:\n    * `xPosition` and `yPosition` start at the _bottom-left corner_ of each page\n    * `alphaColor` is a float with any value between 0.0 and 1.0. Values < 0 or > 1 are reset to the default 0.5\n\n* **`PDF: Watermark with Image`** (id `PDF.WatermarkWithImage`)\n  * Accepts a Blob, returns a Blob\n  * Returns a _new_ blob combining the input PDF and an image set on every page (using the `x`, `y`and `scale` parameters)\n  * The image to use for the watermark can be one of the following:\n    * `imageContextVarName`: A Context variable which references a Blob containing the image.\n    * `imageDocRef`: The path or the ID of a document whose `file:content` field contains the image to use\n      * _Notice_: If `imageDocRef`` is used, an `UnrestrictedSession` fetches its blob, so the PDF can be watermarked even if current user has not enough right to read the watermark itself.\n\n    * _Notice_: The operation first checks for `imageContextVarName`.\n\n  * `x` and `y` start at the bottom-left of the page\n  * Dimensions of the image will be * by `scale` (so 1.0 means \"Original size\", 0.5 means half the size. 4 means four time the size, ...)\n\n* **`PDF: Watermark with PDF`** (id `PDF.WatermarkWithPDF`)\n  * Accepts a Blob, returns a Blob\n  * Returns a _new_ blob combining the input pdf and an overlayed PDF on every page\n  * The PDF to use for the watermark can be one of the following:\n    * `pdfContextVarName`: A Context variable which references a Blob containing the PDF.\n    * `pdfDocRef`: The path or the ID of a document whose `file:content` field contains the PDF to use\n      * _Notice_: If `pdfDocRef`` is used, an`UnrestrictedSession` fetches its blob, so the PDF can be watermarked even if current user has not enough right to read the watermark itself.\n\n    * _Notice_: The operation first checks for `pdfContextVarName`.\n\n  * This operation uses `PDFBox` to overlay the PDF. The count of pages in each PDF can be different. Basically, the PDF to overlay will be repeated over the PDF to watermark. So for a final PDF of 10 pages:\n    * If the overlay has one single page, this page is overlayed on the 10 pages\n    * If the overlay has 3 pages, then the overlay will be made with pages 1 2 3 1 2 3 1 2 3 1\n\n* **`PDF: Encrypt Read Only`** (id `PDF.EncryptReadOnly`)\n  * Accepts Blob, Blobs, Document, Document(s)\n  * Encrypts the PDF in readonly mode: User can print, copy, print degraded, extract info for accessibility, but cannot assemble, modify, modify annotations.\n  * Returns a _new_ blob, copy of the original one, but encrypted\n  * Parameters:\n    * `originalOwnerPwd`: If the PDF is already encrypted, the password to open and modify it\n    * `owenrPwd`; The new password to use for encryption. An owner can do everything on the PDF. If not passed, we use `originalOwnerPwd`\n    * `userPwd`: The password for users, who will have restriction (read only) on the PDF\n    * `keyLength`: The length to use for the encryption key. Possible values are 40 and 128. If no value is passed, 128 is used\n    * `xpath`: If the input is `Document`  or `Documents`, the field where to get the blob from (`file:content` by default)\n\n* **`PDF: Encrypt`** (id `PDF.Encrypt`)\n  * Accepts Blob, Blobs, Document, Document(s)\n  * Encrypts the PDF with the permissions given in `permissions`\n  * Returns a _new_ blob, copy of the original one, but encrypted\n  * Parameters:\n    * `originalOwnerPwd`: If the PDF is already encrypted, the password to open and modify it\n    * `owenrPwd`; The new password to use for encryption. An owner can do everything on the PDF. If not passed, we use `originalOwnerPwd`\n    * `userPwd`: The password for users, who will have restriction (read only) on the PDF\n    * `keyLength`: The length to use for the encryption key. Possible values are 40 and 128. If no value is passed, 128 is used\n    * `xpath`: If the input is `Document`  or `Documents`, the field where to get the blob from (`file:content` by default)\n    * `permissions` is a `key=value` set where `key` can be one of the following. When not used, `false` is applied (permission to do the action is denied):\n    * `print`\n    * `modify`\n    * `copy`\n    * `modifyAnnot`\n    * `fillForms`\n    * `extractForAccessibility`\n    * `assemble`\n    * `printDegraded`\n\n    So for example, if you pass...\n\n    ```\n    print=true\n    copy=true\n    ```\n\n    ... the user will only be able to print and copy.\n\n* **`PDF: Remove Encryption`** (id `PDF.RemoveEncryption`)\n  * Accepts Blob, Blobs, Document, Document(s)\n  * Remove the encryption\n  * Returns a _new_ blob, copy of the original one, not encrypted at all.\n  * If the PDF already was encrypted, the operation still returns a copy of it (not the orginal blob)\n  * Parameters:\n    * `wnerPwd`: Password to use to decrypt and remove the permissions\n    * `xpath`: If the input is `Document`  or `Documents`, the field where to get the blob from (`file:content` by default)\n\n* **`PDF: Get Links`** (id `PDF.GetLinks`)\n  * Accepts Blob\n  * Returns a JSON String containing an array of objects. Each object has the following fields:\n    * `page`: The page number where the link is\n    * `subType`: The subType of the field. This is PDFBox (underlying java tool used to handle the PDF) label. It can be one of the following: `Launch`,  `GoToR` or `URI`.\n    * `text`: The text of the link\n    * `link`: The link itself (depending on `subType`)\n\n  * Parameters\n    * `type`: One of the following (case insensitive):\n      * `Launch`\n      * `Remote Go To`\n      * `URI`\n\n    * `getAll`: If `true`, the operation returns a list of all the links (of category Launch, Remote Go To or URI)\n    * Important: If `getAll` is `false`, `type` _must_ be filled (or an error will occur)\n\n* **`Conversion > PDF: Convert to Pictures`** (id `PDF.PDFToPictures`)\n    * Accepts a Document\n    * Parameters:\n        * `fileName` (default: PDF file name)\n            * This name will be applied to each image as `fileName` + `page number` + `.png`. Optional\n        * `xpath` (default: `file:content`)\n            * The path to the PDF blob. Optional\n        * `password`\n            * Password to unlock the PDF if required. Optional\n    * Returns a Blob List of each page of the PDF as PNG image\n    * These images can be used for OCR with [Nuxeo Vision](http://www.nuxeo.com/nuxeo-vision/), for example\n\n\n## Licensing\n\n[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0)\n\n\n## About Nuxeo\n\nNuxeo dramatically improves how content-based applications are built, managed and deployed, making customers more agile, innovative and successful. Nuxeo provides a next generation, enterprise ready platform for building traditional and cutting-edge content oriented applications. Combining a powerful application development environment with SaaS-based tools and a modular architecture, the Nuxeo Platform and Products provide clear business value to some of the most recognizable brands including Verizon, Electronic Arts, Sharp, FICO, the U.S. Navy, and Boeing. Nuxeo is headquartered in New York and Paris. More information is available at [www.nuxeo.com](http://www.nuxeo.com).\n",
        "digest": "fc1a14b36657f05a9db29c08f366955b",
        "encoding": "UTF-8",
        "length": 13851,
        "mimeType": "text/plain",
        "name": "README.md"
      },
      "requirements": [],
      "version": "2021.64.6"
    }
  ],
  "creationDate": 1734363736555,
  "key": "Nuxeo Platform-2021.64",
  "name": "Nuxeo Platform",
  "operations": [
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Conversion",
      "contributingComponent": "org.nuxeo.ecm.platform.pdf.operations",
      "description": "Add the page numbers to the PDF, using the misc parameters. If the PDF is encrypted, a password is required.",
      "hierarchyPath": "/op:PDF.AddPageNumbers",
      "label": "PDF: Add Page Numbers",
      "name": "PDF.AddPageNumbers",
      "operationClass": "org.nuxeo.ecm.platform.pdf.operations.PDFAddPageNumbersOperation",
      "params": [
        {
          "description": null,
          "isRequired": false,
          "name": "fontName",
          "order": 0,
          "type": "string",
          "values": [
            "Helvetica"
          ],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "fontSize",
          "order": 0,
          "type": "long",
          "values": [
            "16"
          ],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "hex255Color",
          "order": 0,
          "type": "string",
          "values": [
            "0xffffff"
          ],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "password",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "position",
          "order": 0,
          "type": "string",
          "values": [
            "Bottom right",
            "Bottom center",
            "Bottom left",
            "Top right",
            "Top center",
            "Top left"
          ],
          "widget": "Option"
        },
        {
          "description": null,
          "isRequired": false,
          "name": "startAtNumber",
          "order": 0,
          "type": "long",
          "values": [
            "1"
          ],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "startAtPage",
          "order": 0,
          "type": "long",
          "values": [
            "1"
          ],
          "widget": null
        }
      ],
      "signature": [
        "blob",
        "blob",
        "bloblist",
        "bloblist"
      ],
      "url": "PDF.AddPageNumbers",
      "version": "2021.64.6"
    },
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Conversion",
      "contributingComponent": "org.nuxeo.ecm.platform.pdf.operations",
      "description": "Convert each page of a PDF into a picture. Returns Blob list of pictures.",
      "hierarchyPath": "/op:PDF.ConvertToPictures",
      "label": "PDF: Convert to Pictures",
      "name": "PDF.ConvertToPictures",
      "operationClass": "org.nuxeo.ecm.platform.pdf.operations.PDFConvertToPicturesOperation",
      "params": [
        {
          "description": null,
          "isRequired": false,
          "name": "fileName",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "password",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "xpath",
          "order": 0,
          "type": "string",
          "values": [
            "file:content"
          ],
          "widget": null
        }
      ],
      "signature": [
        "document",
        "bloblist"
      ],
      "url": "PDF.ConvertToPictures",
      "version": "2021.64.6"
    },
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Conversion",
      "contributingComponent": "org.nuxeo.ecm.platform.pdf.operations",
      "description": "Encrypts the PDF with the given permissions, returning a copy. Permissions are print, modify, copy, modifyAnnot, fillForms, extractForAccessibility, assemble and printDegraded. Any missing permission is set to false (values are true or false, assemble=true for example). originalOwnerPwd is used if the PDF was originally encrypted. If no keyLength is provided, use 128. If the operation is ran on Document(s), xpath lets you specificy where to get the blob from (default: file:content).",
      "hierarchyPath": "/op:PDF.Encrypt",
      "label": "PDF: Encrypt",
      "name": "PDF.Encrypt",
      "operationClass": "org.nuxeo.ecm.platform.pdf.operations.PDFEncryptOperation",
      "params": [
        {
          "description": null,
          "isRequired": true,
          "name": "originalOwnerPwd",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": true,
          "name": "ownerPwd",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": true,
          "name": "userPwd",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "keyLength",
          "order": 0,
          "type": "string",
          "values": [
            "40",
            "128"
          ],
          "widget": "Option"
        },
        {
          "description": null,
          "isRequired": false,
          "name": "permissions",
          "order": 0,
          "type": "properties",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "xpath",
          "order": 0,
          "type": "string",
          "values": [
            "file:content"
          ],
          "widget": null
        }
      ],
      "signature": [
        "bloblist",
        "bloblist",
        "blob",
        "blob",
        "document",
        "blob",
        "documents",
        "bloblist"
      ],
      "url": "PDF.Encrypt",
      "version": "2021.64.6"
    },
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Conversion",
      "contributingComponent": "org.nuxeo.ecm.platform.pdf.operations",
      "description": "Encrypts the PDF, returning a copy. User can read, print and copy but cannot modify. originalOwnerPwd is used if the PDF was originally encrypted. If ownerPwd is empty, use originalOwnerPwd to encrypt. If no keyLength is provided, use 128. If the operation is ran on Document(s), xpath lets you specificy where to get the blob from (default: file:content).",
      "hierarchyPath": "/op:PDF.EncryptReadOnly",
      "label": "PDF: Encrypt Read Only",
      "name": "PDF.EncryptReadOnly",
      "operationClass": "org.nuxeo.ecm.platform.pdf.operations.PDFEncryptReadOnlyOperation",
      "params": [
        {
          "description": null,
          "isRequired": false,
          "name": "keyLength",
          "order": 0,
          "type": "string",
          "values": [
            "40",
            "128"
          ],
          "widget": "Option"
        },
        {
          "description": null,
          "isRequired": false,
          "name": "originalOwnerPwd",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "ownerPwd",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "userPwd",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "xpath",
          "order": 0,
          "type": "string",
          "values": [
            "file:content"
          ],
          "widget": null
        }
      ],
      "signature": [
        "bloblist",
        "bloblist",
        "blob",
        "blob",
        "document",
        "blob",
        "documents",
        "bloblist"
      ],
      "url": "PDF.EncryptReadOnly",
      "version": "2021.64.6"
    },
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Document",
      "contributingComponent": "org.nuxeo.ecm.platform.pdf.operations",
      "description": "Extract the info of the PDF stored in <code>xpath</code> and put it in the fields referenced by <code>properties</code>. <code>properties</code> is a <code>key=value</code> list (one key-value pair/line, where <code>key</code> is the xpath of the destination field and <code>value</code> is the exact label (case sensitive) as returned by the PageExtractor (see this operation documentation). If there is no blob or the blob is not a PDF, all the values referenced in <code>properties</code> are cleared (set to empty string, 0, ...).",
      "hierarchyPath": "/op:PDF.ExtractInfo",
      "label": "PDF: Extract Info",
      "name": "PDF.ExtractInfo",
      "operationClass": "org.nuxeo.ecm.platform.pdf.operations.PDFExtractInfoOperation",
      "params": [
        {
          "description": null,
          "isRequired": false,
          "name": "properties",
          "order": 0,
          "type": "properties",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "save",
          "order": 0,
          "type": "boolean",
          "values": [
            "true"
          ],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "xpath",
          "order": 0,
          "type": "string",
          "values": [
            "file:content"
          ],
          "widget": null
        }
      ],
      "signature": [
        "document",
        "document",
        "documents",
        "documents"
      ],
      "url": "PDF.ExtractInfo",
      "version": "2021.64.6"
    },
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Conversion",
      "contributingComponent": "org.nuxeo.ecm.platform.pdf.operations",
      "description": "Returns a JSON string of an array of objects with page, subType, text and link fields. If getAll is true, returns all the links (Remote Go To, Launch and URI in the current version).",
      "hierarchyPath": "/op:PDF.ExtractLinks",
      "label": "PDF: Extract Links",
      "name": "PDF.ExtractLinks",
      "operationClass": "org.nuxeo.ecm.platform.pdf.operations.PDFExtractLinksOperation",
      "params": [
        {
          "description": null,
          "isRequired": false,
          "name": "getAll",
          "order": 0,
          "type": "boolean",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "type",
          "order": 0,
          "type": "string",
          "values": [
            "Launch",
            "Remote Go To",
            "URI"
          ],
          "widget": "Option"
        }
      ],
      "signature": [
        "blob",
        "string"
      ],
      "url": "PDF.ExtractLinks",
      "version": "2021.64.6"
    },
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Conversion",
      "contributingComponent": "org.nuxeo.ecm.platform.pdf.operations",
      "description": "Extract pages from <code>startPage</code> to <code>endPage</code> (inclusive) from the input object. If a Blob is used as input, the <code>xpath</xpath> parameter is not used. <code>title</code>, <code>subject</code> and <code>author</code> are optional. If the PDF is encrypted, a password is required.",
      "hierarchyPath": "/op:PDF.ExtractPages",
      "label": "PDF: Extract Pages",
      "name": "PDF.ExtractPages",
      "operationClass": "org.nuxeo.ecm.platform.pdf.operations.PDFExtractPagesOperation",
      "params": [
        {
          "description": null,
          "isRequired": true,
          "name": "endPage",
          "order": 0,
          "type": "long",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": true,
          "name": "startPage",
          "order": 0,
          "type": "long",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "fileName",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "password",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "pdfAuthor",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "pdfSubject",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "pdfTitle",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "xpath",
          "order": 0,
          "type": "string",
          "values": [
            "file:content"
          ],
          "widget": null
        }
      ],
      "signature": [
        "blob",
        "blob",
        "document",
        "blob"
      ],
      "url": "PDF.ExtractPages",
      "version": "2021.64.6"
    },
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Document",
      "contributingComponent": "org.nuxeo.ecm.platform.pdf.operations",
      "description": "Extracts raw text from a PDF. If the PDF is encrypted, a password is required. pdfxpath is the xpath of the blob (default to file:content). The extracted text is set in the targetxpath property of the input document, which is saved if save is true. If patterntofind is not provided, extracts all the text it can, else it extracts only the line where the pattern is found. If patterntofind is provided and removepatternfromresult is true, the line is returned without the pattern.",
      "hierarchyPath": "/op:PDF.ExtractText",
      "label": "PDF: Extract Text",
      "name": "PDF.ExtractText",
      "operationClass": "org.nuxeo.ecm.platform.pdf.operations.PDFExtractTextOperation",
      "params": [
        {
          "description": null,
          "isRequired": false,
          "name": "password",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "patterntofind",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "pdfxpath",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "removepatternfromresult",
          "order": 0,
          "type": "boolean",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "save",
          "order": 0,
          "type": "boolean",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "targetxpath",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        }
      ],
      "signature": [
        "document",
        "document",
        "documents",
        "documents"
      ],
      "url": "PDF.ExtractText",
      "version": "2021.64.6"
    },
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Conversion",
      "contributingComponent": "org.nuxeo.ecm.platform.pdf.operations",
      "description": "The input blob(s) always is(are) the first PDFs. The operation appends the blob referenced in the <code>toAppendVarName</code> Context variable. It then appends all the blobs stored in the <code>toAppendListVarName</code> Context variable. Returns the final PDF.",
      "hierarchyPath": "/op:PDF.MergeWithBlobs",
      "label": "PDF: Merge with Blob(s) ",
      "name": "PDF.MergeWithBlobs",
      "operationClass": "org.nuxeo.ecm.platform.pdf.operations.PDFMergeBlobsOperation",
      "params": [
        {
          "description": null,
          "isRequired": false,
          "name": "fileName",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "pdfAuthor",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "pdfSubject",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "pdfTitle",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "toAppendListVarName",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "toAppendVarName",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        }
      ],
      "signature": [
        "bloblist",
        "blob",
        "blob",
        "blob"
      ],
      "url": "PDF.MergeWithBlobs",
      "version": "2021.64.6"
    },
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Conversion",
      "contributingComponent": "org.nuxeo.ecm.platform.pdf.operations",
      "description": "The input document(s) always is(are) the first PDFs, and their PDF is read in the <code>xpath</code> field (but it is ok for the input doc to have no blob). The operation appends the blob referenced in the <code>toAppendVarName</code> Context variable. It then appends all the blobs stored in the <code>toAppendListVarName</code> Context variable. It then append the blobs stored in the docs whose IDs are passed in <code>toAppendDocIDsVarName</code> (the same <code>xpath</code> is used). Returns the final PDF.",
      "hierarchyPath": "/op:PDF.MergeWithDocs",
      "label": "PDF: Merge with Document(s)",
      "name": "PDF.MergeWithDocs",
      "operationClass": "org.nuxeo.ecm.platform.pdf.operations.PDFMergeDocumentsOperation",
      "params": [
        {
          "description": null,
          "isRequired": false,
          "name": "fileName",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "pdfAuthor",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "pdfSubject",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "pdfTitle",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "toAppendDocIDsVarName",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "toAppendListVarName",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "toAppendVarName",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "xpath",
          "order": 0,
          "type": "string",
          "values": [
            "file:content"
          ],
          "widget": null
        }
      ],
      "signature": [
        "document",
        "blob",
        "documents",
        "blob"
      ],
      "url": "PDF.MergeWithDocs",
      "version": "2021.64.6"
    },
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Conversion",
      "contributingComponent": "org.nuxeo.ecm.platform.pdf.operations",
      "description": "Removes the encryption, returns a copy of the blob. If the operation is ran on Document(s), xpath lets you specificy where to get the blob from (default: file:content).",
      "hierarchyPath": "/op:PDF.RemoveEncryption",
      "label": "PDF: Remove Encryption",
      "name": "PDF.RemoveEncryption",
      "operationClass": "org.nuxeo.ecm.platform.pdf.operations.PDFRemoveEncryptionOperation",
      "params": [
        {
          "description": null,
          "isRequired": false,
          "name": "ownerPwd",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "xpath",
          "order": 0,
          "type": "string",
          "values": [
            "file:content"
          ],
          "widget": null
        }
      ],
      "signature": [
        "bloblist",
        "bloblist",
        "blob",
        "blob",
        "document",
        "blob",
        "documents",
        "bloblist"
      ],
      "url": "PDF.RemoveEncryption",
      "version": "2021.64.6"
    },
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Conversion",
      "contributingComponent": "org.nuxeo.ecm.platform.pdf.operations",
      "description": "<p>Return a <em>new</em> blob combining the input PDF and the<code> image </code>blob.</p><p>Properties must be one or more of the following (the default if the property is not set):</p><ul><li><code>scale </code>(1.0) : 1.0 is the original size of the picture</li><li><code>alphaColor</code> (0.5) : 0 is full transparency, 1 is solid</li><li><code>xPosition </code>(0) : in pixels from left or between 0 (left) and 1 (right) if relativeCoordinates is set to true</li><li><code>yPosition</code> (0) : in pixels from bottom or between 0 (bottom) and 1 (top) if relativeCoordinates is set to true</li><li><code>invertX</code> (false) : xPosition starts from the right going left</li><li><code>invertY</code> (false) : yPosition starts from the top going down</li><li><code>relativeCoordinates</code> (false)</li></ul>",
      "hierarchyPath": "/op:PDF.WatermarkWithImage",
      "label": "PDF: Watermark with Image",
      "name": "PDF.WatermarkWithImage",
      "operationClass": "org.nuxeo.ecm.platform.pdf.operations.PDFWatermarkImageOperation",
      "params": [
        {
          "description": "The image blob to use for the watermark",
          "isRequired": true,
          "name": "image",
          "order": 0,
          "type": "blob",
          "values": [],
          "widget": null
        },
        {
          "description": "The watermark properties",
          "isRequired": false,
          "name": "properties",
          "order": 0,
          "type": "properties",
          "values": [],
          "widget": null
        }
      ],
      "signature": [
        "blob",
        "blob",
        "bloblist",
        "bloblist"
      ],
      "url": "PDF.WatermarkWithImage",
      "version": "2021.64.6"
    },
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Conversion",
      "contributingComponent": "org.nuxeo.ecm.platform.pdf.operations",
      "description": "Returns a new blob combining the input PDF and an overlaid PDF on every page.",
      "hierarchyPath": "/op:PDF.WatermarkWithPDF",
      "label": "PDF: Watermark with PDF",
      "name": "PDF.WatermarkWithPDF",
      "operationClass": "org.nuxeo.ecm.platform.pdf.operations.PDFWatermarkPDFOperation",
      "params": [
        {
          "description": "The PDF Blob to overlay on top of the input",
          "isRequired": true,
          "name": "overlayPdf",
          "order": 0,
          "type": "blob",
          "values": [],
          "widget": null
        }
      ],
      "signature": [
        "blob",
        "blob",
        "bloblist",
        "bloblist"
      ],
      "url": "PDF.WatermarkWithPDF",
      "version": "2021.64.6"
    },
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Conversion",
      "contributingComponent": "org.nuxeo.ecm.platform.pdf.operations",
      "description": "<p>Return a <em>new</em> blob combining the input PDF and the <code>text</code> text.</p><p>Properties must be one or more of the following (the default if the property is not set):</p><ul><li><code>fontFamily</code> (Helvetica) </li><li><code>fontSize</code> (72)</li><li><code>rotation</code> (0): in&nbsp;counterclockwise degrees</li><li><code>hex255Color</code> (#000000)</li><li><code>alphaColor</code> (0.5) : 0 is full transparency, 1 is solid</li><li><code>xPosition</code> (0) : in pixels from left or between 0 (left) and 1 (right) if relativeCoordinates is set to true</li><li><code>yPosition</code> (0) : in pixels from bottom or between 0 (bottom) and 1 (top) if relativeCoordinates is set to true</li><li><code>invertX</code> (false) : xPosition starts from the right going left</li><li><code>invertY</code> (false) : yPosition starts from the top going down</li><li><code>relativeCoordinates</code> (false)</li></ul>",
      "hierarchyPath": "/op:PDF.WatermarkWithText",
      "label": "PDF: Watermark with Text",
      "name": "PDF.WatermarkWithText",
      "operationClass": "org.nuxeo.ecm.platform.pdf.operations.PDFWatermarkTextOperation",
      "params": [
        {
          "description": "The text to use for the watermark",
          "isRequired": true,
          "name": "text",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": "The watermark properties",
          "isRequired": false,
          "name": "properties",
          "order": 0,
          "type": "properties",
          "values": [],
          "widget": null
        }
      ],
      "signature": [
        "blob",
        "blob",
        "bloblist",
        "bloblist"
      ],
      "url": "PDF.WatermarkWithText",
      "version": "2021.64.6"
    }
  ],
  "packages": [],
  "pluginSnapshots": {},
  "releaseDate": 1734363736555,
  "version": "2021.64"
}