首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建一个显示PDF -使用TCPDF的ajax

创建一个显示PDF -使用TCPDF的ajax
EN

Stack Overflow用户
提问于 2015-07-09 19:49:13
回答 1查看 4.4K关注 0票数 0

我用的是Laravel 4.2

ajax非常新,我不知道在.done中放置什么来显示PDF。

我在方法中所写的东西(缺少html变量.它相当大):

代码语言:javascript
运行
复制
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

    $pdf->SetCreator("Office");
    $pdf->SetAuthor('Office');
    $pdf->SetTitle('TCPDF Example 061');
    $pdf->SetSubject('TCPDF Tutorial');
    $pdf->SetKeywords('TCPDF, PDF, example, test, guide');

    $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 061', PDF_HEADER_STRING);

    $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
    $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

    $pdf->SetMargins(10, 5, 10);
    $pdf->SetHeaderMargin(5);
    $pdf->SetFooterMargin(0);

    $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

    if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
        require_once(dirname(__FILE__).'/lang/eng.php');
        $pdf->setLanguageArray($l);
    }

    $pdf->SetPrintHeader(false);
    $pdf->SetPrintFooter(false);

    $pdf->SetFont('helvetica', '', 10);

    $pdf->AddPage();

    $pdf->writeHTML($html, true, 0, true, 0);

    $pdf->lastPage();

    $pdf->Output('test.pdf', 'I');

我在视图中所写的

代码语言:javascript
运行
复制
$('#btnPrint').click(function() {
    $.ajax({
        url: '{{ route('getPDF') }}',
        type: 'POST',
        cache: false,
        data: {data: html},
    })
    .done(function(data) {
        // what should be placed here
    })
    .fail(function() {
        console.log("error");
    });

});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-09 20:00:13

这个答案假设在生成PDF时显示某种类型的加载图标:

jQuery不能接收服务器提供的数据并显示或保存PDF文件。

你需要做的是这样的事情:

代码语言:javascript
运行
复制
$('#btnPrint').click(function() {
    $.ajax({
        // This PHP file will generate the PDF and save it to your server
        // $pdf->Output('path/to/pdf/file.pdf', 'F');
        url: 'create_pdf.php', 
        type: 'POST',
        cache: false,
        data: {data: html},
    })
    .done(function(data) {
        $('#someDiv').html('<iframe src="path/to/pdf/file.pdf"></iframe>');
    })
    .fail(function() {
        console.log("error");
    });

});

这个答案假设PDF文件生成得非常快,您根本不需要显示加载图标:

代码语言:javascript
运行
复制
$('#someDiv').html('<iframe src="create_pdf.php"></iframe>');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31326911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档