WKHTMLTOPDF - renderování dynamického obsahu

ZAJDAN

  • *****
  • 2 086
    • Zobrazit profil
    • E-mail
WKHTMLTOPDF - renderování dynamického obsahu
« kdy: 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í?
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.


Re:WKHTMLTOPDF - renderování dynamického obsahu
« Odpověď #1 kdy: 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.

ZAJDAN

  • *****
  • 2 086
    • Zobrazit profil
    • E-mail
Re:WKHTMLTOPDF - renderování dynamického obsahu
« Odpověď #2 kdy: 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
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

Re:WKHTMLTOPDF - renderování dynamického obsahu
« Odpověď #3 kdy: 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 ... " />

ZAJDAN

  • *****
  • 2 086
    • Zobrazit profil
    • E-mail
Re:WKHTMLTOPDF - renderování dynamického obsahu
« Odpověď #4 kdy: 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
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.


ZAJDAN

  • *****
  • 2 086
    • Zobrazit profil
    • E-mail
Re:WKHTMLTOPDF - renderování dynamického obsahu
« Odpověď #5 kdy: 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.
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

Re:WKHTMLTOPDF - renderování dynamického obsahu
« Odpověď #6 kdy: 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 />

ZAJDAN

  • *****
  • 2 086
    • Zobrazit profil
    • E-mail
Re:WKHTMLTOPDF - renderování dynamického obsahu
« Odpověď #7 kdy: 13. 11. 2015, 13:06:18 »
Murděj Uktrurný:
prosim precti si vlakno od zacatku....presne toto jsem provadel
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

ZAJDAN

  • *****
  • 2 086
    • Zobrazit profil
    • E-mail
Re:WKHTMLTOPDF - renderování dynamického obsahu
« Odpověď #8 kdy: 13. 11. 2015, 13:10:45 »
Murděj Uktrurný:
beru zpet! ty mas na mysli to uvest plnohodnotne jako url..ok vyzkousim
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

ZAJDAN

  • *****
  • 2 086
    • Zobrazit profil
    • E-mail
Re:WKHTMLTOPDF - renderování dynamického obsahu
« Odpověď #9 kdy: 13. 11. 2015, 13:59:59 »
ready to use...DIKY hoši
je opravdu potreba src uvest jako plnohodnotnou url (http://.....)
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

Re:WKHTMLTOPDF - renderování dynamického obsahu
« Odpověď #10 kdy: 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á...