Mpdf + Angular: сбой Http при разборе - PullRequest
0 голосов
/ 13 сентября 2018

Во-первых, я знаю, что эта проблема встречается часто, и множество публикаций говорят об ошибках такого рода.Я прочитал их все, и перепробовал много вещей, и это все еще не работает.

Позвольте мне подробно рассказать о моей проблеме.Так что я работаю с Angular 5 + Php над приложением.Так что с этим приложением я создаю PDF, используя Mpdf .У меня есть два способа создания PDF.Один создает файл и затем отправляет его по почте, а другой позволяет загружать его непосредственно пользователем.

Во-первых, это работает очень хорошо.Нет проблем с этим.Для второго способа все в значительной степени одинаково, за исключением функции Output из Mpdf.Вместо

$mpdf->Output($docName, 'F');

я использую:

$mpdf->Output($docName, 'I'); //for Inline cf link above

, который должен открыть приглашение пользователя, чтобы разрешить загрузку.И в ответ я получаю эту ошибку: enter image description here

Итак, вот мой service.ts , взаимодействующий со скриптом php:

export class MailService {
  urlPost = '/crapo-app/api/mail/postMail.php';

  constructor(private http: HttpClient) {}

  sendMailAndPdfToPrtcpt(mailAndHtmlReport: MailAndHtmlReport): Observable<any> {
    console.log('SendMailtoPartcpt in svc', mailAndHtmlReport);
    return this.http.post<any>(this.urlPost, mailAndHtmlReport);
  }
}

Вот сценарий php :

<?php
  require_once('./../fonctions.php');
  require_once('./../pdfy/pdfy.php');

  try {
      // this is an object which contains also the report name adn the pdf instructions
      $mailAndHtmlReport = json_decode(file_get_contents('php://input'));

      pdfyThis($mailAndHtmlReport->htmlReport, $mailAndHtmlReport->docName, $mailAndHtmlReport->pdfInstruction);

      //send mail here

      $return = 'Les mails ont bien été envoyés aux destinataires choisis';

      header('Content-Type: application/json');
      echo json_encode($return);
  }
  catch(Exception $e) {
      $errorMsg = date('d/m/Y') . ";"
          . date('H:i:s') . " : Erreur lors de l'envoi de mail: "
          . $e->getMessage() . ". Fichier " .$mailAndHtmlReport->docName. "fonctions.php, Fonction composePdf \r\n";
      erreur($errorMsg);
  };

Здесь используется функция php (которая вызывается основным сценарием php):

<?php
session_start();
  require_once('C:\xampp5.6\php\lib\mpdf\mpdf.php');


     function pdfyThis($htmlReport, $docName, $pdfUse) {
       try{
        ob_end_clean();
        ob_start();

        $mpdf = new mPDF('c','', 12, 'calibri', 0, 0, 55, 20, 0, 0, 'P');

        $mpdf->SetDisplayMode('fullpage');

        $mpdf->SetTitle($docName);
        $mpdf->SetAuthor("Smthg");
        $stylesheet = file_get_contents($_SERVER["DOCUMENT_ROOT"].'/somepath');
        $mpdf->WriteHTML($stylesheet,1);

        $mpdf->SetHTMLHeader('<img style="vertical-align: top;" src="'.$_SERVER["DOCUMENT_ROOT"].'/somepath" />','O',true);

        $mpdf->WriteHTML($htmlReport);

        if ($pdfUse === 'download') {
            $docName = $docName.".pdf";
            $mpdf->Output($docName, 'I');
            ob_end_flush();
        }
        else if ($pdfUse === 'sendByMail') {
            $docName = $_SERVER['DOCUMENT_ROOT']."/somepath".$docName.".pdf";
            $mpdf->Output($docName, 'F');
            ob_end_flush();
        }
        }catch(Exception $e){
            $errorMsg = date('d/m/Y') .";".date('H:i:s')." : Erreur lors de la composition du PDF : ".$e->getMessage().". Fichier ".scriptsDir."fonctions.php, Fonction pdythis\r\n";
        erreur($errorMsg);
      }
    }

Так что да, сообщение об ошибке довольно ясно, но я не выяснил, в чем проблема.Сценарий с выводом «F» работает, а не с «I».Я предполагаю, что я что-то упускаю ... Если у кого-то есть идея, я беру это.Я могу поставить больше кода, если это необходимо.

...