Fórum Root.cz

Hlavní témata => Software => Téma založeno: hknmtt 17. 12. 2022, 16:22:45

Název: Čím generovat PDF z HTML?
Přispěvatel: hknmtt 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 (https://user-images.githubusercontent.com/64546059/208248594-c073e709-ce38-4a3b-861f-fa404a111b81.png). 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.
Název: Re:Cim generovat PDF z HTML?
Přispěvatel: honzik1111 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"
Název: Re:Cim generovat PDF z HTML?
Přispěvatel: hknmtt 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.
Název: Re:Cim generovat PDF z HTML?
Přispěvatel: honzik1111 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.
Název: Re:Čím generovat PDF z HTML?
Přispěvatel: hknmtt 17. 12. 2022, 19:35:44
Nainstaloval som chrome a rovnaky vysledok - nerobi to vobec nic.
Název: Re:Čím generovat PDF z HTML?
Přispěvatel: hknmtt 17. 12. 2022, 19:38:44
Canary ditto. Podla mna tam proste nejak treba aktivovat headless mod. Na FF som zatial nenasiel nic aktualne.
Název: Re:Čím generovat PDF z HTML?
Přispěvatel: honzik1111 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 (https://www.npmjs.com/package/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 (https://weasyprint.org/)) 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..).
Název: Re:Čím generovat PDF z HTML?
Přispěvatel: Michal Stanke 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é.
Název: Re:Čím generovat PDF z HTML?
Přispěvatel: ludan 19. 12. 2022, 20:10:23
Zkusil bych třeba weasyprint, příklad na GitHubu
https://github.com/ecmonline/invoice-generator
Název: Re:Čím generovat PDF z HTML?
Přispěvatel: Tomáš Procházka 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í.
Název: Re:Čím generovat PDF z HTML?
Přispěvatel: czjames 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.
Název: Re:Čím generovat PDF z HTML?
Přispěvatel: Zopper 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

Název: Re:Čím generovat PDF z HTML?
Přispěvatel: Mlocik97 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.
Název: Re:Čím generovat PDF z HTML?
Přispěvatel: Sinuhet Merlin 05. 02. 2023, 14:47:10
pandoc
Název: Re:Čím generovat PDF z HTML?
Přispěvatel: raskal 06. 02. 2023, 20:47:59
PDF tisknu na serveru z Chromu pres https://hub.docker.com/r/browserless/chrome (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