{"id":25353980,"url":"https://github.com/aborroy/alfresco-transform-service-3.0.0","last_synced_at":"2026-05-04T12:37:21.177Z","repository":{"id":140883486,"uuid":"605039331","full_name":"aborroy/alfresco-transform-service-3.0.0","owner":"aborroy","description":"Demo of new features available for Alfresco Transform Service 3.0.0","archived":false,"fork":false,"pushed_at":"2023-02-23T14:17:38.000Z","size":40,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-04T23:20:00.704Z","etag":null,"topics":["alfresco","docker","docker-compose"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aborroy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-02-22T10:09:43.000Z","updated_at":"2024-06-20T21:22:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"44db7958-bf58-4dd0-8cc9-fa24d3dd6283","html_url":"https://github.com/aborroy/alfresco-transform-service-3.0.0","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aborroy/alfresco-transform-service-3.0.0","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aborroy%2Falfresco-transform-service-3.0.0","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aborroy%2Falfresco-transform-service-3.0.0/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aborroy%2Falfresco-transform-service-3.0.0/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aborroy%2Falfresco-transform-service-3.0.0/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aborroy","download_url":"https://codeload.github.com/aborroy/alfresco-transform-service-3.0.0/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aborroy%2Falfresco-transform-service-3.0.0/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32607999,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"ssl_error","status_checked_at":"2026-05-04T10:08:02.005Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alfresco","docker","docker-compose"],"created_at":"2025-02-14T19:56:13.542Z","updated_at":"2026-05-04T12:37:21.171Z","avatar_url":"https://github.com/aborroy.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ACS 7.3: Upgrading to Transform Core 3.0.0\n\nThis project includes the new features provided by [Transform Core 3.0.0](https://github.com/Alfresco/alfresco-transform-core/tree/3.0.0), released together with ACS Community 7.3.x.\n\nFor Enterprise Customers, there is an additional product named [Transform Service 2.0.0](https://docs.alfresco.com/transform-service/latest/). The main difference with the Community Transform Core is that Transform Service provides asynchronous transformations, to support [clustering and scaling up](https://github.com/aborroy/acs-transform-cluster) operations for large volumes.\n\n## Source Code\n\nAll the Source Code from Transform Core is available in following Alfresco GitHub project:\n\nhttps://github.com/Alfresco/alfresco-transform-core\n\nThe project includes a number of Transformation Engines that can be deployed together (AIO) or separately:\n\nhttps://github.com/Alfresco/alfresco-transform-core/tree/master/engines\n\n* [ImageMagick](https://imagemagick.org/index.php): images and thumbnails\n* [LibreOffice](https://www.libreoffice.org): office documents (including Microsoft formats)\n* [pdfrenderer](https://pdfium.googlesource.com/pdfium/+/master/README.md): PDF format\n* [Apache Tika](https://tika.apache.org): metadata extraction\n* [Misc](https://github.com/Alfresco/alfresco-transform-core/tree/master/engines/misc): HTML, iWorks, EML...\n\n\n## Deployment\n\nSample Docker Compose configuration is described below, despite every service can be deployed manually installing dependencies (like ImageMagick or LibreOffice) and executing the engine as a regular Spring Boot app.\n\nDeploying as a single Core AIO (All-In-One) T-Engine:\n\n```\nservices:\n\n  alfresco:\n    image: alfresco/alfresco-content-repository-community:7.3.0\n    environment:\n\t  JAVA_OPTS: \u003e-\n\t    -DlocalTransform.core-aio.url=http://transform-core-aio:8090/\n\n  transform-core-aio:\n    image: alfresco/alfresco-transform-core-aio:3.0.0\n```\n\nRunning configuration is available in [docker-compose-aio](docker-compose-aio/docker-compose.yml)\n\n\nAs a set of individual T-Engines\n\n```\nservices:\n\n  alfresco:\n    image: alfresco/alfresco-content-repository-community:7.3.0\n    environment:\n      JAVA_OPTS: \u003e-\n        -DlocalTransform.core-aio.url=\n        -DlocalTransform.pdfrenderer.url=http://alfresco-pdf-renderer:8090/\n        -DlocalTransform.imagemagick.url=http://imagemagick:8090/\n        -DlocalTransform.libreoffice.url=http://libreoffice:8090/\n        -DlocalTransform.tika.url=http://tika:8090/\n        -DlocalTransform.misc.url=http://transform-misc:8090/\n\n  alfresco-pdf-renderer:\n    image: alfresco/alfresco-pdf-renderer:3.0.0\n\n  imagemagick:\n    image: alfresco/alfresco-imagemagick:3.0.0\n\n  libreoffice:\n      image: alfresco/alfresco-libreoffice:3.0.0\n\n  tika:\n      image: alfresco/alfresco-tika:3.0.0\n\n  transform-misc:\n      image: alfresco/alfresco-transform-misc:3.0.0\n```\n\nRunning configuration is available in [docker-compose-engines](docker-compose-engines/docker-compose.yml)\n\n\n## Configuration\n\nOnce the service is running, registered transformations are available in Transform Configuration endpoint:\n\nhttp://localhost:8090/transform/config\n\nAdditional endpoints for http://localhost:8090:\n\n* `POST /transform` to perform a transform. Performs a transform on content uploaded as a Multipart File and provides the resulting content as a download. Transform options are extracted from the request properties. The following are not added as transform options, but are used to select the transformer: `sourceMimetype` \u0026 `targetMimetype`\n* `GET /` provides an html test page to upload a source file, enter transform options and issue a synchronous transform request.\n* `GET /log` provides a page with basic log information.\n* `GET /error` provides an error page when testing.\n* `GET /version` provides a String message to be included in client debug messages.\n\n\n## Changing default configuration\n\nAdditional config files (which may be resources on the classpath or external files) are specified in Spring Boot properties or such as transform.config.file.\u003cfilename\u003e or environment variables like TRANSFORM_CONFIG_FILE_\u003cfilename\u003e.\n\n**Configuration**\n\n[docker-compose.yml](docker-compose-extension/docker-compose.yml)\n\n```\n  transform-core-aio:\n    image: alfresco/alfresco-transform-core-aio:3.0.0\n    environment:\n      TRANSFORM_CONFIG_FILE_PDFOVERRIDESUPPORTED: \"/modify-supported.json\"\n    volumes:\n      - ./modify-supported.json:/modify-supported.json\n```\n\n**Overriding**\n\n[modify-supported.json](docker-compose-extension/modify-supported.json)\n\n```\n{\n  \"addSupported\": [\n    {\n      \"transformerName\": \"imagemagick\",\n      \"sourceMediaType\": \"image/tiff\",\n      \"targetMediaType\": \"application/pdf\",\n      \"maxSourceSizeBytes\": -1\n    }\n  ],\n  \"overrideSupported\": [\n    {\n      \"transformerName\": \"PdfBox\",\n      \"sourceMediaType\": \"application/pdf\",\n      \"targetMediaType\": \"text/plain\",\n      \"maxSourceSizeBytes\": -1\n    },\n    {\n      \"transformerName\": \"TikaAuto\",\n      \"sourceMediaType\": \"application/pdf\",\n      \"targetMediaType\": \"text/plain\",\n      \"maxSourceSizeBytes\": -1\n    }\n  ]\n}\n```\n\nThe configuration above adds a new transform pipeline (from TIFF to PDF) and overrides existing transform pipelines (PDF to Text) to unlimit the size of transformed files.\n\nAdditional options to override transforms are available in https://github.com/Alfresco/alfresco-transform-core/blob/master/docs/transform-config.md#overriding-transforms\n\n\n[override-pdfrenderer.json](docker-compose-extension/override-pdfrenderer.json)\n\n```\n{\n  \"transformers\": [\n    {\n      \"transformerName\": \"pdfrenderer\",\n      \"supportedSourceAndTargetList\": [\n        {\"sourceMediaType\": \"application/pdf\", \"targetMediaType\": \"image/png\" }\n      ],\n      \"transformOptions\": [\n        \"pdfRendererOptions\"\n      ]\n    }\n  ]\n}\n```\n\nThe configuration above removes the [existing pipeline](https://github.com/Alfresco/alfresco-transform-core/blob/3.0.0/engines/pdfrenderer/src/main/resources/pdfrenderer_engine_config.json#L13) (from Illustrator to PNG) in `pdfrenderer` engine.\n\nAdditional options to override source and target pipelines are available in https://github.com/Alfresco/alfresco-transform-core/blob/master/docs/transform-config.md#overriding-the-supportedsourceandtargetlist\n\n\n**Removing**\n\n[remove-iworks.json](docker-compose-extension/remove-iworks.json)\n\n```\n{\n  \"removeTransformers\" : [\n    \"appleIWorks\"\n   ]\n}\n```\n\nThe configuration above removes `appleIWorks` transformer.\n\nAdditional options to remove transformers are available in https://github.com/Alfresco/alfresco-transform-core/blob/master/docs/transform-config.md#removing-a-transformer\n\n\n**Modifying defaults**\n\n\n[default-max-priority.json](docker-compose-extension/default-max-priority.json)\n\n```\n{\n  \"supportedDefaults\": [\n    {\n      \"transformerName\": \"Office\",             \n      \"sourceMediaType\": \"application/zip\",\n      \"maxSourceSizeBytes\": 18874368\n    },\n    {\n      \"sourceMediaType\": \"application/msword\", \n      \"maxSourceSizeBytes\": 4194304,\n      \"priority\": 45\n    },\n    {\n      \"priority\": 60                           \n    },\n    {\n      \"maxSourceSizeBytes\": -1                 \n    }\n  ]\n}\n```\n\nAdditional options to modify defaults are available in https://github.com/Alfresco/alfresco-transform-core/blob/master/docs/transform-config.md#default-maxsourcesizebytes-and-priority-values\n\n\n\n# Creating new transform engine\n\nTo create a new Transform Engine, implementing two Java interfaces is required:\n\n* `org.alfresco.transform.base.TransformEngine` to provide basic information about the Engine and the Transform pipelines\n* `org.alfresco.transform.base.CustomTransformer` to implement the transformation operation\n\nSample implementation for a [Pandoc](https://pandoc.org) Transform Engine is provided in [PandocTransformEngine.java](pandoc-t-engine/src/main/java/org/alfresco/transform/PandocTransformEngine.java) and Custom Transformers in [MarkdownTransformer.java](pandoc-t-engine/src/main/java/org/alfresco/transform/MarkdownTransformer.java) and [LatexTransformer.java](pandoc-t-engine/src/main/java/org/alfresco/transform/LatexTransformer.java)\n\nPipeline for supported transformations should be defined in JSON format following [T-Engine configuration](https://github.com/Alfresco/alfresco-transform-core/blob/master/docs/transform-config.md#t-engine-configuration) guideline.\n\nSample pipeline for the Pandoc Transform Engine is provided in [engine_config.json](pandoc-t-engine/src/main/resources/engine_config.json), to transform Markdown and LaTeX to PDF mimetype.\n\nOnce the Docker Image has been built as `alfresco/pandoc-t-engine` (details available in [README.md](pandoc-t-engine/README.md)), deployment configuration for Docker Compose includes a URL environment variable in `alfresco` service and `transform-pandoc` service deployment:\n\n```\nservices:\n  alfresco:\n    image: alfresco/alfresco-content-repository-community:7.3.1\n    mem_limit: 3200m\n    environment:\n      JAVA_OPTS: \u003e-\n        -DlocalTransform.pandoc.url=http://transform-pandoc:8090/\n\n  transform-pandoc:\n    image: alfresco/pandoc-t-engine:latest\n    mem_limit: 1g\n    environment:\n      JAVA_OPTS: \" -XX:MinRAMPercentage=50 -XX:MaxRAMPercentage=80\"\n    ports:\n        - 8096:8090    \n```\n\nComplete sample for this deployment is available in [docker-compose.yml](docker-compose-pandoc/docker-compose.yml)\n\n\n# Additional deployment configurations\n\nLimit the number of threads to be used for transformation operations (between 4 and 12 in the sample) and change the log level (to ERROR in the sample):\n\n```\n    transform-core-aio:\n        image: alfresco/alfresco-transform-core-aio:3.0.0\n        environment:\n            JAVA_OPTS: \"\n              -Dserver.tomcat.threads.max=12\n              -Dserver.tomcat.threads.min=4\n              -Dlogging.level.org.alfresco.transform.common.TransformerDebug=ERROR\n            \"\n```\n\nScaling up Transform Service samples are available in https://github.com/aborroy/acs-transform-cluster\n\nSSL/TLS configuration sample is available in https://github.com/aborroy/alfresco-transform-ssl\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faborroy%2Falfresco-transform-service-3.0.0","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faborroy%2Falfresco-transform-service-3.0.0","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faborroy%2Falfresco-transform-service-3.0.0/lists"}