Repository files navigation

banner

English | 繁體中文 | 日本語 | 简体中文

ComPDF Generation — Open-Source Self-Hosted PDF Generation SDK & Platform

Generate business PDFs from HTML templates and JSON data with visual template editing, reusable templates, batch processing, and API integration.

GitHub StarsLicense: AGPL v3 + CommercialPRs Welcome

DocumentationWebsiteDiscussions


Contents


Why ComPDF Generation

ComPDF Generation is an open-source, self-hosted PDF generation SDK and platform for developers and teams that need reusable, template-based document workflows. It keeps deployment, templates, and workflow integration under your control.

Features

  • Visual Template Editor — Create, test, and preview templates visually. Edit HTML directly when advanced customization is needed.
  • Self-Hosted Web UI and API — Manage templates in the Web UI, then integrate workflows through API access and SDK capabilities.
  • Structured JSON Data — Generate customized documents from JSON data sources.
  • High-Volume Processing — Use multithreaded batch generation with no document-generation quota.
  • AI-Friendly Workflows — Use structured templates and data inputs to support AI-assisted document workflows and reduce repeated prompt construction.
  • Batch Template Import and Migration — Import DITO templates and ComPDF Generation templates in batches, making it easy to migrate smoothly from iText and other competing PDF generation solutions to ComPDF Generation. Imported templates can be edited as needed for flexible reuse.
ComPDF Generation template editor preview

Quick Start

Windows PowerShell

Make sure Docker Desktop is installed and that you can pull the compdfkit/pdf-generation:1.0.0 image from Docker Hub. The commands below clone the project, copy the environment file, and start the services; wait until compdf-app becomes healthy, then open http://localhost:8090. .env.example includes a trial license, which adds a watermark to generated PDFs; for production use, replace COMPDF_LICENSE_KEY with a formal license and contact sales to obtain one.

git clone https://github.com/ComPDFKit/compdf-generation.git
cd compdf-generation
Copy-Item .env.example .env
docker compose up -d --build
docker compose ps

macOS or Linux

Make sure Docker Desktop (macOS) or Docker Engine with the Docker Compose plugin (Linux) is installed and that you can pull the compdfkit/pdf-generation:1.0.0 image from Docker Hub. The commands below clone the project, copy the environment file, and start the services; wait until compdf-app becomes healthy, then open http://localhost:8090. .env.example includes a trial license, which adds a watermark to generated PDFs; for production use, replace COMPDF_LICENSE_KEY with a formal license and contact sales to obtain one.

git clone https://github.com/ComPDFKit/compdf-generation.git
cd compdf-generation
cp .env.example .env
docker compose up -d --build
docker compose ps

For a remote Linux server, open the same address from a browser that can access the server's 8090 port. Templates are stored in TEMPLATE_STORAGE_DIR, which defaults to ./data/templates; rebuilding the application container does not remove this data.

User Guide

See the Self-Hosted Generation User Manual for template authoring and data binding.

Deployment Configuration

Environment Variables

Before starting the services, you can configure the following variables in .env:

VariableDefaultDescription
COMPDF_LICENSE_KEYRequiredA ComPDF License Key with PDF Generation or HTML-to-PDF permissions. The trial key in .env.example adds a watermark to generated PDFs.
COMPDF_IMAGE_PLATFORMlinux/amd64Platform used by the compdf-app image. Change only if the image supports the target deployment platform.
NODE_IMAGEnode:22-bookworm-slimNode.js image used to build the multi-stage Docker image for the Web and API services.
APP_PORT8090Port exposed for the ComPDF Generation Web UI and API. Change it if 8090 is already in use.
COMPDF_TIMEOUT_MS120000Maximum time in milliseconds for the Web/API services to wait for the ComPDF engine. Increase this for large or complex templates.
TEMPLATE_STORAGE_DIR./data/templatesHost directory used to persist HTML templates, JSON data sources, and metadata. Use an absolute path if you need a fixed storage location.
docker compose ps
docker compose logs --tail=100 compdf-generation compdf-app

compdf-app must be healthy before PDF generation is available. Templates are stored in TEMPLATE_STORAGE_DIR (./data/templates by default), and rebuilding the application container does not remove this data.

Use Cases

  • Automated contracts and agreements
  • Invoices, statements, and financial documents
  • Batch monthly, quarterly, and analytical reports
  • Certificates and standardized proof documents
  • On-demand PDF output for CRM, ERP, OA, and other internal systems

Open Source & Commercial Editions

Need production deployment, watermark-free output, or enterprise support? Upgrade to the commercial edition.

CapabilityOpen-Source EditionCommercial Edition
Document generation API
HTML template design and import
Template management
Batch generation
Export without watermarkWatermarkedNo watermark
Production useNot recommended
SLA / technical supportCommunity supportDedicated support
LicenseAGPL v3Commercial License

For production deployment, use a formal commercial License and follow your organization's operational and compliance requirements.

Comparison with Other Open-Source PDF Libraries

DimensionComPDF GenerationOther PDF Libraries
PositioningBusiness document generation with easy, scenario-based template customizationLow-level PDF capability wrappers
Document generationBatch generation with no output quotaUsually subject to certain limitations
Scenario focusContracts / invoices / reports / certificatesGeneral drawing and layout
TemplatingZero-code visual HTML template editing, with import and reuse supportRequires custom development
Commercial pathSeamless upgrade to a commercial editionExpansion often needs to be built independently

License

  • The open-source portion of this project is released under the GNU Affero General Public License v3.0.
  • For closed-source commercial projects, formal production environments, or enterprise delivery, please apply for a commercial License.

Support

Submit an Issue, join Discussions, or contact the ComPDF team for a commercial License.


Built by the ComPDF team.

Website · Contact Sales · Documentation

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

banner

English | 繁體中文 | 日本語 | 简体中文

ComPDF Generation — Open-Source Self-Hosted PDF Generation SDK & Platform

Generate business PDFs from HTML templates and JSON data with visual template editing, reusable templates, batch processing, and API integration.

GitHub StarsLicense: AGPL v3 + CommercialPRs Welcome

DocumentationWebsiteDiscussions


Contents


Why ComPDF Generation

ComPDF Generation is an open-source, self-hosted PDF generation SDK and platform for developers and teams that need reusable, template-based document workflows. It keeps deployment, templates, and workflow integration under your control.

Features

  • Visual Template Editor — Create, test, and preview templates visually. Edit HTML directly when advanced customization is needed.
  • Self-Hosted Web UI and API — Manage templates in the Web UI, then integrate workflows through API access and SDK capabilities.
  • Structured JSON Data — Generate customized documents from JSON data sources.
  • High-Volume Processing — Use multithreaded batch generation with no document-generation quota.
  • AI-Friendly Workflows — Use structured templates and data inputs to support AI-assisted document workflows and reduce repeated prompt construction.
  • Batch Template Import and Migration — Import DITO templates and ComPDF Generation templates in batches, making it easy to migrate smoothly from iText and other competing PDF generation solutions to ComPDF Generation. Imported templates can be edited as needed for flexible reuse.
ComPDF Generation template editor preview

Quick Start

Windows PowerShell

Make sure Docker Desktop is installed and that you can pull the compdfkit/pdf-generation:1.0.0 image from Docker Hub. The commands below clone the project, copy the environment file, and start the services; wait until compdf-app becomes healthy, then open http://localhost:8090. .env.example includes a trial license, which adds a watermark to generated PDFs; for production use, replace COMPDF_LICENSE_KEY with a formal license and contact sales to obtain one.

git clone https://github.com/ComPDFKit/compdf-generation.git
cd compdf-generation
Copy-Item .env.example .env
docker compose up -d --build
docker compose ps

macOS or Linux

Make sure Docker Desktop (macOS) or Docker Engine with the Docker Compose plugin (Linux) is installed and that you can pull the compdfkit/pdf-generation:1.0.0 image from Docker Hub. The commands below clone the project, copy the environment file, and start the services; wait until compdf-app becomes healthy, then open http://localhost:8090. .env.example includes a trial license, which adds a watermark to generated PDFs; for production use, replace COMPDF_LICENSE_KEY with a formal license and contact sales to obtain one.

git clone https://github.com/ComPDFKit/compdf-generation.git
cd compdf-generation
cp .env.example .env
docker compose up -d --build
docker compose ps

For a remote Linux server, open the same address from a browser that can access the server's 8090 port. Templates are stored in TEMPLATE_STORAGE_DIR, which defaults to ./data/templates; rebuilding the application container does not remove this data.

User Guide

See the Self-Hosted Generation User Manual for template authoring and data binding.

Deployment Configuration

Environment Variables

Before starting the services, you can configure the following variables in .env:

VariableDefaultDescription
COMPDF_LICENSE_KEYRequiredA ComPDF License Key with PDF Generation or HTML-to-PDF permissions. The trial key in .env.example adds a watermark to generated PDFs.
COMPDF_IMAGE_PLATFORMlinux/amd64Platform used by the compdf-app image. Change only if the image supports the target deployment platform.
NODE_IMAGEnode:22-bookworm-slimNode.js image used to build the multi-stage Docker image for the Web and API services.
APP_PORT8090Port exposed for the ComPDF Generation Web UI and API. Change it if 8090 is already in use.
COMPDF_TIMEOUT_MS120000Maximum time in milliseconds for the Web/API services to wait for the ComPDF engine. Increase this for large or complex templates.
TEMPLATE_STORAGE_DIR./data/templatesHost directory used to persist HTML templates, JSON data sources, and metadata. Use an absolute path if you need a fixed storage location.
docker compose ps
docker compose logs --tail=100 compdf-generation compdf-app

compdf-app must be healthy before PDF generation is available. Templates are stored in TEMPLATE_STORAGE_DIR (./data/templates by default), and rebuilding the application container does not remove this data.

Use Cases

  • Automated contracts and agreements
  • Invoices, statements, and financial documents
  • Batch monthly, quarterly, and analytical reports
  • Certificates and standardized proof documents
  • On-demand PDF output for CRM, ERP, OA, and other internal systems

Open Source & Commercial Editions

Need production deployment, watermark-free output, or enterprise support? Upgrade to the commercial edition.

CapabilityOpen-Source EditionCommercial Edition
Document generation API
HTML template design and import
Template management
Batch generation
Export without watermarkWatermarkedNo watermark
Production useNot recommended
SLA / technical supportCommunity supportDedicated support
LicenseAGPL v3Commercial License

For production deployment, use a formal commercial License and follow your organization's operational and compliance requirements.

Comparison with Other Open-Source PDF Libraries

DimensionComPDF GenerationOther PDF Libraries
PositioningBusiness document generation with easy, scenario-based template customizationLow-level PDF capability wrappers
Document generationBatch generation with no output quotaUsually subject to certain limitations
Scenario focusContracts / invoices / reports / certificatesGeneral drawing and layout
TemplatingZero-code visual HTML template editing, with import and reuse supportRequires custom development
Commercial pathSeamless upgrade to a commercial editionExpansion often needs to be built independently

License

  • The open-source portion of this project is released under the GNU Affero General Public License v3.0.
  • For closed-source commercial projects, formal production environments, or enterprise delivery, please apply for a commercial License.

Support

Submit an Issue, join Discussions, or contact the ComPDF team for a commercial License.


Built by the ComPDF team.

Website · Contact Sales · Documentation

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

banner

English | 繁體中文 | 日本語 | 简体中文

ComPDF Generation — Open-Source Self-Hosted PDF Generation SDK & Platform

Generate business PDFs from HTML templates and JSON data with visual template editing, reusable templates, batch processing, and API integration.

GitHub StarsLicense: AGPL v3 + CommercialPRs Welcome

DocumentationWebsiteDiscussions


Contents


Why ComPDF Generation

ComPDF Generation is an open-source, self-hosted PDF generation SDK and platform for developers and teams that need reusable, template-based document workflows. It keeps deployment, templates, and workflow integration under your control.

Features

  • Visual Template Editor — Create, test, and preview templates visually. Edit HTML directly when advanced customization is needed.
  • Self-Hosted Web UI and API — Manage templates in the Web UI, then integrate workflows through API access and SDK capabilities.
  • Structured JSON Data — Generate customized documents from JSON data sources.
  • High-Volume Processing — Use multithreaded batch generation with no document-generation quota.
  • AI-Friendly Workflows — Use structured templates and data inputs to support AI-assisted document workflows and reduce repeated prompt construction.
  • Batch Template Import and Migration — Import DITO templates and ComPDF Generation templates in batches, making it easy to migrate smoothly from iText and other competing PDF generation solutions to ComPDF Generation. Imported templates can be edited as needed for flexible reuse.
ComPDF Generation template editor preview

Quick Start

Windows PowerShell

Make sure Docker Desktop is installed and that you can pull the compdfkit/pdf-generation:1.0.0 image from Docker Hub. The commands below clone the project, copy the environment file, and start the services; wait until compdf-app becomes healthy, then open http://localhost:8090. .env.example includes a trial license, which adds a watermark to generated PDFs; for production use, replace COMPDF_LICENSE_KEY with a formal license and contact sales to obtain one.

git clone https://github.com/ComPDFKit/compdf-generation.git
cd compdf-generation
Copy-Item .env.example .env
docker compose up -d --build
docker compose ps

macOS or Linux

Make sure Docker Desktop (macOS) or Docker Engine with the Docker Compose plugin (Linux) is installed and that you can pull the compdfkit/pdf-generation:1.0.0 image from Docker Hub. The commands below clone the project, copy the environment file, and start the services; wait until compdf-app becomes healthy, then open http://localhost:8090. .env.example includes a trial license, which adds a watermark to generated PDFs; for production use, replace COMPDF_LICENSE_KEY with a formal license and contact sales to obtain one.

git clone https://github.com/ComPDFKit/compdf-generation.git
cd compdf-generation
cp .env.example .env
docker compose up -d --build
docker compose ps

For a remote Linux server, open the same address from a browser that can access the server's 8090 port. Templates are stored in TEMPLATE_STORAGE_DIR, which defaults to ./data/templates; rebuilding the application container does not remove this data.

User Guide

See the Self-Hosted Generation User Manual for template authoring and data binding.

Deployment Configuration

Environment Variables

Before starting the services, you can configure the following variables in .env:

VariableDefaultDescription
COMPDF_LICENSE_KEYRequiredA ComPDF License Key with PDF Generation or HTML-to-PDF permissions. The trial key in .env.example adds a watermark to generated PDFs.
COMPDF_IMAGE_PLATFORMlinux/amd64Platform used by the compdf-app image. Change only if the image supports the target deployment platform.
NODE_IMAGEnode:22-bookworm-slimNode.js image used to build the multi-stage Docker image for the Web and API services.
APP_PORT8090Port exposed for the ComPDF Generation Web UI and API. Change it if 8090 is already in use.
COMPDF_TIMEOUT_MS120000Maximum time in milliseconds for the Web/API services to wait for the ComPDF engine. Increase this for large or complex templates.
TEMPLATE_STORAGE_DIR./data/templatesHost directory used to persist HTML templates, JSON data sources, and metadata. Use an absolute path if you need a fixed storage location.
docker compose ps
docker compose logs --tail=100 compdf-generation compdf-app

compdf-app must be healthy before PDF generation is available. Templates are stored in TEMPLATE_STORAGE_DIR (./data/templates by default), and rebuilding the application container does not remove this data.

Use Cases

  • Automated contracts and agreements
  • Invoices, statements, and financial documents
  • Batch monthly, quarterly, and analytical reports
  • Certificates and standardized proof documents
  • On-demand PDF output for CRM, ERP, OA, and other internal systems

Open Source & Commercial Editions

Need production deployment, watermark-free output, or enterprise support? Upgrade to the commercial edition.

CapabilityOpen-Source EditionCommercial Edition
Document generation API
HTML template design and import
Template management
Batch generation
Export without watermarkWatermarkedNo watermark
Production useNot recommended
SLA / technical supportCommunity supportDedicated support
LicenseAGPL v3Commercial License

For production deployment, use a formal commercial License and follow your organization's operational and compliance requirements.

Comparison with Other Open-Source PDF Libraries

DimensionComPDF GenerationOther PDF Libraries
PositioningBusiness document generation with easy, scenario-based template customizationLow-level PDF capability wrappers
Document generationBatch generation with no output quotaUsually subject to certain limitations
Scenario focusContracts / invoices / reports / certificatesGeneral drawing and layout
TemplatingZero-code visual HTML template editing, with import and reuse supportRequires custom development
Commercial pathSeamless upgrade to a commercial editionExpansion often needs to be built independently

License

  • The open-source portion of this project is released under the GNU Affero General Public License v3.0.
  • For closed-source commercial projects, formal production environments, or enterprise delivery, please apply for a commercial License.

Support

Submit an Issue, join Discussions, or contact the ComPDF team for a commercial License.


Built by the ComPDF team.

Website · Contact Sales · Documentation

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

banner

English | 繁體中文 | 日本語 | 简体中文

ComPDF Generation — Open-Source Self-Hosted PDF Generation SDK & Platform

Generate business PDFs from HTML templates and JSON data with visual template editing, reusable templates, batch processing, and API integration.

GitHub StarsLicense: AGPL v3 + CommercialPRs Welcome

DocumentationWebsiteDiscussions


Contents


Why ComPDF Generation

ComPDF Generation is an open-source, self-hosted PDF generation SDK and platform for developers and teams that need reusable, template-based document workflows. It keeps deployment, templates, and workflow integration under your control.

Features

  • Visual Template Editor — Create, test, and preview templates visually. Edit HTML directly when advanced customization is needed.
  • Self-Hosted Web UI and API — Manage templates in the Web UI, then integrate workflows through API access and SDK capabilities.
  • Structured JSON Data — Generate customized documents from JSON data sources.
  • High-Volume Processing — Use multithreaded batch generation with no document-generation quota.
  • AI-Friendly Workflows — Use structured templates and data inputs to support AI-assisted document workflows and reduce repeated prompt construction.
  • Batch Template Import and Migration — Import DITO templates and ComPDF Generation templates in batches, making it easy to migrate smoothly from iText and other competing PDF generation solutions to ComPDF Generation. Imported templates can be edited as needed for flexible reuse.
ComPDF Generation template editor preview

Quick Start

Windows PowerShell

Make sure Docker Desktop is installed and that you can pull the compdfkit/pdf-generation:1.0.0 image from Docker Hub. The commands below clone the project, copy the environment file, and start the services; wait until compdf-app becomes healthy, then open http://localhost:8090. .env.example includes a trial license, which adds a watermark to generated PDFs; for production use, replace COMPDF_LICENSE_KEY with a formal license and contact sales to obtain one.

git clone https://github.com/ComPDFKit/compdf-generation.git
cd compdf-generation
Copy-Item .env.example .env
docker compose up -d --build
docker compose ps

macOS or Linux

Make sure Docker Desktop (macOS) or Docker Engine with the Docker Compose plugin (Linux) is installed and that you can pull the compdfkit/pdf-generation:1.0.0 image from Docker Hub. The commands below clone the project, copy the environment file, and start the services; wait until compdf-app becomes healthy, then open http://localhost:8090. .env.example includes a trial license, which adds a watermark to generated PDFs; for production use, replace COMPDF_LICENSE_KEY with a formal license and contact sales to obtain one.

git clone https://github.com/ComPDFKit/compdf-generation.git
cd compdf-generation
cp .env.example .env
docker compose up -d --build
docker compose ps

For a remote Linux server, open the same address from a browser that can access the server's 8090 port. Templates are stored in TEMPLATE_STORAGE_DIR, which defaults to ./data/templates; rebuilding the application container does not remove this data.

User Guide

See the Self-Hosted Generation User Manual for template authoring and data binding.

Deployment Configuration

Environment Variables

Before starting the services, you can configure the following variables in .env:

VariableDefaultDescription
COMPDF_LICENSE_KEYRequiredA ComPDF License Key with PDF Generation or HTML-to-PDF permissions. The trial key in .env.example adds a watermark to generated PDFs.
COMPDF_IMAGE_PLATFORMlinux/amd64Platform used by the compdf-app image. Change only if the image supports the target deployment platform.
NODE_IMAGEnode:22-bookworm-slimNode.js image used to build the multi-stage Docker image for the Web and API services.
APP_PORT8090Port exposed for the ComPDF Generation Web UI and API. Change it if 8090 is already in use.
COMPDF_TIMEOUT_MS120000Maximum time in milliseconds for the Web/API services to wait for the ComPDF engine. Increase this for large or complex templates.
TEMPLATE_STORAGE_DIR./data/templatesHost directory used to persist HTML templates, JSON data sources, and metadata. Use an absolute path if you need a fixed storage location.
docker compose ps
docker compose logs --tail=100 compdf-generation compdf-app

compdf-app must be healthy before PDF generation is available. Templates are stored in TEMPLATE_STORAGE_DIR (./data/templates by default), and rebuilding the application container does not remove this data.

Use Cases

  • Automated contracts and agreements
  • Invoices, statements, and financial documents
  • Batch monthly, quarterly, and analytical reports
  • Certificates and standardized proof documents
  • On-demand PDF output for CRM, ERP, OA, and other internal systems

Open Source & Commercial Editions

Need production deployment, watermark-free output, or enterprise support? Upgrade to the commercial edition.

CapabilityOpen-Source EditionCommercial Edition
Document generation API
HTML template design and import
Template management
Batch generation
Export without watermarkWatermarkedNo watermark
Production useNot recommended
SLA / technical supportCommunity supportDedicated support
LicenseAGPL v3Commercial License

For production deployment, use a formal commercial License and follow your organization's operational and compliance requirements.

Comparison with Other Open-Source PDF Libraries

DimensionComPDF GenerationOther PDF Libraries
PositioningBusiness document generation with easy, scenario-based template customizationLow-level PDF capability wrappers
Document generationBatch generation with no output quotaUsually subject to certain limitations
Scenario focusContracts / invoices / reports / certificatesGeneral drawing and layout
TemplatingZero-code visual HTML template editing, with import and reuse supportRequires custom development
Commercial pathSeamless upgrade to a commercial editionExpansion often needs to be built independently

License

  • The open-source portion of this project is released under the GNU Affero General Public License v3.0.
  • For closed-source commercial projects, formal production environments, or enterprise delivery, please apply for a commercial License.

Support

Submit an Issue, join Discussions, or contact the ComPDF team for a commercial License.


Built by the ComPDF team.

Website · Contact Sales · Documentation

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

banner

English | 繁體中文 | 日本語 | 简体中文

ComPDF Generation — Open-Source Self-Hosted PDF Generation SDK & Platform

Generate business PDFs from HTML templates and JSON data with visual template editing, reusable templates, batch processing, and API integration.

GitHub StarsLicense: AGPL v3 + CommercialPRs Welcome

DocumentationWebsiteDiscussions


Contents


Why ComPDF Generation

ComPDF Generation is an open-source, self-hosted PDF generation SDK and platform for developers and teams that need reusable, template-based document workflows. It keeps deployment, templates, and workflow integration under your control.

Features

  • Visual Template Editor — Create, test, and preview templates visually. Edit HTML directly when advanced customization is needed.
  • Self-Hosted Web UI and API — Manage templates in the Web UI, then integrate workflows through API access and SDK capabilities.
  • Structured JSON Data — Generate customized documents from JSON data sources.
  • High-Volume Processing — Use multithreaded batch generation with no document-generation quota.
  • AI-Friendly Workflows — Use structured templates and data inputs to support AI-assisted document workflows and reduce repeated prompt construction.
  • Batch Template Import and Migration — Import DITO templates and ComPDF Generation templates in batches, making it easy to migrate smoothly from iText and other competing PDF generation solutions to ComPDF Generation. Imported templates can be edited as needed for flexible reuse.
ComPDF Generation template editor preview

Quick Start

Windows PowerShell

Make sure Docker Desktop is installed and that you can pull the compdfkit/pdf-generation:1.0.0 image from Docker Hub. The commands below clone the project, copy the environment file, and start the services; wait until compdf-app becomes healthy, then open http://localhost:8090. .env.example includes a trial license, which adds a watermark to generated PDFs; for production use, replace COMPDF_LICENSE_KEY with a formal license and contact sales to obtain one.

git clone https://github.com/ComPDFKit/compdf-generation.git
cd compdf-generation
Copy-Item .env.example .env
docker compose up -d --build
docker compose ps

macOS or Linux

Make sure Docker Desktop (macOS) or Docker Engine with the Docker Compose plugin (Linux) is installed and that you can pull the compdfkit/pdf-generation:1.0.0 image from Docker Hub. The commands below clone the project, copy the environment file, and start the services; wait until compdf-app becomes healthy, then open http://localhost:8090. .env.example includes a trial license, which adds a watermark to generated PDFs; for production use, replace COMPDF_LICENSE_KEY with a formal license and contact sales to obtain one.

git clone https://github.com/ComPDFKit/compdf-generation.git
cd compdf-generation
cp .env.example .env
docker compose up -d --build
docker compose ps

For a remote Linux server, open the same address from a browser that can access the server's 8090 port. Templates are stored in TEMPLATE_STORAGE_DIR, which defaults to ./data/templates; rebuilding the application container does not remove this data.

User Guide

See the Self-Hosted Generation User Manual for template authoring and data binding.

Deployment Configuration

Environment Variables

Before starting the services, you can configure the following variables in .env:

VariableDefaultDescription
COMPDF_LICENSE_KEYRequiredA ComPDF License Key with PDF Generation or HTML-to-PDF permissions. The trial key in .env.example adds a watermark to generated PDFs.
COMPDF_IMAGE_PLATFORMlinux/amd64Platform used by the compdf-app image. Change only if the image supports the target deployment platform.
NODE_IMAGEnode:22-bookworm-slimNode.js image used to build the multi-stage Docker image for the Web and API services.
APP_PORT8090Port exposed for the ComPDF Generation Web UI and API. Change it if 8090 is already in use.
COMPDF_TIMEOUT_MS120000Maximum time in milliseconds for the Web/API services to wait for the ComPDF engine. Increase this for large or complex templates.
TEMPLATE_STORAGE_DIR./data/templatesHost directory used to persist HTML templates, JSON data sources, and metadata. Use an absolute path if you need a fixed storage location.
docker compose ps
docker compose logs --tail=100 compdf-generation compdf-app

compdf-app must be healthy before PDF generation is available. Templates are stored in TEMPLATE_STORAGE_DIR (./data/templates by default), and rebuilding the application container does not remove this data.

Use Cases

  • Automated contracts and agreements
  • Invoices, statements, and financial documents
  • Batch monthly, quarterly, and analytical reports
  • Certificates and standardized proof documents
  • On-demand PDF output for CRM, ERP, OA, and other internal systems

Open Source & Commercial Editions

Need production deployment, watermark-free output, or enterprise support? Upgrade to the commercial edition.

CapabilityOpen-Source EditionCommercial Edition
Document generation API
HTML template design and import
Template management
Batch generation
Export without watermarkWatermarkedNo watermark
Production useNot recommended
SLA / technical supportCommunity supportDedicated support
LicenseAGPL v3Commercial License

For production deployment, use a formal commercial License and follow your organization's operational and compliance requirements.

Comparison with Other Open-Source PDF Libraries

DimensionComPDF GenerationOther PDF Libraries
PositioningBusiness document generation with easy, scenario-based template customizationLow-level PDF capability wrappers
Document generationBatch generation with no output quotaUsually subject to certain limitations
Scenario focusContracts / invoices / reports / certificatesGeneral drawing and layout
TemplatingZero-code visual HTML template editing, with import and reuse supportRequires custom development
Commercial pathSeamless upgrade to a commercial editionExpansion often needs to be built independently

License

  • The open-source portion of this project is released under the GNU Affero General Public License v3.0.
  • For closed-source commercial projects, formal production environments, or enterprise delivery, please apply for a commercial License.

Support

Submit an Issue, join Discussions, or contact the ComPDF team for a commercial License.


Built by the ComPDF team.

Website · Contact Sales · Documentation

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

banner

English | 繁體中文 | 日本語 | 简体中文

ComPDF Generation — Open-Source Self-Hosted PDF Generation SDK & Platform

Generate business PDFs from HTML templates and JSON data with visual template editing, reusable templates, batch processing, and API integration.

GitHub StarsLicense: AGPL v3 + CommercialPRs Welcome

DocumentationWebsiteDiscussions


Contents


Why ComPDF Generation

ComPDF Generation is an open-source, self-hosted PDF generation SDK and platform for developers and teams that need reusable, template-based document workflows. It keeps deployment, templates, and workflow integration under your control.

Features

  • Visual Template Editor — Create, test, and preview templates visually. Edit HTML directly when advanced customization is needed.
  • Self-Hosted Web UI and API — Manage templates in the Web UI, then integrate workflows through API access and SDK capabilities.
  • Structured JSON Data — Generate customized documents from JSON data sources.
  • High-Volume Processing — Use multithreaded batch generation with no document-generation quota.
  • AI-Friendly Workflows — Use structured templates and data inputs to support AI-assisted document workflows and reduce repeated prompt construction.
  • Batch Template Import and Migration — Import DITO templates and ComPDF Generation templates in batches, making it easy to migrate smoothly from iText and other competing PDF generation solutions to ComPDF Generation. Imported templates can be edited as needed for flexible reuse.
ComPDF Generation template editor preview

Quick Start

Windows PowerShell

Make sure Docker Desktop is installed and that you can pull the compdfkit/pdf-generation:1.0.0 image from Docker Hub. The commands below clone the project, copy the environment file, and start the services; wait until compdf-app becomes healthy, then open http://localhost:8090. .env.example includes a trial license, which adds a watermark to generated PDFs; for production use, replace COMPDF_LICENSE_KEY with a formal license and contact sales to obtain one.

git clone https://github.com/ComPDFKit/compdf-generation.git
cd compdf-generation
Copy-Item .env.example .env
docker compose up -d --build
docker compose ps

macOS or Linux

Make sure Docker Desktop (macOS) or Docker Engine with the Docker Compose plugin (Linux) is installed and that you can pull the compdfkit/pdf-generation:1.0.0 image from Docker Hub. The commands below clone the project, copy the environment file, and start the services; wait until compdf-app becomes healthy, then open http://localhost:8090. .env.example includes a trial license, which adds a watermark to generated PDFs; for production use, replace COMPDF_LICENSE_KEY with a formal license and contact sales to obtain one.

git clone https://github.com/ComPDFKit/compdf-generation.git
cd compdf-generation
cp .env.example .env
docker compose up -d --build
docker compose ps

For a remote Linux server, open the same address from a browser that can access the server's 8090 port. Templates are stored in TEMPLATE_STORAGE_DIR, which defaults to ./data/templates; rebuilding the application container does not remove this data.

User Guide

See the Self-Hosted Generation User Manual for template authoring and data binding.

Deployment Configuration

Environment Variables

Before starting the services, you can configure the following variables in .env:

VariableDefaultDescription
COMPDF_LICENSE_KEYRequiredA ComPDF License Key with PDF Generation or HTML-to-PDF permissions. The trial key in .env.example adds a watermark to generated PDFs.
COMPDF_IMAGE_PLATFORMlinux/amd64Platform used by the compdf-app image. Change only if the image supports the target deployment platform.
NODE_IMAGEnode:22-bookworm-slimNode.js image used to build the multi-stage Docker image for the Web and API services.
APP_PORT8090Port exposed for the ComPDF Generation Web UI and API. Change it if 8090 is already in use.
COMPDF_TIMEOUT_MS120000Maximum time in milliseconds for the Web/API services to wait for the ComPDF engine. Increase this for large or complex templates.
TEMPLATE_STORAGE_DIR./data/templatesHost directory used to persist HTML templates, JSON data sources, and metadata. Use an absolute path if you need a fixed storage location.
docker compose ps
docker compose logs --tail=100 compdf-generation compdf-app

compdf-app must be healthy before PDF generation is available. Templates are stored in TEMPLATE_STORAGE_DIR (./data/templates by default), and rebuilding the application container does not remove this data.

Use Cases

  • Automated contracts and agreements
  • Invoices, statements, and financial documents
  • Batch monthly, quarterly, and analytical reports
  • Certificates and standardized proof documents
  • On-demand PDF output for CRM, ERP, OA, and other internal systems

Open Source & Commercial Editions

Need production deployment, watermark-free output, or enterprise support? Upgrade to the commercial edition.

CapabilityOpen-Source EditionCommercial Edition
Document generation API
HTML template design and import
Template management
Batch generation
Export without watermarkWatermarkedNo watermark
Production useNot recommended
SLA / technical supportCommunity supportDedicated support
LicenseAGPL v3Commercial License

For production deployment, use a formal commercial License and follow your organization's operational and compliance requirements.

Comparison with Other Open-Source PDF Libraries

DimensionComPDF GenerationOther PDF Libraries
PositioningBusiness document generation with easy, scenario-based template customizationLow-level PDF capability wrappers
Document generationBatch generation with no output quotaUsually subject to certain limitations
Scenario focusContracts / invoices / reports / certificatesGeneral drawing and layout
TemplatingZero-code visual HTML template editing, with import and reuse supportRequires custom development
Commercial pathSeamless upgrade to a commercial editionExpansion often needs to be built independently

License

  • The open-source portion of this project is released under the GNU Affero General Public License v3.0.
  • For closed-source commercial projects, formal production environments, or enterprise delivery, please apply for a commercial License.

Support

Submit an Issue, join Discussions, or contact the ComPDF team for a commercial License.


Built by the ComPDF team.

Website · Contact Sales · Documentation

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

banner

English | 繁體中文 | 日本語 | 简体中文

ComPDF Generation — Open-Source Self-Hosted PDF Generation SDK & Platform

Generate business PDFs from HTML templates and JSON data with visual template editing, reusable templates, batch processing, and API integration.

GitHub StarsLicense: AGPL v3 + CommercialPRs Welcome

DocumentationWebsiteDiscussions


Contents


Why ComPDF Generation

ComPDF Generation is an open-source, self-hosted PDF generation SDK and platform for developers and teams that need reusable, template-based document workflows. It keeps deployment, templates, and workflow integration under your control.

Features

  • Visual Template Editor — Create, test, and preview templates visually. Edit HTML directly when advanced customization is needed.
  • Self-Hosted Web UI and API — Manage templates in the Web UI, then integrate workflows through API access and SDK capabilities.
  • Structured JSON Data — Generate customized documents from JSON data sources.
  • High-Volume Processing — Use multithreaded batch generation with no document-generation quota.
  • AI-Friendly Workflows — Use structured templates and data inputs to support AI-assisted document workflows and reduce repeated prompt construction.
  • Batch Template Import and Migration — Import DITO templates and ComPDF Generation templates in batches, making it easy to migrate smoothly from iText and other competing PDF generation solutions to ComPDF Generation. Imported templates can be edited as needed for flexible reuse.
ComPDF Generation template editor preview

Quick Start

Windows PowerShell

Make sure Docker Desktop is installed and that you can pull the compdfkit/pdf-generation:1.0.0 image from Docker Hub. The commands below clone the project, copy the environment file, and start the services; wait until compdf-app becomes healthy, then open http://localhost:8090. .env.example includes a trial license, which adds a watermark to generated PDFs; for production use, replace COMPDF_LICENSE_KEY with a formal license and contact sales to obtain one.

git clone https://github.com/ComPDFKit/compdf-generation.git
cd compdf-generation
Copy-Item .env.example .env
docker compose up -d --build
docker compose ps

macOS or Linux

Make sure Docker Desktop (macOS) or Docker Engine with the Docker Compose plugin (Linux) is installed and that you can pull the compdfkit/pdf-generation:1.0.0 image from Docker Hub. The commands below clone the project, copy the environment file, and start the services; wait until compdf-app becomes healthy, then open http://localhost:8090. .env.example includes a trial license, which adds a watermark to generated PDFs; for production use, replace COMPDF_LICENSE_KEY with a formal license and contact sales to obtain one.

git clone https://github.com/ComPDFKit/compdf-generation.git
cd compdf-generation
cp .env.example .env
docker compose up -d --build
docker compose ps

For a remote Linux server, open the same address from a browser that can access the server's 8090 port. Templates are stored in TEMPLATE_STORAGE_DIR, which defaults to ./data/templates; rebuilding the application container does not remove this data.

User Guide

See the Self-Hosted Generation User Manual for template authoring and data binding.

Deployment Configuration

Environment Variables

Before starting the services, you can configure the following variables in .env:

VariableDefaultDescription
COMPDF_LICENSE_KEYRequiredA ComPDF License Key with PDF Generation or HTML-to-PDF permissions. The trial key in .env.example adds a watermark to generated PDFs.
COMPDF_IMAGE_PLATFORMlinux/amd64Platform used by the compdf-app image. Change only if the image supports the target deployment platform.
NODE_IMAGEnode:22-bookworm-slimNode.js image used to build the multi-stage Docker image for the Web and API services.
APP_PORT8090Port exposed for the ComPDF Generation Web UI and API. Change it if 8090 is already in use.
COMPDF_TIMEOUT_MS120000Maximum time in milliseconds for the Web/API services to wait for the ComPDF engine. Increase this for large or complex templates.
TEMPLATE_STORAGE_DIR./data/templatesHost directory used to persist HTML templates, JSON data sources, and metadata. Use an absolute path if you need a fixed storage location.
docker compose ps
docker compose logs --tail=100 compdf-generation compdf-app

compdf-app must be healthy before PDF generation is available. Templates are stored in TEMPLATE_STORAGE_DIR (./data/templates by default), and rebuilding the application container does not remove this data.

Use Cases

  • Automated contracts and agreements
  • Invoices, statements, and financial documents
  • Batch monthly, quarterly, and analytical reports
  • Certificates and standardized proof documents
  • On-demand PDF output for CRM, ERP, OA, and other internal systems

Open Source & Commercial Editions

Need production deployment, watermark-free output, or enterprise support? Upgrade to the commercial edition.

CapabilityOpen-Source EditionCommercial Edition
Document generation API
HTML template design and import
Template management
Batch generation
Export without watermarkWatermarkedNo watermark
Production useNot recommended
SLA / technical supportCommunity supportDedicated support
LicenseAGPL v3Commercial License

For production deployment, use a formal commercial License and follow your organization's operational and compliance requirements.

Comparison with Other Open-Source PDF Libraries

DimensionComPDF GenerationOther PDF Libraries
PositioningBusiness document generation with easy, scenario-based template customizationLow-level PDF capability wrappers
Document generationBatch generation with no output quotaUsually subject to certain limitations
Scenario focusContracts / invoices / reports / certificatesGeneral drawing and layout
TemplatingZero-code visual HTML template editing, with import and reuse supportRequires custom development
Commercial pathSeamless upgrade to a commercial editionExpansion often needs to be built independently

License

  • The open-source portion of this project is released under the GNU Affero General Public License v3.0.
  • For closed-source commercial projects, formal production environments, or enterprise delivery, please apply for a commercial License.

Support

Submit an Issue, join Discussions, or contact the ComPDF team for a commercial License.


Built by the ComPDF team.

Website · Contact Sales · Documentation

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

banner

English | 繁體中文 | 日本語 | 简体中文

ComPDF Generation — Open-Source Self-Hosted PDF Generation SDK & Platform

Generate business PDFs from HTML templates and JSON data with visual template editing, reusable templates, batch processing, and API integration.

GitHub StarsLicense: AGPL v3 + CommercialPRs Welcome

DocumentationWebsiteDiscussions


Contents


Why ComPDF Generation

ComPDF Generation is an open-source, self-hosted PDF generation SDK and platform for developers and teams that need reusable, template-based document workflows. It keeps deployment, templates, and workflow integration under your control.

Features

  • Visual Template Editor — Create, test, and preview templates visually. Edit HTML directly when advanced customization is needed.
  • Self-Hosted Web UI and API — Manage templates in the Web UI, then integrate workflows through API access and SDK capabilities.
  • Structured JSON Data — Generate customized documents from JSON data sources.
  • High-Volume Processing — Use multithreaded batch generation with no document-generation quota.
  • AI-Friendly Workflows — Use structured templates and data inputs to support AI-assisted document workflows and reduce repeated prompt construction.
  • Batch Template Import and Migration — Import DITO templates and ComPDF Generation templates in batches, making it easy to migrate smoothly from iText and other competing PDF generation solutions to ComPDF Generation. Imported templates can be edited as needed for flexible reuse.
ComPDF Generation template editor preview

Quick Start

Windows PowerShell

Make sure Docker Desktop is installed and that you can pull the compdfkit/pdf-generation:1.0.0 image from Docker Hub. The commands below clone the project, copy the environment file, and start the services; wait until compdf-app becomes healthy, then open http://localhost:8090. .env.example includes a trial license, which adds a watermark to generated PDFs; for production use, replace COMPDF_LICENSE_KEY with a formal license and contact sales to obtain one.

git clone https://github.com/ComPDFKit/compdf-generation.git
cd compdf-generation
Copy-Item .env.example .env
docker compose up -d --build
docker compose ps

macOS or Linux

Make sure Docker Desktop (macOS) or Docker Engine with the Docker Compose plugin (Linux) is installed and that you can pull the compdfkit/pdf-generation:1.0.0 image from Docker Hub. The commands below clone the project, copy the environment file, and start the services; wait until compdf-app becomes healthy, then open http://localhost:8090. .env.example includes a trial license, which adds a watermark to generated PDFs; for production use, replace COMPDF_LICENSE_KEY with a formal license and contact sales to obtain one.

git clone https://github.com/ComPDFKit/compdf-generation.git
cd compdf-generation
cp .env.example .env
docker compose up -d --build
docker compose ps

For a remote Linux server, open the same address from a browser that can access the server's 8090 port. Templates are stored in TEMPLATE_STORAGE_DIR, which defaults to ./data/templates; rebuilding the application container does not remove this data.

User Guide

See the Self-Hosted Generation User Manual for template authoring and data binding.

Deployment Configuration

Environment Variables

Before starting the services, you can configure the following variables in .env:

VariableDefaultDescription
COMPDF_LICENSE_KEYRequiredA ComPDF License Key with PDF Generation or HTML-to-PDF permissions. The trial key in .env.example adds a watermark to generated PDFs.
COMPDF_IMAGE_PLATFORMlinux/amd64Platform used by the compdf-app image. Change only if the image supports the target deployment platform.
NODE_IMAGEnode:22-bookworm-slimNode.js image used to build the multi-stage Docker image for the Web and API services.
APP_PORT8090Port exposed for the ComPDF Generation Web UI and API. Change it if 8090 is already in use.
COMPDF_TIMEOUT_MS120000Maximum time in milliseconds for the Web/API services to wait for the ComPDF engine. Increase this for large or complex templates.
TEMPLATE_STORAGE_DIR./data/templatesHost directory used to persist HTML templates, JSON data sources, and metadata. Use an absolute path if you need a fixed storage location.
docker compose ps
docker compose logs --tail=100 compdf-generation compdf-app

compdf-app must be healthy before PDF generation is available. Templates are stored in TEMPLATE_STORAGE_DIR (./data/templates by default), and rebuilding the application container does not remove this data.

Use Cases

  • Automated contracts and agreements
  • Invoices, statements, and financial documents
  • Batch monthly, quarterly, and analytical reports
  • Certificates and standardized proof documents
  • On-demand PDF output for CRM, ERP, OA, and other internal systems

Open Source & Commercial Editions

Need production deployment, watermark-free output, or enterprise support? Upgrade to the commercial edition.

CapabilityOpen-Source EditionCommercial Edition
Document generation API
HTML template design and import
Template management
Batch generation
Export without watermarkWatermarkedNo watermark
Production useNot recommended
SLA / technical supportCommunity supportDedicated support
LicenseAGPL v3Commercial License

For production deployment, use a formal commercial License and follow your organization's operational and compliance requirements.

Comparison with Other Open-Source PDF Libraries

DimensionComPDF GenerationOther PDF Libraries
PositioningBusiness document generation with easy, scenario-based template customizationLow-level PDF capability wrappers
Document generationBatch generation with no output quotaUsually subject to certain limitations
Scenario focusContracts / invoices / reports / certificatesGeneral drawing and layout
TemplatingZero-code visual HTML template editing, with import and reuse supportRequires custom development
Commercial pathSeamless upgrade to a commercial editionExpansion often needs to be built independently

License

  • The open-source portion of this project is released under the GNU Affero General Public License v3.0.
  • For closed-source commercial projects, formal production environments, or enterprise delivery, please apply for a commercial License.

Support

Submit an Issue, join Discussions, or contact the ComPDF team for a commercial License.


Built by the ComPDF team.

Website · Contact Sales · Documentation

Releases

Packages

Contributors

Languages