Microservice for generating PDF files from HTML and assets easily.
3.1K
(Please see https://github.com/eteu-technologies/pdfgen/blob/master/README.md for most up to date README)
Microservice for generating PDF files from HTML and assets easily.
This project is using Chromium to render, so you are free to use everything what Chromium supports (HTML5 and CSS Flex for example).
pdfgen implements a subset of PSPDFKit Processor's API and features (no support for existing PDF files and operations, only generation from scratch; no special handling for inputs (no fillable forms)).
We're publishing x86_64 Linux Docker images on Docker Hub.
aarch64 Linux images are planned.
Recommended way to run the generator microservice:
docker run --rm -ti \
--name pdfgen \
--read-only \
--tmpfs /tmp \
--shm-size 2gb \
-p 5000:5000 \
eteu/pdfgen:latest
If possible, also consider dropping internet access from the container.
POST /process with multipart/form-data
Based on https://pspdfkit.com/guides/processor/pdf-generation/pdf-generation-schema/
type Orientation = "landscape" | "portrait";
type PageSize =
| "A0"
| "A1"
| "A2"
| "A3"
| "A4"
| "A5"
| "A6"
| "A7"
| "A8"
| "Letter"
| "Legal";
type PdfGenerationSchema = {
html: string, // The HTML file passed in the multipart request.
assets?: Array<string>, // All assets imported in the HTML. Reference the name passed in the multipart request.
layout?: {
orientation?: Orientation,
size?: {
width: number,
height: number
} | PageSize, // {width, height} in mm or page size preset.
margin?: {
// Margin sizes in mm.
left: number,
top: number,
right: number,
bottom: number
}
}
};
Requires jq to be installed as well.
#!/usr/bin/env bash
set -euo pipefail
gen='{
"html": "invoice.html"
, "assets": [
"bootstrap-5.0.2.min.css"
]
, "layout": {
"orientation": "portrait"
, "size": "A4"
, "margin": {
"top": 10
, "bottom": 10
, "left": 10
, "right": 10
}
}
}'
curl -v \
-X POST \
-o invoice.pdf \
-F generation="$(jq -c <<< "${gen}")" \
-F bootstrap-5.0.2.min.css=@./bootstrap-5.0.2.min.css \
-F invoice.html=@./invoice.html \
http://127.0.0.1:5000/process
LGPL 3.0
Content type
Image
Digest
sha256:a5d5c0f4f…
Size
300 MB
Last updated
11 months ago
docker pull eteu/pdfgen