Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: 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:
<!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>
<?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, $saveToFile, QR_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í?
-
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ěco podobné jsem zkoušel podle http://phpqrcode.sourceforge.net/examples/index.php?example=203
<?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($dataText, false, $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
-
Jak voláš WKHTMLTOPDF?
Můžeš vygenerovaný svg vložit přímo do html jako base64
<img src="data:image/svg+xml;base64,PD94 ... " />
-
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
-
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.
-
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.
<img id="image" type="image/svg+xml" src="http://server/qrcode.php />
-
Murděj Uktrurný:
prosim precti si vlakno od zacatku....presne toto jsem provadel
-
Murděj Uktrurný:
beru zpet! ty mas na mysli to uvest plnohodnotne jako url..ok vyzkousim
-
ready to use...DIKY hoši
je opravdu potreba src uvest jako plnohodnotnou url (http://.....)
-
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á...