如何在表单提交时显示使用AJAX使用FPDF / FPDI创建的动态生成的PDF

时间:2019-01-03 18:40:12

标签: javascript php pdf fpdf

我正在创建一个页面,在生成PDF之后,用户可以自定义PDF,我想显示生成的PDF的预览并允许用户下载或打印。我让PHP可以正常工作以生成PDF,现在我继续使用AJAX调用来接受动态生成的文本的表单输入。提交后,我希望将PDF显示在div中,以便用户可以在打印/保存之前预览PDF。

这是我用于生成PDF的PHP(generate_pdf.php):

<?php

use setasign\Fpdi\Fpdi;

require_once('fpdf.php');
require_once('autoload.php');

// initiate FPDI
$pdf = new Fpdi();
// add a page
$pdf->AddPage();
// set the source file
$pdf->setSourceFile('template.pdf');
// import page 1
$tplIdx = $pdf->importPage(1);
$size = $pdf->getTemplateSize($tplIdx);
$orientation = $size['width'] > $size['height'] ? 'L' : 'P';
$mid_x = $size['width']/2;

$company = $_POST['company'];
$pdf->useTemplate($tplIdx, null, null, $size['width'], $size['height'],FALSE);

// now write some text above the imported page
$pdf->SetFont('Helvetica');
$pdf->SetTextColor(0, 0, 0);
$pdf->SetXY($mid_x - ($pdf->GetStringWidth($company) / 2), 110);
$pdf->Write(0, $company);

$pdf->Output();

这是我的AJAX调用的HTML / JavaScript:

<form method="post">
    <input name="company" type="text" />
    <input type="submit" />
</form>

<div id="pdf"></div>

<script>
    var $form = $('form'),
        form_data;

    $form.submit(function(e) {
        e.preventDefault();
        form_data = $(this).serialize();
        $.ajax({
            type: 'POST',
            url: 'generate_pdf.php',
            data: form_data
        }).done(function(response) {
            $('#pdf').append(response);
        });
    });
</script>

不幸的是,这只会产生一堆乱码,我假设它与content-type标头有关?

0 个答案:

没有答案