Für die Verwendung von Puppeteer zum Rendern von mehrseitigen HTML-Dokumenten wurde ein Runtime-Image bereitgestellt:
registry.brandbox.host/
...
runtime/puppeteer:1.0.0
registry.brandbox.host/runtime/puppeteer:1.1.0
registry.brandbox.host/runtime/puppeteer:
...
1.2.0
Enthaltene Software
Software | Version |
---|---|
Debian | 10 |
Node.js | 14.21.3 |
Konfiguration für docker-compose.yml
Das Image kann in einer docker-compose.yml
wie folgt eingebunden werden:
Codeblock | ||
---|---|---|
| ||
puppeteer: image: registry.brandbox.host/runtime/puppeteer:1.0.0[Version] hostname: $COMPOSE_PROJECT_NAME domainname: local.brandbox.de volumes: - /mnt/nfsstorage/${COMPOSE_PROJECT_NAME}/temp:/var/www/temp/ - /mnt/nfsstorage/${COMPOSE_PROJECT_NAME}/share:/var/www/share/ env_file: - brandbox.docker.env working_dir: /var/www networks: - internal - proxy labels: traefik.enable: "true" traefik.backend.loadbalancer.method: "drr" aliases: traefik.docker.network: traefik_webgateway traefik.frontend.rule: "Host:puppeteer.$COMPOSE- puppeteer.${COMPOSE_PROJECT_NAME.local.brandbox.de"} labels: traefik.port: 8080 ports: -traefik.enable: "9000false" exposeports: - "8080" |
Die Umgebungsvariablen PUPPETEER_HOST
und PUPPETEER_PROTOCOL
müssen wie folgt befüllt werden (brandbox.docker.env):
Umgebungsvariable | Wert | |||
---|---|---|---|---|
|
| |||
| https |
Cluster-Konfiguration (Kubernetes)
Es muss ein Deployment mit dem Image
registry.brandbox.host/runtime/puppeteer:1.0.0
eingerichtet werdenEs muss ein Service mit dem Namen
service-puppeteer
eingerichtet werden, der auf dieses Deployment verweist
Die Umgebungsvariablen PUPPETEER_HOST
und PUPPETEER_PROTOCOL
müssen wie folgt befüllt werden
Umgebungsvariable | Wert |
---|---|
|
|
|
|
Diese Standardwerte existieren bereits im Rancher-Manager und werden beim Redeploy über die Gitlab-Pipeline automatisch gesetzt.
Verwendung
Das Image stellt eine einfache Rest-Schnittstelle bereit, mit der HTML-Dokumente an Puppeteer übergeben werden können:verschiedene HTTP-Schnittstellen zur Verarbeitung von HTML-Dokumenten zur Verfügung.
GET https://
...
[HOSTNAME]:8080/puppeteer?source=[SOURCE]&target=[TARGET]
Mit dieser Schnittstelle kann ein HTML-Dokument auf einzelne Seiten verteilt und abgelegt werden.
Parameter (GET
)
Bezeichnung | Beschreibung | ||||||||
---|---|---|---|---|---|---|---|---|---|
| Das zu rendernde verarbeitende HTML-Dokument, per Datei-Pfad auf ein Shared Volume, z.B. ". Die Angabe erfolgt als URL und kann entweder ein Dateipfad oder eine Webadresse darstellen.
| ||||||||
| Ein Datei-Pfad Ordnerpfad für die Ablage des erstellten mehrseitigen Dokuments | timeout | verarbeiteten HTML-Dokuments. Es wird immer ein Gesamtdokument sowie die Einzelseiten abgelegt. | ||||||
| Die Anzahl an Millisekunden, die der Renderprozess Verarbeitungsprozess auf eine Reaktion wartet. Standardmäßig wird hier 60000 | abort | Dieses Argument muss entweder weggelassen oder gesetzt werden. Falls gesetzt, wird der Render-Prozess . | ||||||
| Die Anzahl an Millisekunden, die der Verarbeitungsprozess auf das Quelldokument ( | ||||||||
| Wird dieser Parameter definiert und enthält den Wert |
Rückgabewerte (JSON
)
Bezeichnung | Beschreibung | |
---|---|---|
| Im Erfolgsfall | |
log | Die Konsolen-Ausgabe von Puppeteer |
Beispiel
...
. | ||
| Eine Zusammenfassung des Verarbeitungsprozesses sowie Zusatzinformationen für eine Protokollierung. Diese Information wird als JSON-Objekt übergeben. | |
| Die im | |
| Der im | |
| Die innerhalb des Verarbeitungsprozesses ausgeführten HTTP-Anfragen und deren Ergebnisse (Status oder Fehlertext). | |
| Die innerhalb des Verarbeitungsprozesses eingesammelten Logmeldungen sowie deren Typ. | |
| Laufzeit des Verarbeitungsprozesses in Sekunden. | |
| Zusatzinformationen aus der Anfrage oder dem Verarbeitungsprozess. |
Beispiel
Codeblock | ||
---|---|---|
| ||
// GET http://[HOSTNAME]:8080/puppeteer?source=https%3A%2F%2Fexample.com%2Fsomething%2Fsomething.html&target=%2Fvar%2Fwww%2Fshare%2Fprivate%2Fexample { "result": true, "log": [{ "file:///var/www/normal.html", "file:///var/www/normal.html 200", "source": "https://example.brandbox.decom/temp/public/framework/fractal/rendered/print-styleguide.csssomething/something.html", "target"https: "//example.brandbox.de/?request=Fractal/Fractal.image&filename=share/public/client-1/domain-1/Testbilder/16126a.tifvar/www/share/private/example", "https://example.brandbox.de/?request=Fractal/Fractal.image&filename=share/public/client-1/domain-1/Testbilder/brandbox_logo.eps", requests": { "https://example.brandbox.de/?request=Fractal/Fractal.image&filename=share/public/client-1/domain-1/Testbilder/example.pdf", com/something/something.html": 200, "https://example.brandbox.de/?request=Fractal/Fractal.image&filename=share/public/client-1/domain-1/Testbilder/konmedia_logo.eps", "https://example.brandbox.de/temp/public/framework/fractal/js/print-document.js"com/style.css": 200, // ... }, "https://example.brandbox.de/temp/public/framework/fractal/rendered/print-styleguide.css 200", "https://example.brandbox.de/temp/public/framework/fractal/js/print-document.js 200messages": { { "type": "info", "text"https://example.brandbox.de/temp/public/framework/fractal/fonts/roboto-normal-400.woff2", "https://example.brandbox.de/temp/public/framework/fractal/fonts/roboto-normal-700.woff2", "https://example.brandbox.de/temp/public/framework/fractal/js/print-element.js", "https://example.brandbox.de/temp/public/framework/fractal/fonts/roboto-normal-400.woff2 200", "https://example.brandbox.de/temp/public/framework/fractal/fonts/roboto-normal-700.woff2 200", "https://example.brandbox.de/temp/public/framework/fractal/js/print-element.js 200", "https://example.brandbox.de/temp/public/framework/fractal/js/print-table.js", "https://example.brandbox.de/temp/public/framework/fractal/js/print-table.js 200", "https://example.brandbox.de/temp/public/framework/fractal/js/print-paragraph.js", "https://example.brandbox.de/temp/public/framework/fractal/js/print-paragraph.js 200", "https://example.brandbox.de/temp/public/framework/fractal/js/print-page.js", "https://example.brandbox.de/temp/public/framework/fractal/js/print-page.js 200", "Created 1 pages", "https://example.brandbox.de/?request=Fractal/Fractal.image&filename=share/public/client-1/domain-1/Testbilder/konmedia_logo.eps 200", "Created 2 pages", "https://example.brandbox.de?request=Fractal/Fractal.image&filename=share/public/client-1/domain-1/Testbilder/brandbox_logo.eps 200", "https://example.brandbox.de/?request=Fractal/Fractal.image&filename=share/public/client-1/domain-1/Testbilder/16126a.tif 200", "https://example.brandbox.de/?request=Fractal/Fractal.image&filename=share/public/client-1/domain-1/Testbilder/example.pdf 200", "Created 3 pages", "Created 4 pages", "Created 5 pages", "Created 6 pages", "Created 7 pages", "Created 8 pages", "Created 9 pages", "Created 10 pages", "Created 11 pages", "Document processing took 3.323 seconds", "Finished in 3.558 seconds (11 pages)" ] }: "[document] waiting for document" }, { "type": "info", "text": "[document] creating page 1" }, // ... { "type": "info", "text": "[document] finished document" }, // ... }, "duration": 37.4, "additional": {/* ... */}, } } |
POST https://[HOSTNAME]:8080/pdf
Diese Schnittstelle verteilt ein HTML-Dokument auf mehrere Seite und speichert das Ergebnis als PDF-Dokument.
Hinweis |
---|
Das erzeugte PDF-Dokument erfüllt nicht die Anforderungen eines Druck-PDF-Dokuments. |
Anfrageinhalt (JSON
)
Bezeichnung | Typ | Beschreibung | ||
---|---|---|---|---|
|
| Das zu verarbeitende HTML-Dokument. Die Angabe erfolgt als URL und kann entweder ein Dateipfad oder eine Webadresse darstellen.
| ||
|
| Ein Ordnerpfad für die Ablage des verarbeiteten HTML-Dokuments. Es wird immer ein Gesamtdokument sowie die Einzelseiten abgelegt. | ||
|
| |||
|
| |||
|
| Wird diese Option auf | ||
|
| Wird diese Option auf | ||
|
| |||
|
| Die maximale Wartezeit in Millisekunden die zum Aufrufen der Dokumentenquelle verstreichen darf. | ||
|
| Die maximale Wartezeit in Millisekunden die zwischen „Lebenszeichen“ des Verarbeitungsprozesses verstreichen darf. |
Rückgabewerte (JSON
)
Bezeichnung | Typ | Beschreibung |
---|---|---|
|
| Wird auf den Wert |
|
| Die Dauer in Millisekunden, welche für die Verarbeitung benötigt wurde. |
|
| Die gesammelten Logmitteilungen aus der Verarbeitungsprozess. |
|
| Die angeforderten Ressourcen aus dem Verarbeitungsprozess. |
Versionshistorie
Info |
---|
Version 1.0.0 (veraltet) |
Info |
---|
Version 1.1.0
|
Info |
---|
Version 1.2.0
|