Autor Zpráva
Milan1236000
Profil
Zdravím, našel jsem několik PHP knihoven, které umějí vytvářet PDF: mPDF, TCPDF, FPDF, dompdf, ...

Zkoušel jsem ale zatím jen dvě. Nejdřív jsem zkoušel mPDF, ale v PDF se na stránce zobrazovalo špatné rozložení obsahu a pár věcí mi tam vadilo, tak jsem se rozhodl vyzkoušet TCPDF, ale u něj mi zase nevyhovuje ten způsob, že musím odkazovat na samostatný php soubor (pokud kod generující PDF mám ve stejném php souboru, který generuje HTML soubor, zobrazuje se: TCPDF ERROR: Some data has already been output, can't send PDF file), který se po otevření přetvoří na PDF, taky mi vůbec nevyhovuje způsob vytváření záhlaví a zápatí (u mPDF to šlo psát html tagy, ale tady ne).

Přemýšlím, že se opět vrátím k mPDF a budu si s tím muset trochu pohrát, ale z nějakého důvodu se po každém načtení stránky, kde se generuje PDF zobrazí tisíce chyb, celý obsah stránky se ale načte a i vygenerovaný PDF soubor je plně funkční. Co to má být?

Neznáte podobný snadno manipulovatelný generátor PDF jako je mPDF?
Taps
Profil
O jake chyby se jedna?
Milan1236000
Profil
Taps:
Tento kód mi generuje PDF, zatím v něm jen věci zkouším, takže asi není všechno správně napsané, kdyžtak napište, co jde napsat líp, hlavně ty rozměry stránky a nastavení okrajů:
      include 'mPDF_5.7/mpdf.php';
      $mpdf=new mPDF("utf-8");
      $mpdf->AddPage('', '', '', '', '',
        15, // margin_left
        15, // margin right
       15, // margin top
       10, // margin bottom
        10, // margin header
        5); // margin footer*/
      $mpdf = new mPDF('','', 0, '', 15, 15, 16, 16, 9, 9, 'L');
      $mpdf->SetHTMLHeader("<table style=\"width: 100%;\"><tr><th style=\"font-weight: normal;\">$title</th></tr></table><hr style=\"height: 1px; background-color: rgb(0,0,0); color: rgb(0,0,0);\">");
      $mpdf->SetHTMLFooter("<hr style=\"height: 1px; background-color: rgb(0,0,0); color: rgb(0,0,0);\"><table style=\"width: 100%;\"><tr><th style=\"font-weight: normal;\">Strana <b>{PAGENO}</b> z <b>{nbpg}</b></th></tr></table>");
      $mpdf->WriteHTML("
      <style>
      span {
          font-size: 13px;
          font-weight: bold;
          /*text-decoration: underline;*/
          /*color: rgb(0,128,255);
          vertical-align: super;
      }
      </style>
      "); 
      $mpdf->WriteHTML("<table><tr><td><h2 style=\"/*text-decoration: underline;*//* border-bottom: 3px solid black;\">$title</h2></td></tr></table>");
      $mpdf->WriteHTML("<columns column-count=\"2\" vAlign=\"\" /><p style=\"font-size: 13px; line-height: 1.8;\">".str_replace($vsechny_akordy_predtim, $vsechny_akordy_potom, $zaznam_skladba->Text)."</p>");
      $mpdf->Output("soubory/skladby/pdf/{$zaznam_skladba->Url}.pdf");
Jo a v označené části je kus kódu, který by měl text rozdělit na 2 sloupce, to sice udělá, ale text se rovnoměrně rozdělí tak, aby byly oba sloupce stejně vysoké. Já chci, aby se text psal na první sloupec a teprve až se text nevejde tam, napíše se do sloupce druhého. Jak toho docílím?


Příklad z těch pár tisíců dalších chyb:
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in C:\Program Files\VertrigoServ\www\mw1\mPDF_5.7\includes\functions.php on line 96
Call Stack
#    Time    Memory    Function    Location
1    0.0086    398432    {main}( )    ...\skladby.php:0
2    1.2037    14743600    mPDF->WriteHTML( )    ...\skladby.php:501
3    1.2041    14744048    mPDF->purify_utf8( )    ...\mpdf.php:12824
4    1.2054    14744512    strcode2utf( )    ...\mpdf.php:30666
5    1.2054    14744784    preg_replace ( )    ...\functions.php:96

( ! ) Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in C:\Program Files\VertrigoServ\www\mw1\mPDF_5.7\includes\functions.php on line 97
Call Stack
#    Time    Memory    Function    Location
1    0.0086    398432    {main}( )    ...\skladby.php:0
2    1.2037    14743600    mPDF->WriteHTML( )    ...\skladby.php:501
3    1.2041    14744048    mPDF->purify_utf8( )    ...\mpdf.php:12824
4    1.2054    14744512    strcode2utf( )    ...\mpdf.php:30666
5    1.2488    14745888    preg_replace ( )    ...\functions.php:97
Taps
Profil
Pouzivas nejnovejsi verzi mpdf?
Milan1236000
Profil
Taps:
Nejnovější verzi nepoužívám, na webu je dostupná verze 5.7 a 6.0. Nejnovější verzi vyzkoušet můžu, ale opravdu tam je takový rozdíl mezi nimi?
Taps
Profil
Milan1236000:
Rozdil muze byt v pouzitych funkcich knihovny mpdf. Z vypisu chyb je zrejme ze ta tva verze mpdf pouziva funkce, ktere jsou jiz zastarale pro tvoji verzi php
Milan1236000
Profil
Taps:
No, vypadá to, že ta verze 6.0 všechny chyby vyřešila, pořád se mi ale zobrazují ty sloupce stejně vysoké místo toho, aby se nejdřív dopsal až do konce stránky sloupec první.

---

Nakonec se mi to podařilo. Pro ty, kteří by měli stejný problém, tak stačí místo:
<columns column-count=\"2\" vAlign=\"\" />
napsat:
$mpdf->SetColumns(2);
$mpdf->keepColumns=true;

Díky za radu. ;)
Milan1236000
Profil
Ještě malý dotaz ohledně generování PDF.
Na dost stránkách, kde se má generovat PDF, se stránka docela dlouho načítá (klidně i 5 sekund) a zjistil jsem, že je to právě tímto generováním. Ovšem na pozadí Woken mám nemálo náročnějších spuštěných programů a oken, takže je to v tomto případě docela znát.
Opravdu to generování normálně trvá tak dlouho? Generuje se mi jen jedna A4 stránka.
Napadlo mě, že by se to generovalo, až když by to bylo potřeba, ale nechci, aby se mi kvůli tomu načítala stránka znova.
JavaScript by to měl umět bez nového načítání, ne? S ním jsem ale ještě nezačínal, takže nevím, jak na to.
lucasKE
Profil *
ahoj, neskusal si wkhtmltopdf? Mohlo by to byt rychlejsie ako pdf generovanie.
Milan1236000
Profil
lucasKE:
Nezkoušel, udělám to jiným způsobem. Ale díky za tip. ;)

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: