Ja som pracoval na webové stránky, ktoré potrebuje na vývoz obsahu webovej stránky vo formáte pdf, ale musí dodržiavať tieto podmienky:
- Na pozadí má byť plne vytlačené na každej strane
- Obsah nesmie prekrývať pozadí
Keďže sa webová stránka používa PHP snažil som sa využiť mPDF, ktoré som predtým používali v inom PHP web, ktorý mal rovnaké podmienky. mPDF ukázalo, že celé pozadie na každej strane pdf súboru, a to aj keď bola stránka nie úplne naplnený obsah a mohol by som nastavte okraje, ktoré ovplyvnili obsah, ale nie pozadí, ktoré sa stále vzťahuje na celú stránku.
Bohužiaľ, mPDF, nie je práca s tento nový web, veľmi pravdepodobne preto, že používajú zavádzaˇ a flex layouty (to vrátil mi pdf s asi tisíc stránok, väčšinou prázdne, iné s veľmi zväčšenej časti stránky), na vrchole sa, že časť obsahu je zmeniť javascript pred predložením používateľa, ktoré nebrali do úvahy, mPDF (všimol som si, že keď som odstránené bootstrap.css, ktorý mi umožnil vidieť výsledok konverzie).
Tak som prešiel na puppeteer https://github.com/puppeteer/puppeteer čo vypíše obsah v pohode pomocou prehliadača chrome pod kapotou, ale mám nejaké otázky.
Prvý problém bol, že som nemohol tlačiť celé pozadie na každej stránke, ale ja som na to prišla počas písania tejto otázke vytvorením div s position: fixed
a width
a height
na 100%
že funguje ako pozadie
Druhý problém je, že keď som nastaviť okraje v puppeteer (ktoré na konci sú rovnaké ako tlač rezervy v chrome) majú vplyv na pozadí príliš (to bol problém aj predtým, než sme vytvorili pevné div), takže nemôžem nájsť spôsob, ako mať text neprekrývajú pozadí
Tu môžete vidieť príklad: https://stackblitz.com/edit/web-platform-vlfqfz?file=index.html
Ak otvoríte ukážka v inej karty a pokúsiť tlačiť ho vidíte problém som stojí