ShutyA1488
@ShutyA1488

При AJAX запросе, не скачивается PDF файл (FPDF)?

Со стороны Пользователя передаются данные на сервер с помощью AJAX, на сервере генерируется PDF с переданными значениями, запрос отрабатывает, но вот сам файл PDF не скачивается, хотя когда переходишь на него прописав URL серверного файла, то он скачивается, но уже как вы понимаете без переданных файлов( Использую встроенные класс в PHP, "FPDF"
let obj = {
    name: "Roma",
    secondName: "Ishutin",
    year: "21"
};
const url = "pdf.php";
let button = document.querySelector("#button");

button.addEventListener("click", () => {
    fetch(url, {
        method: "POST",
        body: JSON.stringify(obj),
        headers: {
            "Content-type": "application/json"
        }
    });
});


$serverObj = $_POST;
$serverObj = json_decode(file_get_contents("php://input"), true);

$name = $serverObj["name"];
$secondName = $serverObj["secondName"];
$year = $serverObj["year"];

require("fpdf-utf8/tfpdf.php");

$pdf = new tFPDF();
$pdf->AddPage();
// Add a Unicode font (uses UTF-8)
$pdf->AddFont('DejaVu','','DejaVuSansCondensed.ttf',true);
$pdf->SetFont('DejaVu','',14);

////////////////////////////////////////////////////////////////////

$pdf->SetAuthor("Tonator");
$pdf->SetTitle("Price");

$pdf->SetDisplayMode('real','default');
$pdf->Image('logo.png',69,11,71,12,'png', 'http://www.fpdf.org/');

$pdf->SetXY(10,30);
$pdf->SetFontSize(14);
$pdf->Write(14,'Имя: ');
$pdf->Write(14,$name);

$pdf->SetXY(10,40);
$pdf->SetFontSize(14);
$pdf->Write(14,'Фамилия: ');
$pdf->Write(14,$secondName);

$pdf->SetXY(10,50);
$pdf->SetFontSize(14);
$pdf->Write(14,'Годиков: ');
$pdf->Write(14,$year);

$result = $pdf->Output('example1.pdf','D');
  • Вопрос задан
  • 236 просмотров
Пригласить эксперта
Ответы на вопрос 1
ShutyA1488
@ShutyA1488 Автор вопроса
Если кому-то это интересно, то у меня получилось это реализовать с помощью BLOB. Как и говорил Mellorn
let obj = {
    name: "Roma",
    secondName: "Ishutin",
    year: "21"
};
const url = "pdf.php";
let button = document.querySelector("#button");

button.addEventListener("click", () => {
    fetch(url, {
        method: "POST",
        body: JSON.stringify(obj),
        headers: {
            "Content-type": "application/json"
        }
    })
        .then(response => response.blob())
        .then(function (blob) {
            let a = document.createElement('a');
            a.className = "link";
            a.innerHTML = "Скачать";
            a.href = URL.createObjectURL(blob);

            document.body.append(a);
        });
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы