Generare PDF cu HTML&CSS mai complicat

Buna,
Am o sarcina pe un proiect sa generez PDF-uri cu html&css mai complicat, adica nu doar table si h1,h2…
Initial foloseam https://wkhtmltopdf.org/. Este ok, insa cu acest tool ai batai de cap cu css modern, de gen flex-wrap iar de fiecare data cand incercam sa generez un design nou, lucrul devenea un cosmar.

Recent am gasit o alta solutie, https://github.com/puppeteer/puppeteer. Aici html,css,js scris primesti un PDF asa cum il vezi in Chrome, din cauza ca puppeteer foloseste chrome,chromium. Rezultatul este ideal, doar ca ma intreb daca este ok sa-l folosesc pentru aceasta sarcina? Tinand cont ca chrome consuma CPU si RAM mult, as putea avea crash la nu moment dat pe aplicatie. Am inteles ca este folosit mai mult pentru testari.

Voi ce tool-uri folositi pentru generare PDF?

Nu folosesc dar auzisem de chrome headless că s-ar descurca cu asta

Multumesc pentru raspuns. Chiar puppeteer foloseste chrome headless.

Pentru conversie PDF folosesc Chrome controlat prin Puppeteer. Nu este indicat sa il rulezi pe acelasi server unde ai si aplicatia din motive de stabilitate. Eu il rulez serverless in Google Cloud Function si functioneaza ok. Alta varianta este sa il pui pe un server separat sau sa folosesti un serviciu platit, de exemplu https://pdfswitch.io/.

1 Like

Am inteles, ms pentru raspuns. Ma gandeam si eu ca o solutie ar fi sa-l pun pe alt server.

Atentie cu serviciile gen pdfswitch (nu am gasit date la ei pe site). Daca clientul e din RO ar fi bine ca datele sa nu paraseasca RO sau EU. Unii au deschis servere in EU special dupa GDPR (mailgun de ex). Sigur, nu iti garanteaza nimeni ce se intampla cu datele alea, poate transfera meta despre ele, poate un rouge employee, dar macar sa poti spune ca ai luat toate masurile posibile.

Am sa tin cont de acest lucru.

Uite încă o idee: folosește tot Chorme în spate (nu cred ca există o altă soluție daca vrei suport pentru CSS modern): https://thecodingmachine.github.io/gotenberg/
Rulând în Docker e izolat de restul sistemului, ceea ce e un plus.

2 Likes

Multumesc pentru recomandare.

Usor offtopic, dar chiar recent am avut un proiect de generat PDF-uri cu oferte comerciale dintr-un app și am folosit React PDF, care e bazat pe PDFKit (js/node).

3 Likes

Vezi dacă te ajută https://github.com/danburzo/percollate .

1 Like

https://thecodingmachine.github.io/gotenberg/ este ceea ce cauti, cum ti-a mai recomandat @redecs
E perfect ca e izolat in docker, poti sa folosesti usor si in k8s, poti sa-i dai imagini, fonturi, tot ce vrei, si iti scoate PDF-urile ok. Daca folosesti in k8s vezi sa-i aloci resurse suficiente (256Mi ram, 300m CPU), altfel va raspunde mai greu la conversii in paralel.

1 Like