/** * 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; }
$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;
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)); }