Autor Zpráva
siok
Profil
Ahoj všem,

používám mPDF ver.6 ale potřebuji aby mi to exportovalo i na malou tiskárnu (EET). Nastavení formátu prý jde až od verze 7, tak jsem si stáhl ver. 8. Ale ta se mě nějak nedaří zprovoznit.
<?php
include'./mpdf/mpdf/Mpdf.php';
// Require composer autoload
require_once __DIR__ . '/vendor/autoload.php';
// Create an instance of the class:
$mpdf = new \Mpdf\Mpdf();

// Write some HTML code:
$mpdf->WriteHTML('Hello World');

// Output a PDF file directly to the browser
$mpdf->Output();
?>
Je to dle návodu, ale nějak jsem se nedozvěděl co je vendor/autoload.php a v balíku kde jsem stahoval tuto verzi nic takového není.
Vypíše mi to chybu: Fatal error: Trait 'Mpdf\Strict' not found in /disk_1/www/cz/eshop-sport/mpdf/mpdf/mpdf/Mpdf.php on line 39

Poradí mi někdo, veřím že to bude nějaká hloupost ale nějak na ni nemohu přijít:-(
Davex
Profil
siok:
Pravděpodobně jsi přeskočil první a nejdůležitější krok instalačního návodu, kterým se všechny potřebné soubory stáhnou.

composer require mpdf/mpdf
siok
Profil
Davex:
Jako myslíš takto
<?php
// Require composer autoload
$ composer require mpdf/mpdf
require_once __DIR__ . '/vendor/autoload.php';
// Create an instance of the class:
$mpdf = new \Mpdf\Mpdf();
Keeehi
Profil
siok:
Ne. Composer je script, který se stará o instalaci závislostí. Můžeš si to představit jako normální program co máš v počítači. Jen to nemá ikonku kterou bys to mohl spustit a ani nějaké okno, ve kterém bys mohl klikat. Celé se to ovládá přes přitažlivou řádku. To co napsal Davex se zadává právě do příkazové řádky. Samozřejmě aby to fungivalo, musíš si composer nejdříve nainstalovat.
NoxOne
Profil
Pokud chceš MPDF používat pouze pro PHP tak ti stačí si nakopírovat adresář SRC a a autoload zaremovat.

Také to nemám v systému přes composer nainstalovaný a volám to z php nebo sh rovnou. Jenom musíš mít jasno v cestách k mpdf. Takto používám již od verze 4 a víš.
Keeehi
Profil
NoxOne:
A includy a instalaci závislostí si řešíš sám ručně? Protože tu práci kterou dělá composer musí někdo udělat. Buď ty ručně, nebo nějaký jiný nástroj.
NoxOne
Profil
Includy a závislosti fungují. Jediný co to chtělo byl ghostscript a libreoffice headless.

Jinak je to pořešený stačí to potom volat jako funkci/class dle potřeb.
Keeehi
Profil
NoxOne:
Nějak s tím nesouhlasím. Postupoval jsem podle tvého návodu. Z githubu jsem stáhnul složku src. Vytvořil jsem php soubor s obsahem
<?php
include'./src/Mpdf.php';
// Require composer autoload
// require_once __DIR__ . '/vendor/autoload.php';
// Create an instance of the class:
$mpdf = new \Mpdf\Mpdf();
 
// Write some HTML code:
$mpdf->WriteHTML('Hello World');
 
// Output a PDF file directly to the browser
$mpdf->Output();
?>
kde jsem tedy dle tvého doporučení zakomentoval řádek s autoloadem. No a jaký je výsledek?
Fatal error: Trait 'Mpdf\Strict' not found

Takže ti v té radě něco chybí.

Samozřejmě, můžu tam ručně přidat
include'./src/Strict.php';
Nicméně to bude pokračovat chybou
Fatal error: Trait 'Mpdf\FpdiTrait' not found
a tak dále a tak dále.

Ano, dá se to samozřejmě zprovoznit i ručně bez composeru ovšem v tu chvíli děláš ručně to co composer zvládne automaticky. Přiděláváš si s tím akorát zbytečný kotel práce.
NoxOne
Profil
Já mám obsah adresáře SRC nahraný v adresáři XML a dělalo mi to stejné blbosti jako tobě.
Stačilo před include přidat define('_MPDF_URI','xml/'); tím jsem mu řekl v kterém adresáři hledá komponenty. A vše funguje.
Keeehi
Profil
NoxOne:
Nestačí.
<?php
define('_MPDF_URI','src/');
include'./src/Mpdf.php';
// Require composer autoload
// require_once __DIR__ . '/vendor/autoload.php';
// Create an instance of the class:
$mpdf = new \Mpdf\Mpdf();
 
// Write some HTML code:
$mpdf->WriteHTML('Hello World');
 
// Output a PDF file directly to the browser
$mpdf->Output();
?>
Přidal jsem tam tu konstantu a error je stále stejný.
Fatal error: Trait 'Mpdf\Strict' not found

Za druhé, konstanta _MPDF_URI od verze 7 nefunguje, jelikož byla odebrána.
NoxOne
Profil
Tak to se budu muset podívat více. Protože mám na 3 serverech mpdf 7.1 a funguje to. Měl jsem tam verzi 4 a vždy ji povyšuji pouze přehráním adresáře SRC a úpravou configu.


Ještě jsem psal kolegovi co dělal za změnu a ten mi odepsal že jenom do systému nastavil natvrdo použití MPDF_URI tak aby systém měl tu cestu v paměti. Prý něco jako PATH ve windows.
Systém je CentOS 7 a já jsem přes windows tak nevím co tam dělal. :(
Keeehi
Profil
NoxOne:
Zřejmě v těch projektech máte něco, co includy řeší automaticky a dělá tedy stejnou práci jako composer. A ani se tomu nedivím. Dělat to ručně je docela opruz. V Nette frameworku existuje třeba RobotLoader který je schopný si třídy sám v určité složce dohledat. Takže by se dal na to použít a composer by nebyl potřeba.
Ale jak jsem psal něco tu práci vždy musí udělat. siok předpokládám u sebe nic takového mít nebude. Proto je použití composeru pro něj nejjednodušší a nejsprávnější volba. Jednak je to doporučený postup dle manuálu toho projektu ale zároveň je composer standardem pro instalaci projektů v PHP. Není moc věcí které by pro instalaci nevyužívaly composer. Do budoucna se mu to jen vyplatí.

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:

0