Ejemplo n.º 1
0
 /**
  * Save the PDF to a file
  *
  * @param $filename
  * @return static
  */
 public function save($filename)
 {
     if ($this->html) {
         $this->snappy->generateFromHtml($this->html, $filename, $this->options);
     } elseif ($this->file) {
         $this->snappy->generate($this->file, $filename, $this->options);
     }
     return $this;
 }
Ejemplo n.º 2
0
$app->post('/', function (Request $request) use($app) {
    $parser = new JsonParser();
    $accessor = PropertyAccess::createPropertyAccessor();
    $snappy = new Pdf();
    $snappy->setBinary($app['wkhtmltopdf.binary']);
    $parameters = $parser->parse($request->getContent());
    if ($accessor->isReadable($parameters, 'options')) {
        foreach ((array) $accessor->getValue($parameters, 'options') as $name => $value) {
            $snappy->setOption($name, $value);
        }
    }
    $app['tmpFile'] = sys_get_temp_dir() . '/' . md5($request->getContent());
    if ($accessor->isReadable($parameters, 'source.url')) {
        $dns = new Net_DNS2_Resolver();
        $dns->query(parse_url($accessor->getValue($parameters, 'source.url'), PHP_URL_HOST));
        $snappy->generate($accessor->getValue($parameters, 'source.url'), $app['tmpFile'], [], true);
    } elseif ($accessor->isReadable($parameters, 'source.html')) {
        $snappy->generateFromHtml($accessor->getValue($parameters, 'source.html'), $app['tmpFile'], [], true);
    } elseif ($accessor->isReadable($parameters, 'source.base64')) {
        $snappy->generateFromHtml(base64_decode($accessor->getValue($parameters, 'source.base64')), $app['tmpFile'], [], true);
    }
    return new BinaryFileResponse($app['tmpFile']);
})->bind('api');
$app->finish(function () use($app) {
    if (file_exists($app['tmpFile'])) {
        unlink($app['tmpFile']);
    }
});
$app->error(function (\Exception $e, $code) use($app) {
    if ($app['debug']) {
        return;
Ejemplo n.º 3
0
 public function makeFromUri(Request $request)
 {
     // post値の取得
     $data = $request->all();
     $address = $data['address'];
     //$headers = array(
     //"HTTP/1.0",
     //"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
     //"Accept-Encoding:gzip ,deflate",
     //"Accept-Language:ja,en-us;q=0.7,en;q=0.3",
     //"Connection:keep-alive",
     //"User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:26.0) Gecko/20100101 Firefox/26.0"
     //);
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, $address);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     //curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
     $html = curl_exec($ch);
     curl_close($ch);
     // リンクの置換処理
     $url = parse_url($address);
     $protocol = "{$url['scheme']}://";
     $hostName = "{$protocol}{$url['host']}/";
     //var_dump($protocol);
     //var_dump($hostName);
     // リンクの置換(="/),(="//)
     //$html = preg_replace('{="//}', "=\"{$protocol}", $html);
     //$html = preg_replace('{="/}', "=\"{$hostName}", $html);
     // PDFの作成
     $snappy = new Pdf('/usr/local/bin/wkhtmltopdf');
     $snappy->setOption('disable-javascript', true);
     // filename
     $pdfName = date("YmdHis") . ".pdf";
     //$snappy->generateFromHtml($html, storage_path(). "/app/pdf/$pdfName");
     $snappy->generate($address, storage_path() . "/app/pdf/{$pdfName}");
     // htmlをpdfに変換
     return response()->json(array("name" => $pdfName));
 }