Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

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
languageyml
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

PUPPETEER_HOST

puppeteer.$COMPOSE${COMPOSE_PROJECT_NAME.local.brandbox.de  (wie in }:8080

Info

Die Definition dieser Umgebungsvariable sollte über die docker-compose.yml

definiert)

vorgenommen werden.

PUPPETEER_PROTOCOL PROTOCOL

httpshttp

Cluster-Konfiguration (Kubernetes)

  • Es muss ein Deployment mit dem Image registry.brandbox.host/runtime/puppeteer:1.0.0 eingerichtet werden

  • Es 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

PUPPETEER_HOST

service-puppeteer:8080

PUPPETEER_PROTOCOL PROTOCOL

http

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

source

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.

  1. Dateipfad (bspw. in einem eingehangenen Volume): file:///var/www/

normal
  1. share/private/document.html

"oder eine URL, unter der das HTML-Dokument erreichbar ist
  1. Webadresse: https://[HOSTNAME]/something/something.html?optional=parameter

target

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.

timeout

Status
colourBlue
titleOptional

Die Anzahl an Millisekunden, die der Renderprozess Verarbeitungsprozess auf eine Reaktion wartet. Standardmäßig wird hier 60000 60.000 für 60 Sekunden gesetzt

abort

Dieses Argument muss entweder weggelassen oder gesetzt werden. Falls gesetzt, wird der Render-Prozess .

request

Status
colourBlue
titleOPTIONAL

Die Anzahl an Millisekunden, die der Verarbeitungsprozess auf das Quelldokument (source-Parameter) wartet. Standardmäßig wird hier 30.000 für 30 Sekunden gesetzt.

abort

Status
colourBlue
titleOPTIONAL

Wird dieser Parameter definiert und enthält den Wert 1, wird der Verarbeitungsprozess bei einem Fehler sofort abgebrochen, falls es nicht gesetzt wurde, . Andernfalls werden Fehlermeldungen zwar protokolliert aber übergangen.

Rückgabewerte (JSON)

Bezeichnung

Beschreibung

result

Im Erfolgsfall true für erfolgreiche Konvertierung, andernfalls false im Fehlerfall

log

Die Konsolen-Ausgabe von Puppeteer

Beispiel

...

.

log

Eine Zusammenfassung des Verarbeitungsprozesses sowie Zusatzinformationen für eine Protokollierung. Diese Information wird als JSON-Objekt übergeben.

source

Die im source-Parameter übergebene URL zum Quelldokument.

target

Der im target-Parameter übergebene Ordnerpfad für die Ablage der verarbeiteten Dokumente.

requests

Die innerhalb des Verarbeitungsprozesses ausgeführten HTTP-Anfragen und deren Ergebnisse (Status oder Fehlertext).

messages

Die innerhalb des Verarbeitungsprozesses eingesammelten Logmeldungen sowie deren Typ.

duration

Laufzeit des Verarbeitungsprozesses in Sekunden.

additional

Zusatzinformationen aus der Anfrage oder dem Verarbeitungsprozess.

Beispiel

Codeblock
languagejs
// 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

source

string

Das zu verarbeitende HTML-Dokument. Die Angabe erfolgt als URL und kann entweder ein Dateipfad oder eine Webadresse darstellen.

  1. Dateipfad (bspw. in einem eingehangenen Volume): file:///var/www/share/private/document.html

  2. Webadresse: https://[HOSTNAME]/something/something.html?optional=parameter

target

string

Ein Ordnerpfad für die Ablage des verarbeiteten HTML-Dokuments. Es wird immer ein Gesamtdokument sowie die Einzelseiten abgelegt.

configuration

object

options

object

abort

boolean

Wird diese Option auf true gesetzt, bricht der Verarbeitungsprozess bei einem Platzierungsfehler direkt ab.

debug

boolean

Wird diese Option auf true gesetzt, werden innerhalb des Images Logmitteilungen ausgegeben.

timeouts

object

navigation

integer

Die maximale Wartezeit in Millisekunden die zum Aufrufen der Dokumentenquelle verstreichen darf.

processing

integer

Die maximale Wartezeit in Millisekunden die zwischen „Lebenszeichen“ des Verarbeitungsprozesses verstreichen darf.

Rückgabewerte (JSON)

Bezeichnung

Typ

Beschreibung

success

boolean

Wird auf den Wert true gesetzt, wenn der Verarbeitungsprozess und die PDF-Erstellung erfolgreich abgeschlossen wurde. Der Wert false wird im Fehlerfall gesetzt.

runtime

integer

Die Dauer in Millisekunden, welche für die Verarbeitung benötigt wurde.

logs

object

Die gesammelten Logmitteilungen aus der Verarbeitungsprozess.

resources

object

Die angeforderten Ressourcen aus dem Verarbeitungsprozess.

Versionshistorie

Info

Version 1.0.0 (veraltet)

Info

Version 1.1.0

  • Nutzt brandbox puppeteer als User-Agent

Info

Version 1.2.0

  • Stellt den Endpunkt /pdf zur Verfügung