abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
včera 19:55 | Nová verze

Po dvou letech od vydání verze 3.0 byla vydána nová major verze 4.0 nástrojů LXC, LXD a LXCFS pro kontejnerovou virtualizaci LXC (LinuX Containers). Jedná se o verzi s dlouhodobou podporou (LTS). Ta končí v červnu 2025. Přehled novinek v jednotlivých oznámeních o vydání: LXC, LXD a LXCFS.

Ladislav Hagara | Komentářů: 2
včera 16:11 | Humor

Řada firem své letošní již připravené aprílové žertíky kvůli SARS-CoV-2 a COVID-19 nezveřejnila. Přehled zveřejněných například na April Fools' Day On The Web. Na CoinMarketCapu byla přidána nová kryptoměna: toaleťáky. Ve hře World of Tanks jsou vylepšené tanky, v PUBG nový herní mód Fantasy Battle Royale, …

Ladislav Hagara | Komentářů: 3
včera 15:22 | Zajímavý projekt

Komunity KDE a GNOME, které doposud vyvíjely příslušná desktopová prostředí, se rozhodly přestat tříštit síly a představují společný projekt KNOME, který nabídne konfigurovatelnost GNOME a jednoduchost KDE v jednom balíčku. Staví na technologiích QTK3 a Kutter.

Fluttershy, yay! | Komentářů: 22
včera 14:11 | Nová verze

Tradičně na apríla byla vydána nová stabilní verze OpenTTD (Wikipedie), tj. open source klonu hry Transport Tycoon Deluxe. Přehled novinek v nejnovější verzi 1.10.0 v seznamu změn. Starší verzi OpenTTD lze vyzkoušet také v prohlížeči.

Ladislav Hagara | Komentářů: 0
včera 06:00 | Nová verze

Po čtyřech a půl měsících vývoje od vydání verze 5.3 byla vydána nová verze 5.4 svobodného open source redakčního systému WordPress. Kódové označení Adderley bylo vybráno na počest amerického jazzového trumpetisty Nata Adderleyho.

Ladislav Hagara | Komentářů: 0
31.3. 23:44 | IT novinky

Association for Computing Machinery vzhledem k probíhající pandemii COVID-19 nabízí bezplatný přístup do databáze publikací ACM Digital Library, a to do 30. června 2020.

Fluttershy, yay! | Komentářů: 2
31.3. 23:11 | IT novinky

Humble Bundle nabízí balík her (některých multiplatformních a/nebo bez DRM), knih, komiksů,… za cenu alespoň €28. Akce Humble Conquer COVID-19 Bundle probíhá do 7. dubna. Výtěžek bude věnován humanitárním/charitativním organizacím Lékaři bez hranic, Direct Relief, International Rescue Committee a Partners In Health.

Fluttershy, yay! | Komentářů: 7
31.3. 18:44 | Komunita

Český LibreOffice tým vydává překlad příručky LibreOffice Online. Příručka vznikla překladem anglického originálu, který byl vytvořen v rámci projektu Google Season of Docs 2019. Příručka je ke stažení na českých stránkách LibreOffice. Český tým pokračuje s překladem příručky Začínáme s LibreOffice a hledá další dobrovolníky pro překlad z angličtiny a revize přeloženého textu.

Zdeněk Crhonek | Komentářů: 0
31.3. 17:55 | Nová verze

Theia je nové modulární vývojové prostředí (IDE) určené k běhu jako webová aplikace a modifikovatelné pomocí doplňků kompatibilních s MS Visual Studio Code. Vývoj zaštiťuje Eclipse Foundation. Více v oznámení vydání verze 1.0.

Fluttershy, yay! | Komentářů: 1
31.3. 17:44 | Upozornění

V souvislosti s nedávnými kybernetickými útoky na nemocniční zařízení v České republice nabídl Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) ve spolupráci se sdružením CZ.NIC, správcem české národní domény a provozovatelem Národního bezpečnostního týmu CSIRT.CZ, pomoc klíčovým zdravotnickým subjektům, na které se vztahuje reaktivní opatření NÚKIB.

Ladislav Hagara | Komentářů: 2
Chodíte do práce?
 (12%)
 (0%)
 (6%)
 (0%)
 (61%)
 (21%)
 (0%)
Celkem 33 hlasů
 Komentářů: 2, poslední dnes 00:16
Rozcestník

Šablonování PDF

13.2.2019 23:48 | Přečteno: 1999× | x | Výběrový blog | poslední úprava: 13.2.2019 23:54

Uživatel johnyK si stěžoval, že se tady nevěnujeme dostatečně praktickým problémům, takže jsem se rozhodl popsat jeden praktický problém, který jsem nedávno řešil / řeším.

V kostce: Píšu si reimplementaci ChordPro, protože ChordPro z několika důvodů saje a je pro mě reálně blbě použitelné. V reimplementaci potřebuju renderovat PDFka, podobně jako ChordPro. Resp. výstupem je i HTML a uvažuju o plaintextu, ale to je obojí snadné. Požadavky na generování PDF jsou následující:

Možnosti, které jsem zatím zvažoval nebo vyzkoušel jsou následující.

Slepá ulička č. 1: LaTeX

LaTeX je pro Linuxáka tak trochu default, když dojde na sázení čehokoli. Zpěvník v tomhle není nijak zvláštní. Problém je, že LaTeX moc neumožňuje tu samonosnost. Distribuce pro Windows by asi nebyla úplně snadná, resp. i na Linuxu by mohly být problémy, např. by asi nebylo jasné, jaké balíčky a fonty je možné používat v šabloně, atd. Distribuce LaTeXu jsou taky typicky poměrně velké, mají-li poskytovat dostatek balíčků a fontů.

Slepá ulička č. 2: SVG

Tohle jsem dokonce i naimplementoval a chvíli to i jakžtakž fungovalo. Myšlenka je jednoduchá, šablonovat SVG (stejně jako už šablonuju HTML) a renderovat do PDF. Existuje i vícero rendererů SVG, které přes Cairo umějí výstup do PDF.

Problém s tímhle je, že SVG nemá skoro žádné prostředky pro layout textu. Neumí spočítat bounding box, neumí dokonce ani zalamovat. Na text je SVG úplně tupé. Tj. např. zarovnat správně text a akordy není možné. Na chvíli jsem to nějak obešel tím, že jsem funkci Caira pro bounding box do šablony zpřístupnil, ale výsledkem byla šíleně složitá a hnusná šablona kde ani SVG ani šablonovací jazyk (Jinja2/Tera) už vlastně neplnily pořádně svou funkci.

Další nepříjemnost je, že SVG zřejmě od XML přebralo tu mentalitu překomplikovanosti, kde málokterá reálná implementace skutečně podporuje veškeré fíčury SVG. Knihovny na rendering SVG obvykle podporují jen nějaký subset. Správně SVG implementuje jen inkscape a browsery. Možná.

Slepá ulička č. 3: PostScript

PostScript je fajn v tom, že narozdíl od SVG umožňuje práci s layoutem textu. Má třeba funkce pro bounding box. Blbý je, že špatně podporuje fonty a Unicode. Asi se to dá nějak ohackovat - Cairo to tuším interně umí, ale je to dost opruz. Zajímavostí je, že nepodporuje alphablending. Což by mi v tomho případě asi nevadilo, ale...

Slepá ulička č. 4: XSL-FO

Tohle uvádím jen pro úplnost, do nějakého praktického zkoušení jsem se ani nepouštěl. Ví se tu o mě, že svět Javy a XML nemám moc rád celkově, a pak svobodná implementace XSL-FO - Apache FOP - je poměrně omezená, podporuje jen nějaký starý subset XSL-FO. Myslím, že nepodporuje to, co potřebuju. Už jsem se to skoro chystal zjišťovat nějak konkrétněji, ale pak jsem někde četl nějaké instrukce ke konfiguraci, kde radili něco upravit na řádce ~790 konfiguračního XML. V té chvíli se mi udělalo nedobře a řekl jsem si, že takové věci nemám zapotřebí.

Kromě Apache FOP existují i všelijaké komerční implementace (Prince, ...), které asi umí všelijaké věci, nicméně ať si to strčej za klobouk. Nejsem korporát a píšu foss prográmek.

Slepá ulička č. 4: HTML + CSS

Opět jen pro úplnost. Existuje jednak wkhtmltopdf a také by se asi dal použít browser (který má každý tak jako tak nainstalovaný) pro "tisknutí" HTML stránky do PDF. Nicméně podle zběžných pokusů ty výsledky prostě nejsou dobré. Hlavně s determinističností stránkování je problém. CSS pro tyhle věci snad i už má jakousi podporu, ale prohlížeče to pořádně neimplementují a celkově to nestojí za nic.

Řešení, víceméně: Lua

Nakonec jsem se rozhodl zkusit zabudovat interpret jazyka Lua a navázat to na Cairo. Pokus to byl vydařený, embedding Lua je notoricky snadný a s bindingem rlua to šlo úplně samo, např. umožňuje zajistit automaticky typovou kontrolu, takže člověk mu akorát předhodí celkem normální silně typovanou funkci a on to zpřístupní do Lua. Tj. Hello World PDF jsem měl za chviličku. Pak jsem ještě napsal pár bindingů pro zpřístupnění funkcí Caira a ChordPro dat. Není to ještě úplně hotové, ale vypadá to docela použitelně.

Tj. 'šablonou' je Lua skript kreslící pomocí Caira. Což není ideální a není to úplně to, co si člověk představí pod pojmem 'šablona', nicméně skript mi přijde celkem čitelný a srozumitelný, určitě je to výrazně lepší než předtím ta šablona smíchaná ze SVG, Jinja2 syntaxe a vlastních funkcí. A je to bez externích dependencí.

Takže takový je zatím můj aktuální stupeň poznání v téhle věci. Pokud by někdo měl nějaký užitečný tip nebo věděl o nějaké snazší / lepší cestě, uvítám to.

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

Josef Kufner avatar 14.2.2019 03:07 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Šablonování PDF
Kdysi jsem si trochu hrál s LaTeXem a s Twig. Výsledkem je toto: github.com/jkufner/lyx-on-twig.

Myslím, že použití LuaLaTeXu na předávání dat by bylo ještě lepší, ale tohle funguje docela dobře. Ve wysiwym editoru (LyX) si vyrobíš šablonu s kousky Twig konstrukcí, nacpeš do ní cokoliv potřebuješ a pak to buildneš jako běžný LaTeX dokument. Dokonce i nevyplněná šablona je validní LaTeX, takže náhled bez dat dává většinou smysl.
Hello world ! Segmentation fault (core dumped)
14.2.2019 06:46 alfonz
Rozbalit Rozbalit vše Re: Šablonování PDF
Pro Pripravto jsme v jednu dobu používali rsttopdf či Latex/pdftex a pak také svg do PDF. No co k tomu dodat > byla to dost špatná zkušenost. Nakonec jsme skončili u přímo HTML a SVG (někdy generované přes RST) a to vcelku funguje, Někdy je potřeba si trochu pohrát s CSS. Zkoušeli jsme používat i reportlab a to bylo trochu lepší, ale vcelku komplikované. Používat přímo Cario, je asi docela v pohodě -> kreslí pěkně, akorát nevím jak to bude s udržitelností?
14.2.2019 07:50 Filip Jirsák | skóre: 67 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Šablonování PDF
K tomu Apache FOPu jste asi četl něco starého. FOP byl v první implementaci těžkopádný na konfiguraci a projekt pak na několik let usnul. Ale před pár lety se znovu probudil, vyvíjí se a zrovna na té konfiguraci se hodně zapracovalo – dnes stačí FOP rozbalit nebo přidat do závislostí a spustit a vše funguje. Používám FOP na různé věci a nikdy jsem nenarazil na to, že bych měl vážný problém s tím, co v něm není implementováno.
14.2.2019 09:02 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Šablonování PDF
Aha, ok. A umělo by to to potřebné zarovnání akordů a textu? Tzn. v HTML se tohle řeší typicky tabulkou, kde se akordy dají do jednoho řádku a text do druhého a ono to samo spočte potřebné velikosti políček.

Já bych se asi stejně radši té závislosti na Javě vyhnul, ale i tak je dobré to vědět, díky.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
14.2.2019 18:47 Filip Jirsák | skóre: 67 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Šablonování PDF
Automatickou šířku sloupců tabulky Apache FOP neumí, to máte pravdu. Já tohle nikdy nepoužívám, ani v HTML nebo jiných tabulkách, protože to vždycky dopadne špatně. Tabulky v layoutu se přeceňují… Ten univerzální automat prostě nemůže uhodnout, jak tu tabulku zformátovat hezky. I v HTML bych akordy dělal spíš pomocí textu, tam stačí jednoduchý styl
.chord {
  display: inline-block;
  position: relative;
  top: -1em;
  width: 0px;
}
Ale z hlavy nevím, zda jde to samé udělat i v XSL-FO.

Píšete, že výstupem je i HTML – pak mi připadá nejjednodušší použít headless režim Chrome, ve kterém jde tisknout do PDF – Chrome umí z příkazové řádky pořídit screenshot nebo PDF. Podpora CSS v prohlížečích se v posledních letech rapidně zlepšila a pro stránkování podle mne nepotřebujete nic moc extra, a základní podporu prohlížeče mají.

Pokud si ale chcete pohrát s tím, aby výstup vypadal přesně tak, jak chcete, a má to být to podstatné na vaší aplikaci, je nejlepší si to vykreslovat sám, pak máte všechno v ruce. Ale samozřejmě je to pracnější.
14.2.2019 22:46 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Šablonování PDF
I v HTML bych akordy dělal spíš pomocí textu, tam stačí jednoduchý styl
.chord {
  display: inline-block;
  position: relative;
  top: -1em;
  width: 0px;
}
No, on by neměl mít nulovou šířku - v případě, že je širší než k němu vázaný text, měly by dohromady mít šířku akordu, aby se nepřekrýval s následujícím. Ale jinak ano, principielně souhlasim. Já ty tabulky použil jako rychlý hack, o kterém jsem věděl, že bude fungovat a dávat celkem správné výsledky, ale dobudoucna bych to mohl nahradit nečím pěknějším v CSS třeba...

Píšete, že výstupem je i HTML – pak mi připadá nejjednodušší použít headless režim Chrome, ve kterém jde tisknout do PDF – Chrome umí z příkazové řádky pořídit screenshot nebo PDF. Podpora CSS v prohlížečích se v posledních letech rapidně zlepšila a pro stránkování podle mne nepotřebujete nic moc extra, a základní podporu prohlížeče mají.
Já se touhle možností zabýval, ale zkoušel jsem myslím jen Firefox, ve kterém ta podpora není nic až tak dobrá (viz třeba tady). Nelezly mi z toho dobrý výsledky. Nicméně v Chromu to vypadá lépe, alespoň podle toho, co píšou na internetech.
Pokud si ale chcete pohrát s tím, aby výstup vypadal přesně tak, jak chcete, a má to být to podstatné na vaší aplikaci, je nejlepší si to vykreslovat sám, pak máte všechno v ruce. Ale samozřejmě je to pracnější.
Ono se to koneckonců nevylučuje a v zásadě by nebyl problém nechat uživatele vybrat, jestli chce jen HTML, které může s možností tisku počítat, nebo jestli chce i PDF + větší kontrolu. Dát do konfigurace možnost třeba spustit nad výstupním souborem nějaký příkaz nebude složité.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
Josef Kufner avatar 15.2.2019 10:54 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Šablonování PDF
Ta nulová šířka je kvůli tomu, aby ti to nevyrobilo mezeru mezi písmenkama v textu. Akord samotný přeteče ven a bude vidět normálně široký, jak je třeba.
Hello world ! Segmentation fault (core dumped)
15.2.2019 12:11 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Šablonování PDF
Přílohy:
Nerozumíme si. Jde mi o následující situaci (v syntaxi ChordPro):
tam [G]písnič[C]ku někdo [G]pí[C]s[D]ká.
Ten akord C (předposlední na řádku) je textově širší než ten jeden znak, ke kterýmu se váže ("s"). Z toho důvodu přeteče do následujícího akordu (D) a překryje se s ním. Viz přiložené snímky, ten správný je pomocí tabulky, ten druhý s tím CSS výše. Kdyby ten C akord byl ještě navíc třeba Cmi7 nebo něco takového, bylo by to ještě horší.

Další věc je, že je potřeba za tím akordem zajistit nějakou minimální mezeru (třeba pár pixlíků), aby nebyly těsně na sebe. V tom 'správném' snímku je ta mezera skoro až moc velká.

Neříkám, že se to nedá pomocí CSS vyřešit, určitě jo, jen to není tak jednoduché.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
Josef Kufner avatar 15.2.2019 12:45 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Šablonování PDF
Pokud dáš do spanu to, nad čím akord platí, tak to nastavením minimálních šířek uděláš snadno. Tedy DOM bude muset vypadat nějak takto (span je {}):
{tam }{[G]písnič}{[C]ku někdo} {[G]pí}{[C]s}{[D]ká.}
Hello world ! Segmentation fault (core dumped)
15.2.2019 15:42 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Šablonování PDF
nastavením minimálních šířek uděláš snadno
Nastavením minimálních šířek na co? Ta šířka je pokáždé jiná.

Další problém je, že když jsou takovéhle dva řádky pod sebou, tak akordy z toho spodního překrývají ten vrchní.

Já bych na to šel asi přes flexbox, ale nechce se mi teď s tím dělat...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
Josef Kufner avatar 15.2.2019 16:45 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Šablonování PDF
Nastavíš min-width spanu s textem na šířku akordu a akordy se ti nebudou překrývat. Pokud bude text delší, span se roztáhne.

Pokud akordy překrývají předchozí řádek, buď nastav line-height tak, aby se akord vešel.

S flexboxem to bude spolehlivější vůbec lepší, ale pointa je stejná.
Hello world ! Segmentation fault (core dumped)
15.2.2019 16:52 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Šablonování PDF
Nastavíš min-width spanu s textem na šířku akordu a akordy se ti nebudou překrývat.
Šířku akordu neznám. To je právě to, co chci po tom layoutu - aby si ji spočítal a uplatnil sám.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
Josef Kufner avatar 15.2.2019 16:56 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Šablonování PDF
Tak to máš smůlu a budeš to muset celé přeskládat do flexbox layoutu a v podstatě z toho udělat tu tabulku.
Hello world ! Segmentation fault (core dumped)
15.2.2019 20:06 Filip Jirsák | skóre: 67 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Šablonování PDF
Pokud chcete automatické zalamování řádků, řeší to line-height, pokud chcete řádky zalamovat ručně, řešil by to i margin-top.

Jak má být vlastně graficky správně vysázeno to, když jsou akordy delší než text? Pouze s mezerami, jak je to na obrázku nahoře, je to podle mne špatně – mohou tím vzniknout jiná slova, a když ne, stejně se to špatně čte. Podle mne by to mělo být spojené buď alespoň pomlčkou, nebo lépe vodorovnou čárou vyplňující celou tu mezeru. Je na to nějaký úzus, jak se to dělá správně? Použít by na to šel asi flexbox, ten by na rozdíl od tabulky uměl i to automatické zalamování řádků. Řadit horizontálně úseky „od akordu k akordu“ a ten úsek pak rozdělit na horní polovinu pro akord a dolní pro text. Pomocí pozadí by se tam asi dala udělat i ta horizontální čára spojující části slov.

Ale pokud si s tím chcete pohrát, aby to vypadalo hezky, asi opravdu pomůže jen naprogramovat si vlastní vykreslovač – pochybuju, že nějaký z obecných vykreslovačů půjde znásilnit k tomu, aby tohle vykresloval hezky i ve všech okrajových případech. A psaní takového vykreslovače je určitě zábava :-)
15.2.2019 21:31 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Šablonování PDF
Jak má být vlastně graficky správně vysázeno to, když jsou akordy delší než text? (...) Je na to nějaký úzus, jak se to dělá správně?
Popravdě úplně nevim. Asi na to obecný úzus není. Tady jsou tři [1, 2, 3] příklady, jak to řeší jinde. Ten první se mi nelíbí, ty ostatní jsou meh. Ten třetí je taky s mezerou a to samý dělá i ChordPro.

Ta vodorovná čára by mi asi osobně vyvhovovala nejvíc, možná by mohla být např. světlejší barvou nebo dotted nebo tak něco. Jen nevim, jestli by to šlo udělat v HTML. Možná by to mohl být element s výškou 0.5em, vertikálně zarovnaný dole, ~100% šířkou a border-top.
Ale pokud si s tím chcete pohrát, aby to vypadalo hezky, asi opravdu pomůže jen naprogramovat si vlastní vykreslovač – pochybuju, že nějaký z obecných vykreslovačů půjde znásilnit k tomu, aby tohle vykresloval hezky i ve všech okrajových případech. A psaní takového vykreslovače je určitě zábava :-)
jj to každopádně, a s použitím Lua je na tom navíc fajn, že to není hardcoded...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
15.2.2019 22:06 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Šablonování PDF
Resp. ne 100% šířka, ale auto nebo jak se to dělá...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
16.2.2019 09:14 Filip Jirsák | skóre: 67 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Šablonování PDF
Vodorovná čára by se v HTML nejsnáze udělala obrázkem na pozadí, text před ní by měl bílé pozadí, aby ji překryl. Kdyby se mělo použít ohraničení, musel by tam být vložený další element a asi zase pomocí flexboxu by musel vyplňovat zbývající místo.

Jinak v HTML by bylo nejsnazší použít ruby element, který je přesně pro anotace v textu určený, jenže jeho speciální styly podporuje jenom Firefox. Viz codepen.io/anon/pen/JxeNEL.
Josef Kufner avatar 16.2.2019 12:35 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Šablonování PDF
Můžeš nastylovat :after a/nebo :before. Přidat nějaký ten border a ujistit se, že při nulové šířce nebude vidět.
Hello world ! Segmentation fault (core dumped)
14.2.2019 08:01 Joe
Rozbalit Rozbalit vše Re: Šablonování PDF
Songs LaTeX Package nestačí? Osobně občas sáhnu přímo do songs.sty, když si chci přidat nějakou nestandardní věc - pochopitelně jen úpravou již existujícího \beginverse nebo změnou metrik.
14.2.2019 13:09 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Šablonování PDF
No, v zásadě ano, ale je to otázka komfortu a user-friendliness.

Tenhle progámek za mě např. řeší pospojování více souborů aniž bych to musel nějak explicitně řešit, dále umí např. transpozice nebo konverze notace (německá ↔ západní ↔ nashville), příp. experimentuju i s vysázením dvou sad akordů, kde např. jedna je bežná a druhá je auto-konverze do nashville pro snadnou transpozici apod. Ten LaTeXový formát je složitější než ChordPro a mně popravdě už to ChordPro přijde skoro zbytečně složité, chystám se zkusit použít na to Markdown s nějakými velmi drobnými rozšířeními (v podstatě potřebuju akorát značky pro tóninu, notaci a transpozici, jinak Markdown vlastně všechno má).

Další věc je, že o to vyjádřili zájem někteří příbuzní a kamarádi, kteří používají Windows a nejsou prorgamátoři (ačkoli jinak jsou počítačově gramotní) - v takovém případě je ideální, když jim můžu poskytnout standalone binárku.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
mirec avatar 14.2.2019 10:32 mirec | skóre: 31 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Šablonování PDF

Ja na generovanie PDF momentálne používam z3c.rml. Nevyžaduje to cairo, X-ka, webkit ani nič podobné, je to čisté python riešenie bez nejakých hrozných závislostí. Zdrojové xml-ka nie sú až také škaredé.

LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
14.2.2019 13:00 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Šablonování PDF
To je zajímavé, díky.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
14.2.2019 12:32 Rezervní Polská Kotace
Rozbalit Rozbalit vše Re: Šablonování PDF
...

Ale ted vážně, kde je zdroják? Nebo jsem to přehlédl? Každopádně dík za článek.

Osobně bych šel spíš cestou TeXu (tip: jsou i jiné varianty než plain a La - třeba právě Lua), ale souhlasím, že je to velký balík a jako součást malého programu to nní ono. Tam je asi Cairo správná volba.
14.2.2019 13:00 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Šablonování PDF
Ale ted vážně, kde je zdroják?
Ještě není. Měl by být (např. podle doporučení Pietera Hintjense, že ano), ale zkrátka ještě není...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
14.2.2019 19:59 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
Rozbalit Rozbalit vše Re: Šablonování PDF
Je to sice phpčko (které ale v případě distribuovatelnosti pro windows je pár exáčů/dllek, netřeba instalovat), ale zkušenosti s tím mám dobré - mpdf.

Varianta je to HTML+CSS.

Stránkování má nějak vyřešené.

Muselo by se to ale zkusit.

Když mi zabalíš nějaký CSS+HTML export, klidně to tím zkusím prohnat.
Baník pyčo!
14.2.2019 21:36 retro
Rozbalit Rozbalit vše Re: Šablonování PDF
je dobré vzpomenout u mpdf https://github.com/mpdf/mpdf/blob/development/LICENSE.txt což se nemusí úplně na všechno hodit
14.2.2019 22:10 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
Rozbalit Rozbalit vše Re: Šablonování PDF
Jako jo, to je fakt. Na druhou stranu, pokud si z mpdf udělá nějaký tool ve smyslu
convert.php -i file.html -o file.pdf
a ten licencuje jako GPL2 (a z podstaty věci dodá i se zdrojáky),

program který ten convert.php bude execovat klidně může být pod jinou licencí.
Baník pyčo!
15.2.2019 08:16 PetrHL | skóre: 17 | blog: petr_h | Neratovice
Rozbalit Rozbalit vše Re: Šablonování PDF
HTML + CSS bych nezatracoval. Na generování PDF bych použil headless Chrome. Wkhtmltopdf je fajn, ale na každém systému web vypadá jinak. Díky Chrome nebudete mít problém s podporou CSS.
"Do, or do not. There is no 'try.'" -- Jedi Master Yoda | CQRLOG | CQRPROP | HamQTH | Domů
15.2.2019 09:55 j.
Rozbalit Rozbalit vše Re: Šablonování PDF
Já noty sázím zásadně v lilypondu a z hlediska výstupu je to ideální nástroj. Z hlediska vstupu ... no je to latex, co si budeme povídat
15.2.2019 10:08 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Šablonování PDF
To je ale něco jinýho, to jsou noty. Na to bych taky použil Lilypond. Myslimže na to existují i nějaký GUI, ale nevim, jak moc jsou dobrý...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
15.2.2019 11:19 dumblob | skóre: 10 | blog: dumblog
Rozbalit Rozbalit vše Re: Šablonování PDF
Lilipond bylo první co mě napadlo. Samozřejmě i bez not Lilipond:

Lilypond: Is there a way to create a song with just lyrics and chords? Without the notes
15.2.2019 12:19 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Šablonování PDF
Hmm, pro běžné použití je ta notace těžkopádná (zkoušel jsem to už dřív), ale používat Lilypond jako backend by možná nemuselo vůbec být marný, pokud se dá nějak samonosně 'vzít s sebou'. A jako bonus to má vestavěnou databázi diagramů.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
15.2.2019 15:06 dumblob | skóre: 10 | blog: dumblog
Rozbalit Rozbalit vše Re: Šablonování PDF
Vzít s sebou určitě nějak jde, protože jsem se o něm dozvěděl před mnoha lety od známého, který je muzikant z povolání a vůbec nemá technické vzdělání, ani IT ho nezajímá, v "počítačích" se téměř nevyzná a tenkrát používal Windows (a dnes určitě taktéž Windows).

Sám mi tenkrát řekl, že je ta notace pro něho jednodušší než se trápit s grafickými a drahými programy (které tehdá zkoušel), které si dělají co chtějí, nepodporují vše co je potřeba a výsledky jsou stejně nic moc. Myslím, že Lilipond uměl snad i transponovat či ty zápisy šly i přehrát přes MIDI atd.

Jinak pokud jde pouze o částečnou modularitu, tak já používám např. Pandoc s jeho minimalistickou LaTeX šablonou a přes parametry pandocu předávám dodatečné "moduly" (texťáky s běžným LaTeXem), které mi poskytujou dodatečnou funkcionalitu. Pro dokumentace jsem vytvořil a používám např. tyto "moduly":
tex_deeply_nested_lists.include
tex_external_link_symbol.include
tex_fix_figure_position.include
tex_header_settings.include
tex_table_alternating_color.include
tex_verbatim_bgcolor.include
Tím lehce rozšiřuji či zužuji potřebnou funkcionalitu v závislosti na projektu.

Pokud LaTeX backend, tak jedině na této hodně "vysoké úrovni" zapínání a vypínání takovýchto "modulů" (tzn. žádné "generování LaTeXu").

Jinak, a teď prosím no flame, LaTeX nemám vůbec v oblibě (i to psaní matematiky jde v mnohých jiných notacích lépe) a preferuji téměř jakýkoliv jiný nástroj (především grafické, nevyžadující psaní značek).
15.2.2019 15:20 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Šablonování PDF
Myslím, že Lilipond uměl snad i transponovat či ty zápisy šly i přehrát přes MIDI atd.
Transponovat umí určitě, ale třeba Nashville notaci AFAIK neumí (ačkoli by se to asi dalo dohackovat v Guile).
Pokud LaTeX backend, tak jedině na této hodně "vysoké úrovni" zapínání a vypínání takovýchto "modulů" (tzn. žádné "generování LaTeXu").
Tomu asi nerozumím. Jak bych třeba použil Lilypond aniž bych generoval .ly tak nebo onak?
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
15.2.2019 19:44 dumblob | skóre: 10 | blog: dumblog
Rozbalit Rozbalit vše Re: Šablonování PDF
Tomu asi nerozumím. Jak bych třeba použil Lilypond aniž bych generoval .ly tak nebo onak?
Vyjádřil jsem se nepřesně. Samozřejmě obsah samotný bude nutné generovat. Avšak parametrizaci obsahu bych rozhodně nechtěl generovat jako součást obsahu, nýbrž pouze jako zapínání či vypínání "modulů" (např. obdobně jako jsem uvedl v případě pandocu).
Fluttershy, yay! avatar 15.2.2019 23:31 Fluttershy, yay! | skóre: 86 | blog:
Rozbalit Rozbalit vše Re: Šablonování PDF
Lout je hodně zajímavý jazyk. Sice jde v podstatě o one-man show s hodně pomalým vývojem, ale je to škoda.
✊ The old world is dying, and the new world struggles to be born. Now is the time of monsters. ✊
17.2.2019 21:09 r
Rozbalit Rozbalit vše Re: Šablonování PDF
Nestačil by plainTeX?
\obeylines
\lineskip=10pt
\font\chordfont=cmr7
\font\rm=cmr12

\catcode`[=13
\def[#1]#2{{\raise1em\if#2>\hbox{\chordfont #1\hss}\else\hbox to0pt{\chordfont #1\hss}#2\fi}}

tam [G]písnič[C]ku někdo [G]pí[C]>s[D]ká
tam [G]pí[C]sničku někdo [G]pí[Cmi7]>s[D]ká
\bye

24.2.2019 20:43 radek
Rozbalit Rozbalit vše Re: Šablonování PDF
Trochu out of date, ale přesto zkusím. Nevíte někdo o nějakém zpěvníku, v textové podobě ve formátu jako má ChordPro, případně jiném podobném, který se nechá pár reg. výrazy do té podoby upravit? Chtěl bych pořádně vyzkoušet svůj výtvor v palainTeXu. Jinak díky za inspirativní blog.
25.2.2019 16:17 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Šablonování PDF
Asi bohužel nemam nic, co by se dalo okamžitě použít, sorry. Mam tu pár testovacích chordpro souborů, ale asi jsou copyrightované. Chtěl bych si sestavit nějaký malý demo zpěvníček z public domain věcí, ale ještě jsem to neudělal. Všechno mi to jde taknějak pomalu.

Pokud ti jde jen o ty značky akordů v textu, tak je to celkem v pohodě a nejspíš to vytáhneš z nějakého online zpěvníku [1, 2].

Ale jinak mi ten ChordPro nepřijde jako moc dobře navrženej formát, cokoli na rámec holého plaintextu v tom není podporováno nebo nešikovně (třeba označování slok a refrénu, konverze notace, transpozice). Takže mám teď rozepsanou podporu pro subset markdownu, aby to bylo snáz použitelnější a míň alien.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
25.2.2019 22:45 radek
Rozbalit Rozbalit vše Re: Šablonování PDF
Příloha:
Mě to v prvé řadě přišlo zajímavé programátorsky. V TeXu se dá zjistit délka textu pod akordem a s tím pak pracovat při formátování textu. Jinak kromě formátu ChordPro, který beru jako kostru formátu, mohu v textu používat makra TeXu. Testoval jsem na krátkém zkušebním textu:
\nadpis{Pískající cikán}
\interpret{Spirituál kvintet}

[G]Dívka [Ami]loudá se [G]vin[Ami]icí, [G]Tam, kde [Ami]zídka je [Hmi]níz[Ami]ká
[G]tam, kde [Ami]stráň končí [Hmi]voní[C]cí, si [G]písnič[C]ku někdo [G]pí[C]sk[D]á.

\nadpis{Be happy!}

[Cmi] [Dmi] [F] [C]
[Cmi7]H[C]ere's a little song I wrote
[Dmi]You might want to sing it note for note
Don't [F]worry be [C]happy

Dont worry be happy now
|:Dont worry be happy:| 4x
a vylezl mi z toho přiložený soubor. Myslím, že to nevypadá zle, v porovnání s tím, co jsem po krátkém hledání našel na internetu.
25.2.2019 23:39 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Šablonování PDF
Přílohy:
Hezký to máš.

Hodil jsem do chordpro Whiskey in the Jar (to by snad neměl být copyright problém), viz příloha.

Já si ten ChordPro dost ohackoval, že např. sám dělá sloky po dvojitém odřádkování apod. a přidal jsem transpozici + možnost mít dvoje akordy, viz ukázky.

Většinou používám sans-serif, přijde mi, že v horším osvětlení (táborák, ...) se to líp čte, ale zas ten serifovej font vypadá taknějak víc seriózně :-D Ale to je asi detail...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
25.2.2019 23:42 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Šablonování PDF
PS. tohle je ještě renderovaný ještě s tím SVG coby mezikrokem, před přechodem na Lua, to ještě nemam dodělaný.
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
25.2.2019 23:45 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Šablonování PDF
PPS. Koukám, že se mi tam dostala řádka navíc pod tím refrénem, tak si to kdyžtak odmaž :)
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.