mPdf a generování css stylů

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kleinpetr
Člen | 480
+
0
-

Ahoj, nevím jestli je chyba na mé straně nebo mPdf skutečně neumí bootstrap styly ?

Co jsem četl, tak by mělo vygenerovat PDF, se styly jako media=print ovšem když dám print, tak stránka vypadá tak jak potřebuji, ale když ji vygeneruji pomocí mPdf tak je úplně rozházená. Jak to tedy opravdu je s těmi css ?

Díky za pomoc

fizzy
Backer | 49
+
+1
-

mpdf ma obmedzene moznosti stylovania, ked chces pouzivat bootsrap stylovanie tak skus http://wkhtmltopdf.org

kleinpetr
Člen | 480
+
0
-

Díky, mohl bys mi trochu osvětlit jak s tím pracovat ? Nainstaloval jsem balíček a do nette aplikace nainstaloval https://github.com/…pwkhtmltopdf

ale nějak se mi nedaří to rozchodit.

kleinpetr
Člen | 480
+
0
-

Tak byl problém v nastavení binary, takže nyní je otázka jak vytvořit z templaty čisté html, které bych mu mohl předat, díky

kleinpetr
Člen | 480
+
0
-

To jsem zkoušel, ale nedařilo se mi rozchodit.. Ono už to pravděpodobně funguje, jen když předám jako html (string)$template tak semi pdf generuje asi 30min, je mi jasný, že pokud načítá všechny css, makra atp tak to bude tučný kód, ale nevím jak jinak to udělat..

Editoval kleinpetr (28. 12. 2015 22:05)

kleinpetr
Člen | 480
+
0
-

Ten Kdyby addon mi skoční takhle: Cannot found Wkhtmltopdf executable

kleinpetr
Člen | 480
+
0
-

Tak už jsem to rozchodil, opět tím, že jsem ve třídě Document upravil executables z wkhtmltopdf na /usr/local/bin/wkhtmltopdf ale opět jsem u stejného problému, když předám do addHmtl((string)$template) tak se mi otevře pouze pdf viewer, ale nezobrazí se ani prázdný list a musím restartovat apache.

@FilipProcházka dovolím se zeptat přímo tebe, jak mohu předat celou šablonu ? Díky za pomoc

Editoval kleinpetr (28. 12. 2015 22:34)

kleinpetr
Člen | 480
+
0
-

Tak jinak, jak řešíte generování PDF vy ?

mám např. detail faktury, který když dám print tak v css mám osekané styly pro print a ve chvíly kdy se stránka dá tisknout, tak vypadá tak jak potřebuji. Když použiji nějaký addon např. PdfResponse tak vygenerovaná stránka vypadá hrozně, nejspíš tím, že mi ignoruje bootstrapové sloupce (předpokládám)

Jak tedy iedálně řešit pdf ? Díky za vaše tipy.

castamir
Člen | 629
+
0
-

Neříkám, že je to pěkné řešení, ale u PdfResponse můžeš chybějící styly pro tisk doplnit přes template nebo externí css. Tisk bootstrap stylů jsem nikdy nezkoušel. Problém PdfResponse a potažmo mPDF je ale doba vykonání skriptů (hlavně v závislosti na množství tabulek). Je taky dobré povolit cache mPDF (nová verze to dělá automaticky, ale doposud obsahovala hodně bugů, takže jsem upgrade zatím neřešil).

wkhtmltopdf by měl být řádově rychlejší a neměl by mít tolik problémů se styly. Dá se však používat jen s nainstalovaným wkhtmltopdf v OS a nejde pomocí něj vepisovat do již existujících dokumentů (např. pdfka).

všespásné řešení tedy neznám, jen pouhé berličky…

kleinpetr
Člen | 480
+
0
-

Jde mi o to, že když použiji wkhtmltopdf, tak za prvý, když mu předám $template z nette tak mi generuje asi 30min a pak stejně padne a musím restartovat apache, když mu dám natvrdo url pro generování tak mi uloží do pdf stránku skoro jako printscreen, myslel jsem, že bude vycházet z print preview.. Jak mohu do pdfResponse přidat css ? díky

castamir
Člen | 629
+
0
-

např.

$response->styles = (string)$stylesTemplate;

prostě string s html/css zápisem stylů.

Přístup přes public property není ideální, hodlám to v další verzi vylepšit…

kleinpetr
Člen | 480
+
0
-

@castamir Dělám něco špatně ?

		$stylesheet = file_get_contents(__DIR__.'/../../www/css/bootstrap.min.css');
$pdf = new PdfResponse($template);
$pdf->styles = $stylesheet;
$this->sendResponse($pdf);

Editoval kleinpetr (4. 1. 2016 0:26)

fizzy
Backer | 49
+
0
-

@kleinpetr styly si mozes pridavat ale bootstrap v mpdf ti fungovat nebude, v mpdf funguju len niektore css zapisy a len na niektorych html elementoch

http://mpdf1.com/…al/index.php?…

kleinpetr
Člen | 480
+
+3
-

Takže po dlouhém testování a zkoušení všemožných knihoven, jsem dospěl k tomu, že jsem zůstal u mPDF, addon Joseki\PdfResponse.

Finální řešení (možná se někomu bude hodit)

  1. vlastní layout @pdf.latte
  2. vlastní styly pdf.css
  3. bootstrap styly, ale vygenerované customize pouze grid system, tables, typography
  4. styly nemusí být připojovány do mPDF, stačí je mít klasicky načtené v layoutu přes <link>
  5. zápis stylů v bootstrapu např.: .table > thead > tr > th{..} mpdf nepřečte, musel jsem upravit na .table thead tr th{..}
  6. NEJDŮLEŽITĚJŠÍ – používat pouze col-XS-..

Díky za pomoc :)

Editoval kleinpetr (4. 1. 2016 12:48)