From 42a2ac5912e21811c10f1a8dda76ff93569c3fcc Mon Sep 17 00:00:00 2001 From: Mohammad Murshed Date: Wed, 25 Jun 2025 11:41:27 +0200 Subject: [PATCH 01/10] Add documentation for the private PDF Document Generation service --- .../_index.md} | 0 .../document-generation/private-service.md | 131 ++++++++++++++++++ 2 files changed, 131 insertions(+) rename content/en/docs/marketplace/platform-supported-content/modules/{document-generation.md => document-generation/_index.md} (100%) create mode 100644 content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md diff --git a/content/en/docs/marketplace/platform-supported-content/modules/document-generation.md b/content/en/docs/marketplace/platform-supported-content/modules/document-generation/_index.md similarity index 100% rename from content/en/docs/marketplace/platform-supported-content/modules/document-generation.md rename to content/en/docs/marketplace/platform-supported-content/modules/document-generation/_index.md diff --git a/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md b/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md new file mode 100644 index 00000000000..c49cb2b6e79 --- /dev/null +++ b/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md @@ -0,0 +1,131 @@ +--- +title: "PDF Document Generation" +url: /appstore/modules/document-generation/private-service/ +description: "Describes the configuration and usage of the private PDF Document Generation service, which is used in combination with the PDF Document Generation module in the Marketplace." +#If moving or renaming this doc file, implement a temporary redirect and let the respective team know they should update the URL in the product. See Mapping to Products for more details. +--- + +## Introduction + +For generating PDF documents with the [PDF Document Generation module](/appstore/modules/document-generation/), Mendix currently offers a public, Mendix hosted, PDF document generation service. In some cases, access to this public service is not available, for example for apps running in air-gapped environments. + +For these scenarios, Mendix offers a Docker image that can be used to run a (set of) private PDF Document Generation service(s) for Mendix apps. + +### Features {#features} + +* Can run as a centralized service or as a container per app. +* Can run on any container infrastructure that supports Docker as the container runtime, like Kubernetes, AWS ECS, etc. +* No (enforced) rate limits. The actual rate limit depends on the resource configuration and usage of the container. +* Configurable limits for maximum file size and maximum page rendering time. + +### Limitations {#limitations} + +* Setup, management and monitoring of the service is the responsibility of the customer. +* The service is open to all applications that can access the service. If additional access restrictions are required, these need be setup on network-level, to be configured by the customer. +* Currently, it is not possible to import custom certificate authorities. Apps that use a self-signed or internal certificate are only supported when disabling certificate validation in the service. +* The customer is responsible for setting up a retry mechanism in the application to handle failures or time-outs of the service. + +### Prerequisites {#prerequisites} + +* You have a good understanding on how to run and manage Docker containers. +* (Optional) You are familiar with using Helm charts for Kubernetes deployments. +* You are familiar with PDF Document Generation module. For more information see [PDF Document Generation](/appstore/modules/document-generation/). +* Your deployment environment needs to allow bi-directional communication between the Mendix app(s) and the Docker container(s) running the private PDF Document Generation service. + +## Installation {#installation} + +### Considerations {#considerations} + +The service can be setup in several ways, depending on the specific customer needs such as the required isolation level and scalability requirements. In order to install the service, make sure to review the following considerations and adapt your setup accordingly. + +#### Resources + +The required resources depends on demand, in order to be able to generate 5 documents in parallel, we recommend the following as a minimum: +* CPU: > 2 +* Memory: > 4096M + +#### Isolation + +Requests share the same container resources, which has the following implications: + +* Requests in the same container could affect each other, in terms of performance. +* Container crashes could affect all requests being processed at the time of the crash. + +Requests in the same container are isolated on browser level, using an incognito browser context per request. + +#### Scalability + +You can scale the service in two ways: + +1. Using **vertical** scaling, with a single container setup + + * One container can serve multiple requests at a time; where requests are processed in parallel using an isolated browser context per request. + * The browser keeps running after processing a request. + * No load balancing needed in case of a single container instance. + +1. Using **horizontal** scaling, where multiple containers run in parallel. + * Each container can serve multiple requests at a time. + +Running multiple container replicas requires additional load balancing, this is not provided by Mendix. Customers need to configure and use their own preferred load balancing tools, for example [Nginx](https://nginx.org/). + +### Installing the service + +In order to install the service, the following artifacts are available: + +* The Docker image for the PDF Document Generation service. +* An (optional) Helm chart that can be used to setup the service in case you are using Helm charts to manage your deployments. + +#### Install using Docker + +Run the docker container using `docker run -p 8085:8085 --name document-generation mendix/document-generation-service:`, where `` should be replaced with the version of the service, for example `1.0.0`. + +This will create a docker container and expose it on port `8085`. + +#### Install using Helm + +Install the service using `helm install document-generation `. + +This will create a Kubernetes deployment and service exposed on port `8085`. + +## Configuration {#configuration} + +The service has several configuration options to adapt the service to your specific needs. See the table in [section 3.2](#configuration-options) for more details. + +### Setting configuration values {#setting-configuration-values} + +The approach for setting the configuration values depends on the installation type. Follow the applicable instructions below. + +#### Configure using Docker + +When using Docker to run the image, add the configuration using the provided environment variable(s), for example: `docker run -p 8085:8085 -e MAX_DOCUMENT_SIZE= --name document-generation mendix/document-generation-service:`. + +#### Configure using Helm + +When using Helm, you can configure the options using the `values.yaml` file. + +### Available configuration options {#configuration-options} + +| Environment variable | Helm chart variable | Default value | Description | +|----------------------|---------------------|---------------|-------------| +| `MAX_DOCUMENT_SIZE` | `maxDocumentSize` | `25000000` (25 MB) | The maximum size for PDF documents generated using the service. When a PDF exceeds this file size, the request gets aborted. | +| `MAX_PAGE_RENDERING_TIME` | `maxPageRenderingTime` | `30000` (30 seconds) | The maximum time to wait for the page to finish loading and rendering. If loading the page exceeds this time, a [Wait for Content](/appstore/modules/document-generation/#wait-for-content-exception) exception will be sent to the module. | +| `ACCEPT_INSECURE_CERTIFICATES` | `acceptInsecureCertificates` | `false` | Allows the use of untrusted certificates, for example when using self-signed certificates. **Warning:** this will disable certificate validation, and will also allow the use of invalid certificates. Be aware of the resulting security risks. | + +## Usage {#usage} + +### Configure your Mendix app(s) + +When you have the Document Generation container running in your environment, you should configure your Mendix application(s) to use the private service. + +* Make sure that you are using version 2.1.0 or higher of the PDF Document Generation module. +* Configure the `DocumentGeneration.OverrideServiceType` constant to Private. +* Configure the `DocumentGeneration.ServiceEndpoint` constant to point to the container address and port, for example: `http://document-generation:8085`. +* To generate your first document, follow the instructions in the module documentation [PDF Document Generation](/appstore/modules/document-generation/). + +Note: you do not need to register your application when using a private service. In this case, it is therefore also not required to include the Snip_AppRegistration snippet in your app. + +#### Logging + +All application level errors are sent back to the module, see the [module documentation](/appstore/modules/document-generation/) for more details. + +Technical logs of the service are available on container level. In case you run multiple containers, the logs will be spread across them. We recommend to setup a centralized monitoring solution yourself. \ No newline at end of file From 79bfefecc63cc0df4c78d5f4c94c9c5b2a596d52 Mon Sep 17 00:00:00 2001 From: nicoletacoman Date: Thu, 26 Jun 2025 13:58:12 +0200 Subject: [PATCH 02/10] TW review + release note --- .../studio-pro-10/pluggable-widgets/_index.md | 0 .../document-generation/private-service.md | 118 +++++++++--------- .../modules/snowflake/mendix-data-loader.md | 0 .../marketplace/general-marketplace.md | 6 + 4 files changed, 65 insertions(+), 59 deletions(-) mode change 100644 => 100755 content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/pluggable-widgets/_index.md mode change 100644 => 100755 content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md mode change 100644 => 100755 content/en/docs/marketplace/platform-supported-content/modules/snowflake/mendix-data-loader.md diff --git a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/pluggable-widgets/_index.md b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/pluggable-widgets/_index.md old mode 100644 new mode 100755 diff --git a/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md b/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md old mode 100644 new mode 100755 index c49cb2b6e79..185badd15c2 --- a/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md @@ -1,105 +1,107 @@ --- -title: "PDF Document Generation" -url: /appstore/modules/document-generation/private-service/ +title: "Private PDF Document Generation Service" +url: /appstore/modules/private-document-generation-service/ description: "Describes the configuration and usage of the private PDF Document Generation service, which is used in combination with the PDF Document Generation module in the Marketplace." #If moving or renaming this doc file, implement a temporary redirect and let the respective team know they should update the URL in the product. See Mapping to Products for more details. --- ## Introduction -For generating PDF documents with the [PDF Document Generation module](/appstore/modules/document-generation/), Mendix currently offers a public, Mendix hosted, PDF document generation service. In some cases, access to this public service is not available, for example for apps running in air-gapped environments. +Mendix offers a public, Mendix-hosted PDF document generation service included with the [PDF Document Generation module](/appstore/modules/document-generation/). -For these scenarios, Mendix offers a Docker image that can be used to run a (set of) private PDF Document Generation service(s) for Mendix apps. +In some cases, however, access to this public service is not available, such as for apps running in air-gapped environments. For these scenarios, Mendix offers a private PDF Document Generation service for Mendix apps. ### Features {#features} -* Can run as a centralized service or as a container per app. -* Can run on any container infrastructure that supports Docker as the container runtime, like Kubernetes, AWS ECS, etc. -* No (enforced) rate limits. The actual rate limit depends on the resource configuration and usage of the container. -* Configurable limits for maximum file size and maximum page rendering time. +These are the main features of the private PDF Document Generation service: + +* It can run as a centralized service or as a container per app. +* It can run on any container infrastructure that supports Docker as the container runtime, such as Kubernetes, AWS ECS, etc. +* It has no enforced rate limits. The actual rate limit depends on the resource configuration and usage of the container. +* It has configurable limits for maximum file size and maximum page rendering time. ### Limitations {#limitations} -* Setup, management and monitoring of the service is the responsibility of the customer. -* The service is open to all applications that can access the service. If additional access restrictions are required, these need be setup on network-level, to be configured by the customer. -* Currently, it is not possible to import custom certificate authorities. Apps that use a self-signed or internal certificate are only supported when disabling certificate validation in the service. -* The customer is responsible for setting up a retry mechanism in the application to handle failures or time-outs of the service. +These are the limitations of using the private PDF Document Generation service: + +* Setup, management, and monitoring of the service is your responsibility. +* The service is open to all applications that can access it. If additional access restrictions are required, you need to set these up at the network level and configure them. +* You cannot import custom certificate authorities. Apps that use a self-signed or internal certificate are only supported when you disable certificate validation in the service. +* You are responsible for setting up a retry mechanism in the application to handle failures or timeouts of the service. ### Prerequisites {#prerequisites} -* You have a good understanding on how to run and manage Docker containers. +Before you start using the private PDF Document Generation service, make sure you meet these prerequisites: + +* You have a good understanding of how to run and manage Docker containers. * (Optional) You are familiar with using Helm charts for Kubernetes deployments. -* You are familiar with PDF Document Generation module. For more information see [PDF Document Generation](/appstore/modules/document-generation/). -* Your deployment environment needs to allow bi-directional communication between the Mendix app(s) and the Docker container(s) running the private PDF Document Generation service. +* You are familiar with the PDF Document Generation module. For more information, refer to [PDF Document Generation](/appstore/modules/document-generation/). +* Your deployment environment needs to allow bidirectional communication between Mendix apps and the Docker containers running the private PDF Document Generation service. ## Installation {#installation} -### Considerations {#considerations} +The service can be set up in several ways, depending on the specific customer needs, such as the required isolation level and the scalability requirements. To install the service, make sure you review the following considerations and adapt your setup accordingly. -The service can be setup in several ways, depending on the specific customer needs such as the required isolation level and scalability requirements. In order to install the service, make sure to review the following considerations and adapt your setup accordingly. +### Required Resources -#### Resources +The required resources depend on demand. For instance, to be able to generate 5 documents in parallel, we recommend the following as a minimum: -The required resources depends on demand, in order to be able to generate 5 documents in parallel, we recommend the following as a minimum: -* CPU: > 2 -* Memory: > 4096M +* CPU: more than 2 CPU cores +* Memory: more than 4096 MB of RAM -#### Isolation +### Isolation Requests share the same container resources, which has the following implications: -* Requests in the same container could affect each other, in terms of performance. +* Requests in the same container could affect each other in terms of performance. * Container crashes could affect all requests being processed at the time of the crash. -Requests in the same container are isolated on browser level, using an incognito browser context per request. +Requests in the same container are isolated at the browser level, using an incognito browser context per request. -#### Scalability +### Scalability You can scale the service in two ways: -1. Using **vertical** scaling, with a single container setup +* Using vertical scaling, with a single container setup - * One container can serve multiple requests at a time; where requests are processed in parallel using an isolated browser context per request. + * One container can serve multiple requests at a time, where requests are processed in parallel using an isolated browser context per request. * The browser keeps running after processing a request. - * No load balancing needed in case of a single container instance. + * No load balancing is needed in case of a single container instance. -1. Using **horizontal** scaling, where multiple containers run in parallel. +* Using horizontal scaling, where multiple containers run in parallel + * Each container can serve multiple requests at a time. -Running multiple container replicas requires additional load balancing, this is not provided by Mendix. Customers need to configure and use their own preferred load balancing tools, for example [Nginx](https://nginx.org/). +Running multiple container replicas requires additional load balancing, which is not provided by Mendix. You need to configure and use your own preferred load balancing tools, such as [Nginx](https://nginx.org/). -### Installing the service +### Installing the Service In order to install the service, the following artifacts are available: * The Docker image for the PDF Document Generation service. -* An (optional) Helm chart that can be used to setup the service in case you are using Helm charts to manage your deployments. +* An optional Helm chart that can be used to set up the service if you are using Helm charts to manage your deployments. -#### Install using Docker +#### Installing through Docker -Run the docker container using `docker run -p 8085:8085 --name document-generation mendix/document-generation-service:`, where `` should be replaced with the version of the service, for example `1.0.0`. +Run the docker container through the `docker run -p 8085:8085 --name document-generation mendix/document-generation-service:`, command, where `` should be replaced with the version of the service, such as `1.0.0`. This creates a Docker container, which is exposed on port `8085`. -This will create a docker container and expose it on port `8085`. +#### Installing through Helm -#### Install using Helm - -Install the service using `helm install document-generation `. - -This will create a Kubernetes deployment and service exposed on port `8085`. +Install the service through the `helm install document-generation ` command. This creates a Kubernetes deployment, which is exposed on port `8085`. ## Configuration {#configuration} -The service has several configuration options to adapt the service to your specific needs. See the table in [section 3.2](#configuration-options) for more details. +The service has several [configuration options](#configuration-options) for adapting to your specific needs. -### Setting configuration values {#setting-configuration-values} +### Setting Configuration Values {#setting-configuration-values} -The approach for setting the configuration values depends on the installation type. Follow the applicable instructions below. +The approach for setting configuration values depends on the installation type. Follow the applicable instructions described in the [Available Configuration Options](#configuration-options) table. -#### Configure using Docker +#### Configuring through Docker -When using Docker to run the image, add the configuration using the provided environment variable(s), for example: `docker run -p 8085:8085 -e MAX_DOCUMENT_SIZE= --name document-generation mendix/document-generation-service:`. +When using Docker to run the image, add the configuration using the provided environment variables. An example of this is `docker run -p 8085:8085 -e MAX_DOCUMENT_SIZE= --name document-generation mendix/document-generation-service:`. -#### Configure using Helm +#### Configuring through Helm When using Helm, you can configure the options using the `values.yaml` file. @@ -107,25 +109,23 @@ When using Helm, you can configure the options using the `values.yaml` file. | Environment variable | Helm chart variable | Default value | Description | |----------------------|---------------------|---------------|-------------| -| `MAX_DOCUMENT_SIZE` | `maxDocumentSize` | `25000000` (25 MB) | The maximum size for PDF documents generated using the service. When a PDF exceeds this file size, the request gets aborted. | -| `MAX_PAGE_RENDERING_TIME` | `maxPageRenderingTime` | `30000` (30 seconds) | The maximum time to wait for the page to finish loading and rendering. If loading the page exceeds this time, a [Wait for Content](/appstore/modules/document-generation/#wait-for-content-exception) exception will be sent to the module. | -| `ACCEPT_INSECURE_CERTIFICATES` | `acceptInsecureCertificates` | `false` | Allows the use of untrusted certificates, for example when using self-signed certificates. **Warning:** this will disable certificate validation, and will also allow the use of invalid certificates. Be aware of the resulting security risks. | - -## Usage {#usage} +| `MAX_DOCUMENT_SIZE` | `maxDocumentSize` | `25000000` (25 MB) | The maximum size for PDF documents generated using the service. When a PDF exceeds this file size, the request is aborted. | +| `MAX_PAGE_RENDERING_TIME` | `maxPageRenderingTime` | `30000` (30 seconds) | The maximum time to wait for the page to finish loading and rendering. If loading the page exceeds this time, a [Wait for Content](/appstore/modules/document-generation/#wait-for-content-exception) exception is sent to the module. | +| `ACCEPT_INSECURE_CERTIFICATES` | `acceptInsecureCertificates` | `false` |

Allows the use of untrusted certificates, such as when using self-signed certificates.

**Warning:** This disables certificate validation, and allows the use of invalid certificates. Be aware of any resulting security risks.

| -### Configure your Mendix app(s) +## Configuring your Mendix Apps -When you have the Document Generation container running in your environment, you should configure your Mendix application(s) to use the private service. +When you have the PDF Document Generation container running in your environment, you need to configure your Mendix apps to use the private service, as follows: * Make sure that you are using version 2.1.0 or higher of the PDF Document Generation module. -* Configure the `DocumentGeneration.OverrideServiceType` constant to Private. -* Configure the `DocumentGeneration.ServiceEndpoint` constant to point to the container address and port, for example: `http://document-generation:8085`. +* Configure the `DocumentGeneration.OverrideServiceType` constant to `Private`. +* Configure the `DocumentGeneration.ServiceEndpoint` constant to point to the container address and port, such as `http://document-generation:8085`. * To generate your first document, follow the instructions in the module documentation [PDF Document Generation](/appstore/modules/document-generation/). -Note: you do not need to register your application when using a private service. In this case, it is therefore also not required to include the Snip_AppRegistration snippet in your app. +{{% alert color="info" %}}You do not need to register your application when using a private service. In this case, it is therefore also not required to include the `Snip_AppRegistration` snippet in your app.{{% /alert %}} -#### Logging +## Logging -All application level errors are sent back to the module, see the [module documentation](/appstore/modules/document-generation/) for more details. +All application level errors are sent back to the module. Refer to [PDF Document Generation](/appstore/modules/document-generation/) for details. -Technical logs of the service are available on container level. In case you run multiple containers, the logs will be spread across them. We recommend to setup a centralized monitoring solution yourself. \ No newline at end of file +Technical logs of the service are available at the container level. If you run multiple containers, logs are spread across them. We recommend to set up a centralized monitoring solution yourself. diff --git a/content/en/docs/marketplace/platform-supported-content/modules/snowflake/mendix-data-loader.md b/content/en/docs/marketplace/platform-supported-content/modules/snowflake/mendix-data-loader.md old mode 100644 new mode 100755 diff --git a/content/en/docs/releasenotes/marketplace/general-marketplace.md b/content/en/docs/releasenotes/marketplace/general-marketplace.md index 1f15583544c..5398d6faebc 100644 --- a/content/en/docs/releasenotes/marketplace/general-marketplace.md +++ b/content/en/docs/releasenotes/marketplace/general-marketplace.md @@ -14,6 +14,12 @@ These release notes cover changes made to the [Mendix Marketplace](/appstore/). ## 2025 +### June 26, 2025 + +#### Private PDF Document Generation Service + +We have released a [private PDF Document Generation service](/appstore/modules/private-document-generation-service/) which you can use in air-gapped environments, where the [PDF Document Generation](/appstore/modules/document-generation/) module is restricted. + ### June 25, 2025 #### Mendix Data Loader Version 2.3.0 From 57b7372555d2d6745c88a1eb4b41406ea981151c Mon Sep 17 00:00:00 2001 From: nicoletacoman Date: Thu, 26 Jun 2025 15:39:40 +0200 Subject: [PATCH 03/10] Minor fixes on RNs --- .../docs/releasenotes/marketplace/general-marketplace.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/en/docs/releasenotes/marketplace/general-marketplace.md b/content/en/docs/releasenotes/marketplace/general-marketplace.md index 5398d6faebc..95a8aadc282 100644 --- a/content/en/docs/releasenotes/marketplace/general-marketplace.md +++ b/content/en/docs/releasenotes/marketplace/general-marketplace.md @@ -16,15 +16,15 @@ These release notes cover changes made to the [Mendix Marketplace](/appstore/). ### June 26, 2025 -#### Private PDF Document Generation Service +#### New Features -We have released a [private PDF Document Generation service](/appstore/modules/private-document-generation-service/) which you can use in air-gapped environments, where the [PDF Document Generation](/appstore/modules/document-generation/) module is restricted. +* We have released a [private PDF Document Generation service](/appstore/modules/private-document-generation-service/) which you can use in air-gapped environments, where the [PDF Document Generation](/appstore/modules/document-generation/) module is restricted. ### June 25, 2025 -#### Mendix Data Loader Version 2.3.0 +#### New Features -This version of [Mendix Data Loader](/appstore/modules/snowflake/mendix-data-loader/) allows you to configure a specific warehouse for your task, which is used as a compute resource when the task triggers data ingestion. This is controlled through two new options: **Use Specific Warehouse** and **Warehouse**. +* We have released [Mendix Data Loader](/appstore/modules/snowflake/mendix-data-loader/) version 2.3.0. This version allows you to configure a specific warehouse for your task, which is used as a compute resource when the task triggers data ingestion. This is controlled through two new options: **Use Specific Warehouse** and **Warehouse**. ### June 19, 2025 From 260018907569a11e6f7087b531e01a931a51e93a Mon Sep 17 00:00:00 2001 From: nicoletacoman Date: Fri, 27 Jun 2025 09:12:58 +0200 Subject: [PATCH 04/10] Added a release note --- .../en/docs/releasenotes/marketplace/general-marketplace.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/releasenotes/marketplace/general-marketplace.md b/content/en/docs/releasenotes/marketplace/general-marketplace.md index 95a8aadc282..f7aa70d4e06 100644 --- a/content/en/docs/releasenotes/marketplace/general-marketplace.md +++ b/content/en/docs/releasenotes/marketplace/general-marketplace.md @@ -14,11 +14,11 @@ These release notes cover changes made to the [Mendix Marketplace](/appstore/). ## 2025 -### June 26, 2025 +### June 27, 2025 #### New Features -* We have released a [private PDF Document Generation service](/appstore/modules/private-document-generation-service/) which you can use in air-gapped environments, where the [PDF Document Generation](/appstore/modules/document-generation/) module is restricted. +* The [PDF Document Generation](/appstore/modules/document-generation/) module now supports the use of [private PDF document generation service instances](/appstore/modules/private-document-generation-service/). This flexible solution is based on Docker, and is hosted and managed by you. It allows you to run your own version of the PDF Document Generation service with additional control and configuration options, and it specifically targets air-gapped apps, or tailored performance and data sharing requirements. ### June 25, 2025 From 69a599dd4e00db29fdbc28922cee7521549ebb13 Mon Sep 17 00:00:00 2001 From: Mohammad Murshed Date: Fri, 27 Jun 2025 10:48:08 +0200 Subject: [PATCH 05/10] [UIA-1152] Fix image registry name + Add Docker pull command in installation section --- .../modules/document-generation/private-service.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md b/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md index 185badd15c2..1014c91b6bf 100755 --- a/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md @@ -83,7 +83,8 @@ In order to install the service, the following artifacts are available: #### Installing through Docker -Run the docker container through the `docker run -p 8085:8085 --name document-generation mendix/document-generation-service:`, command, where `` should be replaced with the version of the service, such as `1.0.0`. This creates a Docker container, which is exposed on port `8085`. +* Pull the Docker image through `docker pull private-cloud.registry.mendix.com/mendix/document-generation-service:`. +* Run the docker container through the `docker run -p 8085:8085 --name document-generation private-cloud.registry.mendix.com/mendix/document-generation-service:`, command, where `` should be replaced with the version of the service, such as `1.0.0`. This creates a Docker container, which is exposed on port `8085`. #### Installing through Helm @@ -99,7 +100,7 @@ The approach for setting configuration values depends on the installation type. #### Configuring through Docker -When using Docker to run the image, add the configuration using the provided environment variables. An example of this is `docker run -p 8085:8085 -e MAX_DOCUMENT_SIZE= --name document-generation mendix/document-generation-service:`. +When using Docker to run the image, add the configuration using the provided environment variables. An example of this is `docker run -p 8085:8085 -e MAX_DOCUMENT_SIZE= --name document-generation private-cloud.registry.mendix.com/mendix/document-generation-service:`. #### Configuring through Helm From 948ffa33db074f194dcf3ef398a3184e5f0999e8 Mon Sep 17 00:00:00 2001 From: Mohammad Murshed Date: Fri, 27 Jun 2025 10:50:52 +0200 Subject: [PATCH 06/10] [UIA-1152] Remove HELM related sections --- .../document-generation/private-service.md | 24 ++++++------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md b/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md index 1014c91b6bf..67e09788c18 100755 --- a/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md @@ -34,7 +34,6 @@ These are the limitations of using the private PDF Document Generation service: Before you start using the private PDF Document Generation service, make sure you meet these prerequisites: * You have a good understanding of how to run and manage Docker containers. -* (Optional) You are familiar with using Helm charts for Kubernetes deployments. * You are familiar with the PDF Document Generation module. For more information, refer to [PDF Document Generation](/appstore/modules/document-generation/). * Your deployment environment needs to allow bidirectional communication between Mendix apps and the Docker containers running the private PDF Document Generation service. @@ -76,19 +75,14 @@ Running multiple container replicas requires additional load balancing, which is ### Installing the Service -In order to install the service, the following artifacts are available: +In order to install the service, the following artifact is available: * The Docker image for the PDF Document Generation service. -* An optional Helm chart that can be used to set up the service if you are using Helm charts to manage your deployments. #### Installing through Docker * Pull the Docker image through `docker pull private-cloud.registry.mendix.com/mendix/document-generation-service:`. -* Run the docker container through the `docker run -p 8085:8085 --name document-generation private-cloud.registry.mendix.com/mendix/document-generation-service:`, command, where `` should be replaced with the version of the service, such as `1.0.0`. This creates a Docker container, which is exposed on port `8085`. - -#### Installing through Helm - -Install the service through the `helm install document-generation ` command. This creates a Kubernetes deployment, which is exposed on port `8085`. +* Run the Docker container through the `docker run -p 8085:8085 --name document-generation private-cloud.registry.mendix.com/mendix/document-generation-service:`, command, where `` should be replaced with the version of the service, such as `1.0.0`. This creates a Docker container, which is exposed on port `8085`. ## Configuration {#configuration} @@ -102,17 +96,13 @@ The approach for setting configuration values depends on the installation type. When using Docker to run the image, add the configuration using the provided environment variables. An example of this is `docker run -p 8085:8085 -e MAX_DOCUMENT_SIZE= --name document-generation private-cloud.registry.mendix.com/mendix/document-generation-service:`. -#### Configuring through Helm - -When using Helm, you can configure the options using the `values.yaml` file. - ### Available configuration options {#configuration-options} -| Environment variable | Helm chart variable | Default value | Description | -|----------------------|---------------------|---------------|-------------| -| `MAX_DOCUMENT_SIZE` | `maxDocumentSize` | `25000000` (25 MB) | The maximum size for PDF documents generated using the service. When a PDF exceeds this file size, the request is aborted. | -| `MAX_PAGE_RENDERING_TIME` | `maxPageRenderingTime` | `30000` (30 seconds) | The maximum time to wait for the page to finish loading and rendering. If loading the page exceeds this time, a [Wait for Content](/appstore/modules/document-generation/#wait-for-content-exception) exception is sent to the module. | -| `ACCEPT_INSECURE_CERTIFICATES` | `acceptInsecureCertificates` | `false` |

Allows the use of untrusted certificates, such as when using self-signed certificates.

**Warning:** This disables certificate validation, and allows the use of invalid certificates. Be aware of any resulting security risks.

| +| Environment variable | Default value | Description | +|----------------------|---------------|-------------| +| `MAX_DOCUMENT_SIZE` | `25000000` (25 MB) | The maximum size for PDF documents generated using the service. When a PDF exceeds this file size, the request is aborted. | +| `MAX_PAGE_RENDERING_TIME` | `30000` (30 seconds) | The maximum time to wait for the page to finish loading and rendering. If loading the page exceeds this time, a [Wait for Content](/appstore/modules/document-generation/#wait-for-content-exception) exception is sent to the module. | +| `ACCEPT_INSECURE_CERTIFICATES` | `false` |

Allows the use of untrusted certificates, such as when using self-signed certificates.

**Warning:** This disables certificate validation, and allows the use of invalid certificates. Be aware of any resulting security risks.

| ## Configuring your Mendix Apps From b0ded7a99db52f809b593d25febd3badb20aae5c Mon Sep 17 00:00:00 2001 From: nicoletacoman Date: Fri, 27 Jun 2025 11:17:38 +0200 Subject: [PATCH 07/10] TW review for Helm-specific info removal --- .../document-generation/private-service.md | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md b/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md index 67e09788c18..db5184896be 100755 --- a/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md @@ -48,6 +48,19 @@ The required resources depend on demand. For instance, to be able to generate 5 * CPU: more than 2 CPU cores * Memory: more than 4096 MB of RAM +### Installing the Service + +The following artifact is available for installing the service: + +* The Docker image for the PDF Document Generation service + +#### Installing through Docker + +Follow these steps to install the service through Docker: + +1. Pull the Docker image using the following command: `docker pull private-cloud.registry.mendix.com/mendix/document-generation-service:`. +2. Run the Docker container using the following command: `docker run -p 8085:8085 --name document-generation private-cloud.registry.mendix.com/mendix/document-generation-service:`. The `` component must be replaced with the version of the service, such as `1.0.0`. This creates a Docker container, which is exposed on port `8085`. + ### Isolation Requests share the same container resources, which has the following implications: @@ -73,17 +86,6 @@ You can scale the service in two ways: Running multiple container replicas requires additional load balancing, which is not provided by Mendix. You need to configure and use your own preferred load balancing tools, such as [Nginx](https://nginx.org/). -### Installing the Service - -In order to install the service, the following artifact is available: - -* The Docker image for the PDF Document Generation service. - -#### Installing through Docker - -* Pull the Docker image through `docker pull private-cloud.registry.mendix.com/mendix/document-generation-service:`. -* Run the Docker container through the `docker run -p 8085:8085 --name document-generation private-cloud.registry.mendix.com/mendix/document-generation-service:`, command, where `` should be replaced with the version of the service, such as `1.0.0`. This creates a Docker container, which is exposed on port `8085`. - ## Configuration {#configuration} The service has several [configuration options](#configuration-options) for adapting to your specific needs. From 86069e745047ed1c93e9e3837a3cbc1493bc64ae Mon Sep 17 00:00:00 2001 From: Mohammad Murshed Date: Fri, 27 Jun 2025 14:00:23 +0200 Subject: [PATCH 08/10] [UIA-1152] Add reference to the private-service from the module docs Limitations section --- .../modules/document-generation/_index.md | 9 ++++++++- .../modules/document-generation/private-service.md | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/content/en/docs/marketplace/platform-supported-content/modules/document-generation/_index.md b/content/en/docs/marketplace/platform-supported-content/modules/document-generation/_index.md index 152e60e2394..204cee66df1 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/document-generation/_index.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/document-generation/_index.md @@ -20,7 +20,14 @@ The [PDF Document Generation](https://marketplace.mendix.com/link/component/2115 ### Limitations {#limitations} * Currently, PDF is the only supported document export format. -* For deployment, currently we support [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/), [Mendix Cloud Dedicated](/developerportal/deploy/mendix-cloud-deploy/), [Mendix for Private Cloud Connected](/developerportal/deploy/private-cloud/), and [On-Premises](/developerportal/deploy/on-premises-design/). Other deployment scenarios will be supported at a later stage. +* For deployment, currently we support: + * [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/). + * [Mendix Cloud Dedicated](/developerportal/deploy/mendix-cloud-deploy/). + * [Mendix for Private Cloud Connected](/developerportal/deploy/private-cloud/). + * [On-Premises](/developerportal/deploy/on-premises-design/) + * A privately hosted Docker containarized PDF Document Generation service. Starting with module versions 1.11.0 for Mx9 and 2.1.0 for Mx10, you can now deploy a Docker containerized version of the service. For more information see [Private PDF Document Generation Service](/appstore/modules/document-generation/private-service/) + + Other deployment scenarios will be supported at a later stage. {{% alert color="info" %}}For all deployment types except for on-premises, we only support apps that allow bi-directional communication with the PDF Service in Mendix Cloud.{{% /alert %}} diff --git a/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md b/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md index db5184896be..072663028e2 100755 --- a/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/document-generation/private-service.md @@ -1,6 +1,6 @@ --- title: "Private PDF Document Generation Service" -url: /appstore/modules/private-document-generation-service/ +url: /appstore/modules/document-generation/private-service/ description: "Describes the configuration and usage of the private PDF Document Generation service, which is used in combination with the PDF Document Generation module in the Marketplace." #If moving or renaming this doc file, implement a temporary redirect and let the respective team know they should update the URL in the product. See Mapping to Products for more details. --- From d68360300bc4b42b0637d3fb3befce0012df9a9d Mon Sep 17 00:00:00 2001 From: nicoletacoman Date: Fri, 27 Jun 2025 14:02:08 +0200 Subject: [PATCH 09/10] Review of existing limitations --- .../modules/document-generation/_index.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/content/en/docs/marketplace/platform-supported-content/modules/document-generation/_index.md b/content/en/docs/marketplace/platform-supported-content/modules/document-generation/_index.md index 152e60e2394..81fb124a63e 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/document-generation/_index.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/document-generation/_index.md @@ -19,17 +19,17 @@ The [PDF Document Generation](https://marketplace.mendix.com/link/component/2115 ### Limitations {#limitations} -* Currently, PDF is the only supported document export format. -* For deployment, currently we support [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/), [Mendix Cloud Dedicated](/developerportal/deploy/mendix-cloud-deploy/), [Mendix for Private Cloud Connected](/developerportal/deploy/private-cloud/), and [On-Premises](/developerportal/deploy/on-premises-design/). Other deployment scenarios will be supported at a later stage. +* PDF is the only supported document export format. +* For deployment, we support [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/), [Mendix Cloud Dedicated](/developerportal/deploy/mendix-cloud-deploy/), [Mendix for Private Cloud Connected](/developerportal/deploy/private-cloud/), and [On-Premises](/developerportal/deploy/on-premises-design/). Other deployment scenarios will be supported at a later stage. {{% alert color="info" %}}For all deployment types except for on-premises, we only support apps that allow bi-directional communication with the PDF Service in Mendix Cloud.{{% /alert %}} * The maximum file size is 25 MB per document. If your document exceeds this limit, the action will result in an exception. We recommend compressing high-resolution images to reduce their file size. -* If your app is configured to [restrict access for incoming requests](/developerportal/deploy/access-restrictions/) using client certificates, our cloud service will not be able to reach your app and the module will not work properly. +* If your app is configured to [restrict access for incoming requests](/developerportal/deploy/access-restrictions/) using client certificates, our cloud service will not be able to reach your app, and the module will not work properly. * If your app uses a custom domain, you must configure a custom SSL/TLS domain certificate signed by a trusted public authority, including all intermediate certificates if applicable. Self-signed certificates will cause the service to fail. For more information, see [Obtaining a new signed certificate](/developerportal/deploy/custom-domains/#obtaining-a-new-signed-certificate). * We use a fixed 30 second timeout for the page to finish loading and rendering. A timeout exception is thrown if the page content did not finish loading within 30 seconds. * Widgets or add-ons for your `index.html` file that perform long polling network requests are not supported. The document generation service waits until there are no more pending network requests. -* Some widgets, such as the [Charts](/appstore/widgets/charts/) widget, might be rendered inconsistently in the generated PDF due to factors like animation. +* Some widgets, such as [Charts](/appstore/widgets/charts/), might be rendered inconsistently in the generated PDF due to factors like animation. * Complex documents (for example, large tables) may run into memory limitations, separate from the file size limitation. Try to reduce the number of widgets inside repeatable widgets as much as possible. * We currently do not enforce strict rate limits. However, take into account the following guidelines: * Only set the `Wait for result` parameter to *true* for direct user actions. Do not set it to *true* for batch processing. Under heavy load, requests that wait for the result may fail due to strict timeout limitations. @@ -41,8 +41,8 @@ The [PDF Document Generation](https://marketplace.mendix.com/link/component/2115 * Setting the microflow property **Apply entity access** to *Yes* does not have any effect on the `Generate PDF from page` action. Regardless of the **Apply entity access** setting, the action does not require *Create* or *Write* access rights for the `FileDocument` object that gets created. * The `System.Owner` association is currently not set to the user which has run the microflow. Instead, the user that is configured for the `Generate as user` property of the `Generate PDF from page` action is used to set the association. * For local development, we use the Chrome or Chromium executable that is available on the development machine. Even though we have not observed these yet, there might be minor differences in PDF output locally versus when using the cloud service. -* The access (and refresh) tokens used to secure requests to the cloud service are stored unencrypted in the app database. No user roles have read access to these tokens and all communication with the cloud service is encrypted by requiring HTTPS. However, do consider this when sharing a backup of the database with other developers. We will introduce encryption at a later stage. -* If you have the [Application Performance Monitor (APM)](/appstore/partner-solutions/apd/) or [Application Performance Diagnostics (APD)](/appstore/partner-solutions/apd/) add-on enabled in your app, or set the log level of the **Services** log node to *Trace*, the PDF Document Generation module will not be able to generate documents when used in Mendix Cloud. This limitation is only applicable for apps built in Mendix 9.24.5 and below and Mendix 10.0.0. +* The access and refresh tokens used to secure requests to the cloud service are stored unencrypted in the app database. No user roles have read access to these tokens, and all communication with the cloud service is encrypted by requiring HTTPS. However, do consider this when sharing a backup of the database with other developers. We will introduce encryption at a later stage. +* If you have the [Application Performance Monitor (APM)](/appstore/partner-solutions/apd/) or [Application Performance Diagnostics (APD)](/appstore/partner-solutions/apd/) add-on enabled in your app, or the log level of the **Services** log node set to *Trace*, the PDF Document Generation module will not be able to generate documents when used in Mendix Cloud. This limitation is only applicable for apps built in Mendix 9.24.5 and below and Mendix 10.0.0. ### Dependencies From 06a0f8a166bbd9e646c3669119e4e62e0d51c591 Mon Sep 17 00:00:00 2001 From: nicoletacoman Date: Fri, 27 Jun 2025 14:33:49 +0200 Subject: [PATCH 10/10] Fixed broken link --- .../modules/document-generation/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/marketplace/platform-supported-content/modules/document-generation/_index.md b/content/en/docs/marketplace/platform-supported-content/modules/document-generation/_index.md index 5cc4ab8ff99..694099e7ac0 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/document-generation/_index.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/document-generation/_index.md @@ -26,7 +26,7 @@ The [PDF Document Generation](https://marketplace.mendix.com/link/component/2115 * [Mendix Cloud Dedicated](/developerportal/deploy/mendix-cloud-deploy/) * [Mendix for Private Cloud Connected](/developerportal/deploy/private-cloud/) * [On-Premises](/developerportal/deploy/on-premises-design/) - * A privately hosted Docker containerized PDF Document Generation service. It is available starting with module versions 1.11.0 for Studio Pro 9 and 2.1.0 for Studio Pro 10. For more information, refer to [Private PDF Document Generation Service](/appstore/modules/document-generation/private-service/). + * A privately hosted Docker containerized PDF Document Generation service. It is available starting with module versions 1.11.0 for Studio Pro 9 and 2.1.0 for Studio Pro 10. For more information, refer to [Private PDF Document Generation Service](/appstore/modules/private-document-generation-service/). {{% alert color="info" %}}For all deployment types except for on-premises, we only support apps that allow bi-directional communication with the PDF Service in Mendix Cloud.{{% /alert %}} * The maximum file size is 25 MB per document. If your document exceeds this limit, the action will result in an exception. We recommend compressing high-resolution images to reduce their file size. * If your app is configured to [restrict access for incoming requests](/developerportal/deploy/access-restrictions/) using client certificates, our cloud service will not be able to reach your app, and the module will not work properly.