HTML2PDF od Honzy
Je to synchronní a maximálně simple řešení. Tj nasypeš tam URL nebo rovnou HTML a odpověd je výsledek - obsah PDF souboru. Aby to nemohl volat kdekdo, každý projekt dostane svýho uživatele a secret, přes který ty svoje požadavky podepisuje. Nehodi se na velký data, live volani atd. Když to zahltíš, budeš v lepším případě dlouho čekat. Běží to totiž na sociální VPSce s malinovým výkonem, co je určená původně na postcss, a ani to neřeší žádnou frontu ani nic podobného. Je to jen tupý request-response. Má dvě varianty volání:
- Poslat URL
- Poslat HTML
Přes URL
Prostě tam pošleš URL, a počkáš si na pdf:
<?php
$url = 'https://www.seznam.cz/';
$user = 'klient'; //vygeneruje honza
$secret = '********************'; //vygeneruje honza
$sign = sha1($user . $url . $secret);
$requestUrl = 'http://css.netservis.cz/html2pdf/?user=' . urlencode($user) . '&sign=' . urlencode($sign) . '&url=' . urlencode($url);
$pdfContent = file_get_contents($requestUrl);
echo $pdfContent;
Přes HTML
Přes HTML je lepší to poslat POSTem, protože by se to HTML do GETu asi nevešlo. Ale jinak je to v pricipu úplně stejný.
<?php
$html = '<html> ..... </html>';
$user = 'klient'; //vygeneruje honza
$secret = '********************'; //vygeneruje honza
$sign = sha1($user . $html . $secret);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://css.netservis.cz/html2pdf/");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'user=' . urlencode($user) . '&html=' . urlencode($html) . '&sign=' . $sign);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$pdfContent = curl_exec($ch);
curl_close($ch);
Do toho POSTu/GETu se dají nacpat ještě nějaké další nepovinné parametry, který se ale nijak nepromítají do podpisu:
margin- int, nastaví okraje, asi v mm, ale nevim, zkus si to, když budeš potřebovatorientation- string, kdyz je tam landscape, tak je na šířku, jinak na výškupaper- string, A4 nebo A5dpi- int, nastaví dpi, kde všude se to projeví nevim. Zkus si sám. (obrázky, míry v px, ???)