Čím generovat PDF z HTML?

hknmtt

Čím generovat PDF z HTML?
« kdy: 17. 12. 2022, 16:22:45 »
Potrebujem generovat PDFka z HTML. Zda sa ze wkhtmltopdf akosi nie je na dostatocnej urovni a negeneruje pekne vysledky. Mimo ineho ma 1300 otvorenych ticketov na githube takze vyvoj asi uz moc nikam nejde. Preto hladam alternativu. Malo by to mat CLI a bezat na vsetkych platformach, dostupne ako jedna binarka bez potreby dodatocnych krokov na rozhebanie.
« Poslední změna: 17. 12. 2022, 19:08:03 od Petr Krčmář »


Re:Cim generovat PDF z HTML?
« Odpověď #1 kdy: 17. 12. 2022, 16:58:29 »
Já používám Chrome. Na Ubuntu:
Kód: [Vybrat]
google-chrome \
    --headless \
    --disable-gpu \
    --no-margins \
    --print-to-pdf="output.pdf" \
    "input.html"
« Poslední změna: 17. 12. 2022, 17:00:35 od honzik1111 »

hknmtt

Re:Cim generovat PDF z HTML?
« Odpověď #2 kdy: 17. 12. 2022, 17:12:17 »
Mam ungoogled chromium ale nic to nerobi. Neviem ci tam vobec je headless mod v tom. Nie je to na tom ubuntu specialny headless build? Myslim ze normalne treba mat chrome canary pre vyvojarov.
« Poslední změna: 17. 12. 2022, 17:14:31 od hknmtt »

Re:Cim generovat PDF z HTML?
« Odpověď #3 kdy: 17. 12. 2022, 17:23:12 »
Mám obyčejně nainstalovaný obyčejný Chrome na Ubuntu 22.04.

Jestli to funguje i na Chromiu netuším.

hknmtt

Re:Čím generovat PDF z HTML?
« Odpověď #4 kdy: 17. 12. 2022, 19:35:44 »
Nainstaloval som chrome a rovnaky vysledok - nerobi to vobec nic.


hknmtt

Re:Čím generovat PDF z HTML?
« Odpověď #5 kdy: 17. 12. 2022, 19:38:44 »
Canary ditto. Podla mna tam proste nejak treba aktivovat headless mod. Na FF som zatial nenasiel nic aktualne.

Re:Čím generovat PDF z HTML?
« Odpověď #6 kdy: 17. 12. 2022, 21:09:16 »
Citace
nic to nerobi
Citace
nerobi to vobec nic
Tam asi záleží, co konkrétně znamená "nic": jaké konkrétně HTML chete konvertovat (lokální, někde z webu, ...), jaký konkrétně příkaz používáte, na jakém systému....
"Nedělá to nic" není pro další pomoc dostatečně informativní.

Mě to v terminálu vypíše dva nějaké warningy a nakonec "INFO: Written to file output.pdf".

V rámci node.js můžete použít puppeteer, ale jestli máte problém z headless, asi to nebude řešení:
Citace
Puppeteer is a Node.js library which provides a high-level API to control Chrome/Chromium over the DevTools Protocol. Puppeteer runs in headless mode by default, but can be configured to run in full (non-headless) Chrome/Chromium.
Pro konkrétní použití vyhledejte něco jako "puppeteer save pdf".

wkhtmltopdf a podobné (weasyprint) jsem používal dřív, ale ze zkušenosti fungují jen pro jednoduché věci. Pokud navíc potřebujete javascript, plnohodnotný prohlížeč je jediné řešení, které mi zatím fungovalo (tím že fungovalo, tak jsem ale další řešení už nehledal..).

Re:Čím generovat PDF z HTML?
« Odpověď #7 kdy: 18. 12. 2022, 08:35:14 »
Pokud to je pár PDF tu a tam ručně, tak přímo v prohlížeči Ctrl+P.

Pokud to chcete nějak automatizovat a nevadí vám trochu kanon na vrabce, tak bych použil Playwright https://playwright.dev/. Je podobný Puppeteeru, na výběr je samozřejmě několik jazyků, a stáhne a spustí si vlastní prohlížeč podle vašeho výběru. A pokud si nechcete tahat moc závislostí, tak spuštění v kontejneru je velmi jednoduché.

Re:Čím generovat PDF z HTML?
« Odpověď #8 kdy: 19. 12. 2022, 20:10:23 »
Zkusil bych třeba weasyprint, příklad na GitHubu
https://github.com/ecmonline/invoice-generator

Re:Čím generovat PDF z HTML?
« Odpověď #9 kdy: 19. 12. 2022, 21:01:56 »
Co https://gotenberg.dev/ v Dockeru? Tam už to snad nepůjde se vymluvit, že to "nic nedělá".
Případně půjde o nechvalně známou chybu mezi klávesnicí a židlí.

Re:Čím generovat PDF z HTML?
« Odpověď #10 kdy: 31. 01. 2023, 18:30:42 »
Já používám MS Edge a Ubuntu (neinstaloval jsem žádné doplňky k tomu určené) a je to na dva kroky:

1) Menu (tři tečky), "Zachycení webu", "Celá obrazovka" =* uložit do jpeg.

2) Otevřít stažený jpeg pomocí "Prohlížeč obrázků", kliknout na "Tisk" , vybrat zde "Uložit do souboru", vybrat "PDF", uložit.

Hotovo. Komplet celá stránka je v PDF.
« Poslední změna: 31. 01. 2023, 18:36:24 od czjames »
OS: Ubuntu 22.04, CPU: AMD Ryzen 5 5600x, RAM: 32 GB, GK: NVidia GTX 1660 Super

Zopper

  • *****
  • 657
    • Zobrazit profil
Re:Čím generovat PDF z HTML?
« Odpověď #11 kdy: 05. 02. 2023, 09:49:03 »
Au. Upřímně doufám, že ta cesta přes jpg je myšlená jako vtip, když to jde přímo.

Asi nejsnazší a nejuniverzálnější vytváření PDF z čehokoliv v interaktivním režimu je přes ten tiskový dialog. Při nejhorším musí člověk kliknout na něco jako "použít systémové okno" v prohlížečích, které člověku prvně ukážou něco vlastního (a převod do PDF tam nedají).

Nicméně původní tazatel už svůj účet zrušil, takže tomu to nepomůže. :D


Mlocik97

  • *****
  • 830
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
Re:Čím generovat PDF z HTML?
« Odpověď #12 kdy: 05. 02. 2023, 13:14:05 »
A prekvapivo cez JPG je to stále lepšie než čo som videl ja... jedna pipka takto chcela tiež web stránku do PDF, tak odfotila mobilom displej laptopu, otvorila obrázok na mobile a na laptope cez kameru odfotila mobil, a uložila do PDF... keď som sa spýtal, prečo to tak robí, že to môže vytlačiť do PDF, tak povedala že nemá tlačiareň.

E: btw. ten headless prehliadač je asi najlepšie a najjednoduchšie riešenie, tazatel to chce cez CLI, tak nechápem prečo sú tu rady cez grafické rozhrania.
« Poslední změna: 05. 02. 2023, 13:16:25 od Mlocik97 »

Re:Čím generovat PDF z HTML?
« Odpověď #13 kdy: 05. 02. 2023, 14:47:10 »
pandoc

Re:Čím generovat PDF z HTML?
« Odpověď #14 kdy: 06. 02. 2023, 20:47:59 »
PDF tisknu na serveru z Chromu pres https://hub.docker.com/r/browserless/chrome.
Ma to tu vyhodu, ze ve stejnem prohlizeci se stranka odladi i vytiskne.
Predam tomu adresu HTML dokumentu k tisku a vrati mi to PDF.
Defaultni parametry pouzivam:
Kód: [Vybrat]
displayHeaderFooter=false,format=A4,printBackground=true