mpdf неработающие изображения через https - PullRequest
0 голосов
/ 04 октября 2018

Я использую mpdf для создания PDF-файлов.Все хорошо, пока я не переключился на https.После этого PDF-файлы по-прежнему генерируются правильно, но изображения не работают.Их источники правильно написаны по протоколу https в шаблоне php.И я также пытался использовать только относительные пути.Ничего.

Ниже приведен пример кода из моего класса:

  public function save_pdf($translate = false){
    $this->mpdf = new \Mpdf\Mpdf();
    $this->mpdf->CSSselectMedia='mpdf';
    //$this->mpdf->showImageErrors = true; // this will log errors into the php log file

    $ch = curl_init($this->pdf_css_path . '/configurator-pdf.css');
    // this disables ssl check: unsafe
    if($this->disable_ssl_check) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    $css = curl_exec($ch);
    curl_close($ch);

    $template = ($translate) ? $this->pdf_template_url : $this->pdf_template_url_it;
    $filename = ($translate) ? $this->pdf_name : $this->pdf_it_name;
    $_POST['cid'] = $this->cid;

    $json = json_encode($_POST);

    $ch = curl_init($template);
    // this disables ssl check: unsafe
    if($this->disable_ssl_check) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json', 'Content-Length: ' . strlen($json) ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
    $html = curl_exec($ch);
    curl_close($ch);

    $this->mpdf->WriteHTML($css, 1);
    $this->mpdf->WriteHTML($html, 2);

    $pdf = $this->pdf_destination_path . DS . $filename;
    $this->mpdf->Output($pdf, \Mpdf\Output\Destination::FILE);
  }

1 Ответ

0 голосов
/ 05 октября 2018

Нашел решение здесь:

Изображения с https в mpdf

Мы можем установить это

//note: using $this only because in my case mpdf is a class prop
$this->mpdf->curlAllowUnsafeSslRequests = true;

И автоматически это решит,по крайней мере, с моей программой выше.Очевидно, что это не «безопасное» решение, особенно если изображения и / или содержимое неизвестны / непредсказуемы.В противном случае вы должны стремиться получить рабочий сертификат.Вот две хорошие статьи о настройках сертификата:

https://welaunch.io/plugins/woocommerce-pdf-catalog/faq/images-pdf-displays-red-cross-https-mpdf/

https://medium.com/@f.h.ferreira/file-get-contents-ssl-operation-failed-php-4297ad92977f

В этой последней, в частности, также содержатся ссылки на https://curl.haxx.se/ и его сертификаты,Я не проверял, хотя.

...