Autor Zpráva
Lukáš66666
Profil
Zdravím, potřeboval bych pomocí mPDF převést stránku na pdf soubor, ale mám problém s pozicováním.

Mám jen jednoduchý dokument složený ze tří prvků (obrazek div a další obrázek).

<img 1>
<div>text
<img 2>

Můj problém je v tom že je potřebuji na stránku rozložit tak že bude nahoře <img 1> uprostřed <div> a úplně dole na okraji stránky <img 2>, ale nejde mi vyřešit jak zadat tu pozici poslednímu obrázku. Zkoušel jsem position: absolute, ale nějak to nereaguje.

PS: ten první obrázek zabere skoro půl stránky, takže div je v tom středu kde ho potřebuji, ale pod ten div se mi nalepí ten durhý obrázek a pod ním zbude celkem velká mezera a to je to čeho se chci zbavit.
anonymníí
Profil *
Lukáš66666:
Nevím, jak nyní, ale dříve mpdf měl s pozicováním trochu problémy. Něco uměl, ale ne úplně dokonale. Jak vidno, asi se nikam neposunul.

Řešením bude asi vytvořit si jeden obrázek, který bude obsahovat jak img1, tak img2 a bude mít výšku výsledného dokumentu (tedy asi A4, 297x210mm). Ten nastavíš na pozadí. a div bude mít horní padding přes tu zhruba půl stránku, tedy na výšku img1.
Lukáš66666
Profil
anonymníí:
Co znamená trochu problémy? Nepodařilo se mi totiž použít žádnou vlastnost position a to mi přijde jako hodně velké problémy :( .
Toto je pouze první stránka a na další je asi 100 objektů kterým je potřeba zadat různé pozice.
anonymníí
Profil *
Lukáš66666:
Co znamená trochu problémy? Nepodařilo se mi totiž použít žádnou vlastnost position a to mi přijde jako hodně velké problémy :( .
Už si nepamatuji přesně, ale pozicování myslím fungovalo, částečně.

Přímo ze stránky mpdf, mpdf1.com/manual/index.php?tid=34:
Pro všechny blokové prvky, vč. div, p, nadpisy, a další jsou platné hodnoty position: absolute; a position: fixed;
Kcko
Profil
Lukáš66666:
www.mpdf1.com/mpdf/index.php?page=Limitations + prohlédni si examply a pak si případně zagoogluj.
Lukáš66666
Profil
Tak jsem dospěl k závěru že je to pěkně na nic. Četl jsem články jak je to snadné tím převádět html dokumenty na pdf ale nezdá se mi.
Vytvořil jsem jednoduchou stránku kde je text a dole patička o výšce 2 cm a vypadalo to dobře dokud jsem do patičky nepřidal text potom se vytvořila nová stránka na které nic nebylo a když jsem se pokusil patičku umístit výš aby se nová stránka nevytvořila tak ta patička webu zůstala pořád nalepená na spodní straně a jakoby se natahovala takže od horní strany patičky byla určitá mezera ale ta mezera v patičce pod textem se jen protahovala a pustila se teprve až jsem dosáhl zhruba 3/4 stránky.
Kcko
Profil
Lukáš66666:
Stáhni si MPDF a podívej se na examply, MPDF je normálně funkční, já s ním pracuji X let a krom toho, že s ním nemůžeš dělat vyloženě psí kusy (viz zmíněné pozicování ) funguje normálně; děláš něco špatně.
Lukáš66666
Profil
Kcko:
No a nevěděl bys jak nastavit patičku ke stránce?
Snažím se docílit toho aby dole pod stránkou uplně na spodním okraji byl proužek o výšce 20mm a v něm text, ale když to tam vložím takto:
$mpdf->SetHTMLFooter('kod proužku');
tak je ještě pod patičkou mezera.

Ukázka
Kcko
Profil
Musíš si vynulovat spodní margin (okraj) stránky. Je to jeden z parametrů při volaní new mpdf() ...
Lukáš66666
Profil
Kcko:
Ale to jsem si našel tu informaci a všechny margin vlastnosti jsem nastavil na 0 a normálně když dam div o velikosti stránky tak obsahne celou plochu ale když dám tu patičku tak ta se spodního okraje vůbec nedotkne ani hlavička přes SetHTMLHeader(), ale pokud tam vložím text tak je hned nahoře.
Kcko
Profil
Lukáš66666:
Tohle chceš? Nalepenou patičku na okraj? (Patička má červený border).

$mpdf=new mPDF('utf-8','A4','','',0,0,0,0,0,0, 'P'); // nulovat všechno je blbost, jeden z parametrů je ten na spodní okraj, nechce se mi ted hledat v dokumentaci, proto je to vynulováno vše.

takhle zapisuju patičku
    $hhtml = '<htmlpagefooter name="myHTMLFooterOdd" style="display:none">
    <div style="background-color:#eaeaea; border: 1px solid red; height: 50px;" align="center">Strana {PAGENO} / 2</div>
    </htmlpagefooter>
    <sethtmlpagefooter name="myHTMLFooterOdd" page="O" value="on" show-this-page="1" />
    ';

    $mpdf->WriteHTML($hhtml);

a pak tam mám ještě vlastní CSS a další HTML co tvoří obsah, ale to je už nepodstatné.

    $mpdf->WriteHTML($css, 1);
    $mpdf->WriteHTML($content, 2);
Lukáš66666
Profil
Kcko:
Přesně! Nalepit patičku na okraj. Zkoušel jsem to udělat tak že pro stránku mám určite rozměry v mm a tak jsem vytvořil 2 prvky <div> a přesně je rozložil tak aby to odpovídalo a fungovalo to. Ale když jsem do té patičky zadal text tak sice její výška zůstala stejná ale vytvořila se další stránka kde nic nebylo a zbytek pokračoval až po té prázdné stránce. A pak mě dostalo to že nešla ta patička oddálit od okraje i když jsem snížil výšku předchozího <div>u. Zítra se na to podívám a snad to pomůže.
A ještě jedna věc mě zarazila když jsem do hlavičky vložené přes $mpdf->SetHTMLFooter('kod proužku'); vložil obrázek tak se nezobrazil, ale pokud jsem ten kód voložil normálně do kódu html, tak se tam zobrazil bez problému.
Lukáš66666
Profil
Kcko:
Díky za radu. Už jsem dosáhl výsledku, který jsem potřeboval. Patička je tam kde ji potřebuji a text také :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: