php - Mpdf + Angular:解析期间的Http失败
问题描述
首先,我知道这个问题很常见,很多帖子都谈到了这种错误。我已经阅读了所有内容,并尝试了很多东西,但仍然无法正常工作。
详细说一下,我的问题。所以我在一个应用程序上使用 Angular 5 + Php。所以有了这个应用程序,我正在使用Mpdf创建一些 pdf 。我有两种制作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 函数(由主 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”一起工作。我想我错过了一些东西......如果有人知道我正在接受它。如果需要,我可以添加更多代码。
解决方案
推荐阅读
- java - 如何在 p 是素数的情况下有效地找到 gcd(a,b) % p?
- r - r函数错误:找不到对象'y'
- android - 如何根据 JSON 数据在 RecyclerView 适配器中设置图像?
- javascript - 在 JQuery for Persian 中将 HTML 导出为 PDF
- html - 调整大小时表单外观的版本不正确
- regex - 无法在 Ansible 中进行替换
- php - Laravel 5.5:如何定义可在所有控制器中使用的全局变量?
- docker - `docker attach` 附加到哪个进程?
- oop - 适配器模式中的“多态行为”是什么?
- r - 调整性别后绘制生存曲线