Tisk do pdf z příkazové řádky linuxu je na linuxovém desktopu jednoduchý, ale ne vždy jsme spokojeni s výsledkem. Pokud máme k dispozici Google Chrome nebo Chromium, tak máme z půlky vyhráno. Existují i jiné možnosti, jako například wkhtmltopdf, ověřte si, který nástroj vám poskytne nejlepší výsledek.
Google Chrome/Chromium vs wkhtmltopdf
Každý web je jiný, proto některé webové stránky jdou lépe konvertovat do pdf v google chrome či chromiu, a jiné třeba v wkhtmltopdf. Tam kde si jeden nástroj může vylámat zuby, druhý podá lepší výsledek. Neexistuje univerzální tool, který nejlépe převede web do pdf za všech okolností.
Bash script pro tisk webu do pdf pomocí Google Chrome
web_to_pdf:
#!/bin/bash
user_data_dir="${HOME}/.config/google-chrome-for-print"
if [[ -n ${1} ]]; then
url="${1}"; else
read -erp "zadej url: " url
fi
if [[ -z ${url} ]]; then
echo "url nemůže být prázdné!"
echo "příklad:"
echo "${0} https://itislove.cz/"
exit 1
fi
vystup=$(echo "${url}"|cut -f3-10 -d/|tr '/' '_' \
|sed 's/_$/.pdf/')
if ! [[ ${vystup} =~ .pdf ]]; then
vystup="${vystup}.pdf"
fi
if ! [[ -d ${user_data_dir} ]]; then
echo "první konfigurace user_data_dir"
echo "nainstaluj doplňky a pak zavři prohlížeč"
google-chrome --user-data-dir="${user_data_dir}"
fi
realpath_vystup="$(realpath "./${vystup}")"
rm "${realpath_vystup}"
google-chrome \
--headless \
--print-to-pdf="${realpath_vystup}" \
--run-all-compositor-stages-before-draw \
--disable-gpu \
--user-data-dir="${user_data_dir}" \
"${url}"
if [[ -s ${realpath_vystup} ]]; then
echo "${url} úspěšně vytisknuto do ${realpath_vystup}"
# řádek níže odkomentujte pokud chcete výstup automaticky
# otevřít
# xdg-open "${realpath_vystup}"
else
echo "tisk do pdf selhal"
exit 2
fi
Code language: Bash (bash)
Vysvětlení parametrů:
- headless # otevírá prohlížeč mimo grafické rozhraní
- print-to-pdf # místo zobrazení webové stránky v prohlížeči vytvoří pdf soubor
- run-all-compositor-stages-before-draw # tento přepínač vynutí, aby všechny fáze kompozice byly dokončeny před tím, než se obsah stránky skutečně vykreslí na obrazovce. V tomto případě do pdf.
- disable-gpu # obvykle se doporučuje tento parametr, ale pokud tiskneme do pdf doma na normálním desktopu a máme tedy grafickou kartu, klidně můžeme tento přepínač zakomentovat
- no-pdf-header-footer # tento přepínač umožňuje netisknutí záhlaví a zápatí
- user-data-dir # tento přepínač můžeme zakomentovat, pokud nepotřebujeme se zbavit nějakých prvků na webu, třeba cookie lišty
Praktická ukázka, převedeme články z wplama.cz do pdf
První krok je zjistit url článků z webu, který si chceme stáhnout. Rozhodl jsem se, že uložím články z wplama do pdf, abych jimi nakrmil chatgpt. Url adresy by měly být v sitemapě. A sitemapy jsou v robots.txt. Analýzou těchto souborů jsem se rozhodl použít https://www.wplama.cz/post-sitemap.xml a https://www.wplama.cz/post-sitemap2.xml.
Z těchto sitemap je potřeba vyseparovat adresy jednotlivých příspěvků:
(curl -s https://www.wplama.cz/post-sitemap.xml;
curl -s https://www.wplama.cz/post-sitemap2.xml) \
|grep '<loc>'|tr -d '[:blank:]' \
|sed 's/<loc>//g'|sed 's/<\/loc>//g'
Code language: Bash (bash)
Seznam příspěvků získaných z post-sitemap.xml a post-sitemap2.xml (abych sem nedával vše – je jich mnoho, tak jsem vygrepoval prvních deset obsahujících jak):
seznam článků obsahující jak v url:
https://www.wplama.cz/jak-pridat-na-wp-web-barevny-scrollbar-posuvnik/
https://www.wplama.cz/jak-omezit-redaktorovi-pravo-pridavat-prispevky-pouze-do-urcite-kategorie/
https://www.wplama.cz/jak-automaticky-pridat-vodoznak-do-obrazku-ve-wordpressu/
https://www.wplama.cz/jak-odstranit-shake-effect-efekt-tresu-u-prihlasovani/
https://www.wplama.cz/jak-posilat-z-wordpressu-maily-pres-smtp-server/
https://www.wplama.cz/jak-hromadne-nainstalovat-oblibene-pluginy/
https://www.wplama.cz/jak-zvysit-pocet-fanousku-na-socialnich-sitich-pomoci-popup/
https://www.wplama.cz/jak-umoznit-navstevnikum-menit-sve-wordpress-komentare/
https://www.wplama.cz/jak-u-wordpressu-zapnout-zobrazeni-chyb-wp_debug/
https://www.wplama.cz/jak-nastavit-bezpecnostni-klice-wordpressu-a-k-cemu-slouzi/
Nyní celá smyčka i s konverzí do pdf:
(curl -s https://www.wplama.cz/post-sitemap.xml;
curl -s https://www.wplama.cz/post-sitemap2.xml) \
|grep '<loc>'|tr -d '[:blank:]' \
|sed 's/<loc>//g'|sed 's/<\/loc>//g'\
|while read -r line; do web_to_pdf "${line}"; done
Code language: JavaScript (javascript)
Po chvilce máme úspěšně vytisknuty všechny články do pdf.
Pro účely krmení umělé inteligence daty můžeme články projít, promazat a vytisknout pdf do jednoho souboru. ChatGPT má totiž limit na množství souborů, kterými ho můžeme učit.
Kdo jsem:
IT nadšenec žijící v Kladně, system engineer, sysadmin, správce informačních systémů.
Proč jsem si založil tento web: někdo si píše deníček, někdo hraje hry, mne linux a svobodný software nepouští ani ve volném čase. Takže sem občas hodím nějakou svojí poznámku, která někomu možná pomůže.
Navíc, kdyby někdo potřeboval pomoc, tak mne může díky webu najít.
S čím vám mohu pomoci:
Počítač: Rád Vám pomohu s omlazením vašeho počítače (desktopu, notebooku) nebo sestavím nový.
Server: Chcete mít vlastní webový server, NAS (síťové úložiště), VPN server nebo CLOUD? Provozovat e-shop? I v tom vám mohu pomoci.
Domácí síť: Potřebujete vyřešit domácí síť, nejste spokojeni s rychlostí a kvalitou WiFi? Potřebujete připojit zařízení k VPN?
Počítač pro home office: Potřebujete nutně počítač pro home office, ale nechcete platit moc?
Počítač pro online výuku: Jste učitel nebo žák/student, či máte doma někoho, kdo je? Nemáte na čem pracovat? Pomohu vám to vyřešit.
Mám rád počítače a moderní technologie, Linux, zejména distribuce Ubuntu a Debian, CentOS a Rhel mi také nejsou cizí. Ve své práci se starám o více než 6000 linuxových serverů (Ubuntu, Red Hat Enterprise Linux, CentOS).
V minulosti jsem kromě správy linuxových serverů získal zkušenosti i se správou Windows Serverů a instalací a konfigurací linuxových a windowsových terminálů (například na docházku, nebo pro jídelny).
Jiří Meitner
IČ: 73763004
Fyzická osoba zapsaná v živnostenském rejstříku
podpora@ITisLove.cz
WhatsApp
Karla Tomana 830
Kladno
Středočeský kraj
272 04
Česko
Systémový inženýr, Linux administáror, správce informačních systémů, admin, IT specialista, IT help
Napsat komentář