Mpdf + Angular: сбой Http при разборе

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

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

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

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

я использую :

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

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

Так вот мой 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 used (который вызывается основным скриптом 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». Я предполагаю, что я что-то упускаю … Если у кого-то есть идея, я беру это. Я могу поставить больше кода, если это необходимо.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]