Skip to content

Commit

Permalink
Updated image fetching in exporting
Browse files Browse the repository at this point in the history
Added domain check to see if possibly local even when whole url found.
Changed image fetch from file_get_contents to curl for external
resources.

Hopeful solution to #392
  • Loading branch information
ssddanbrown committed Oct 6, 2017
1 parent b711bc6 commit 9758872
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion app/Services/ExportService.php
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ protected function htmlToPdf($html)
* Bundle of the contents of a html file to be self-contained.
* @param $htmlContent
* @return mixed|string
* @throws \Exception
*/
protected function containHtml($htmlContent)
{
Expand All @@ -153,9 +154,27 @@ protected function containHtml($htmlContent)
} else {
$pathString = $srcString;
}

// Attempt to find local files even if url not absolute
$base = baseUrl('/');
if (strpos($srcString, $base) === 0) {
$isLocal = true;
$relString = str_replace($base, '', $srcString);
$pathString = public_path(trim($relString, '/'));
}

if ($isLocal && !file_exists($pathString)) continue;
try {
$imageContent = file_get_contents($pathString);
if ($isLocal) {
$imageContent = file_get_contents($pathString);
} else {
$ch = curl_init();
curl_setopt_array($ch, [CURLOPT_URL => $pathString, CURLOPT_RETURNTRANSFER => 1, CURLOPT_CONNECTTIMEOUT => 5]);
$imageContent = curl_exec($ch);
$err = curl_error($ch);
curl_close($ch);
if ($err) throw new \Exception("Image fetch failed, Received error: " . $err);
}
$imageEncoded = 'data:image/' . pathinfo($pathString, PATHINFO_EXTENSION) . ';base64,' . base64_encode($imageContent);
$newImageString = str_replace($srcString, $imageEncoded, $oldImgString);
} catch (\ErrorException $e) {
Expand Down

0 comments on commit 9758872

Please sign in to comment.