Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: ZAJDAN 13. 11. 2015, 11:04:44

Název: WKHTMLTOPDF - renderování dynamického obsahu
Přispěvatel: ZAJDAN 13. 11. 2015, 11:04:44
Ahoj,
pokouším se pomocí WKHTMLTOPDF vyrenderovat PDF z html obsahující <img> který má jako source odkaz na php vracející QR code v podobě svg obrázku:
Kód: [Vybrat]
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<div id="qr-picture"><img id="image" type="image/svg+xml" src="qrcode.php /></div>
</div>
</body>
</html>

Kód: [Vybrat]
<?php
require_once ('phpqrcode-master/qrlib.php');
header("Content-Type: image/svg");
$dataText   'PHP QR Code :)'
    
$svgTagId   'id-of-svg'
    
$saveToFile false
    
$imageWidth 100// px 

    // SVG file format support 
    
$svgCode QRcode::svg($dataText$svgTagId$saveToFileQR_ECLEVEL_L$imageWidth); 
    echo 
$svgCode
?>
problém je, že se do PDF se vyrenderuje pouze prázdný rám
nemáte někdo zkušenost s podobnou věcí?
Název: Re:WKHTMLTOPDF - renderování dynamického obsahu
Přispěvatel: Ondrej Nemecek 13. 11. 2015, 11:46:10
Musíte situaci analyticky rozebrat. Zkusit svg uložit do souboru, zkontrolovat, že je validní a že se zobrazí v prohlížečích obrázků, pak že se zobrazí v libovoném prohlížeči v tom html, pak že ho zobrazí v tom html webkit  prohlížeč a nakonec že ho vyrenderuje WKHTMLTOPDF. Zkontrolujte mime typy.
Název: Re:WKHTMLTOPDF - renderování dynamického obsahu
Přispěvatel: ZAJDAN 13. 11. 2015, 12:14:07
něco podobné jsem zkoušel podle http://phpqrcode.sourceforge.net/examples/index.php?example=203
Kód: [Vybrat]
<?php
require_once ('phpqrcode-master/qrlib.php');
     
    
$tempDir EXAMPLE_TMP_SERVERPATH;  
      
    
$dataText   'PHP QR CodeTESTETSTETSTSTTET'
    
$svgTagId   'id-of-svg'
    
$saveToFile 'demo.svg'
    
    
// it is saved to file but also returned from function 
    
$svgCode QRcode::svg($dataTextfalse$tempDir.$saveToFile); 

?>
po spuštění php s tímto scriptem se do browseru vykreslí SVG QR kod v poradku
v response headers je: Content-Type:image/svg+xml
nemyslím si, ze je nutné ten soubor svg fyzicky ulozit, staci aby ho spravne zobrazil browser, protoze wkhtmltopdf pracuje stejne jako browser
Název: Re:WKHTMLTOPDF - renderování dynamického obsahu
Přispěvatel: Murděj Uktrurný 13. 11. 2015, 12:19:33
Jak voláš WKHTMLTOPDF?

Můžeš vygenerovaný svg vložit přímo do html jako base64
<img src="data:image/svg+xml;base64,PD94 ... " />
Název: Re:WKHTMLTOPDF - renderování dynamického obsahu
Přispěvatel: ZAJDAN 13. 11. 2015, 12:30:48
wkhtmltopdf volam pres phpwrapper 'mikehaertl/phpwkhtmltopdf'
ale zkousel jsem ho na mou stranku postvat i z command line:
wkhtmltopdf /home/zajdan/html/test.html /home/zajdan/html/test.pdf

v obou pripadech vysledky stejne....QR neni do PDF vyrenderovan
Název: Re:WKHTMLTOPDF - renderování dynamického obsahu
Přispěvatel: ZAJDAN 13. 11. 2015, 12:41:27
pokud vemu response ze serveru, tedy source kod toho SVG a ulozim to do noveho souboru 'test.svg' neni problem tento soubor zobrazit v prohlizeci obrazku, browseru a ve finale i kdyz tento soubor uvedu jako src v <img> tak je to v poradku, ale cilem je to svg ziskat dynamicky bez potreby ho ukladat na disk.
Název: Re:WKHTMLTOPDF - renderování dynamického obsahu
Přispěvatel: Murděj Uktrurný 13. 11. 2015, 12:58:22
ale zkousel jsem ho na mou stranku postvat i z command line:
wkhtmltopdf /home/zajdan/html/test.html /home/zajdan/html/test.pdf
Ono to zkouší zobrazit zdrojový kód php ne jeho výsledek. Aby to zobrazovalo výsledné vygenerované svg musí se tam být odkaz na server který spustí php kód a vygeneruje svg.
Kód: [Vybrat]
<img id="image" type="image/svg+xml" src="http://server/qrcode.php />
Název: Re:WKHTMLTOPDF - renderování dynamického obsahu
Přispěvatel: ZAJDAN 13. 11. 2015, 13:06:18
Murděj Uktrurný:
prosim precti si vlakno od zacatku....presne toto jsem provadel
Název: Re:WKHTMLTOPDF - renderování dynamického obsahu
Přispěvatel: ZAJDAN 13. 11. 2015, 13:10:45
Murděj Uktrurný:
beru zpet! ty mas na mysli to uvest plnohodnotne jako url..ok vyzkousim
Název: Re:WKHTMLTOPDF - renderování dynamického obsahu
Přispěvatel: ZAJDAN 13. 11. 2015, 13:59:59
ready to use...DIKY hoši
je opravdu potreba src uvest jako plnohodnotnou url (http://.....)
Název: Re:WKHTMLTOPDF - renderování dynamického obsahu
Přispěvatel: Ondrej Nemecek 13. 11. 2015, 20:32:52
ready to use...DIKY hoši
je opravdu potreba src uvest jako plnohodnotnou url (http://.....)

Jo a to právě zjistíte rozborem toho problému. Zapoměl jsem tam uvést, že u toho máte sledoval logy apache - error log a acces log. Z toho snadno zjistíte, že se váš skript vůbec nevolá nebo uložený soubor nenačítá...