代码之家  ›  专栏  ›  技术社区  ›  abel

PHP-MySQL:将PDF保存到数据库

  •  3
  • abel  · 技术社区  · 15 年前

    我正在用TCPDF生成pdf,我想将生成的pdf保存为MySQL数据库中的blob。我应该将哪些数据保存到数据库中? PDF页面的代码

    <?php
    require_once('../config/lang/eng.php');
    require_once('../tcpdf.php');
    
    // create new PDF document
    $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
    
    // set document information
    $pdf->SetCreator(PDF_CREATOR);
    $pdf->SetAuthor('Nicola Asuni');
    $pdf->SetTitle('TCPDF Example 001');
    $pdf->SetSubject('TCPDF Tutorial');
    $pdf->SetKeywords('TCPDF, PDF, example, test, guide');
    
    // set default header data
    $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 001', PDF_HEADER_STRING);
    
    // set header and footer fonts
    $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
    $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
    
    // set default monospaced font
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
    
    //set margins
    $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
    $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
    $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
    
    //set auto page breaks
    $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
    
    //set image scale factor
    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
    
    //set some language-dependent strings
    $pdf->setLanguageArray($l);
    
    // ---------------------------------------------------------
    
    // set default font subsetting mode
    $pdf->setFontSubsetting(true);
    
    // Set font
    // dejavusans is a UTF-8 Unicode font, if you only need to
    // print standard ASCII chars, you can use core fonts like
    // helvetica or times to reduce file size.
    $pdf->SetFont('dejavusans', '', 14, '', true);
    
    // Add a page
    // This method has several options, check the source code documentation for more information.
    $pdf->AddPage();
    
    // Set some content to print
    $html = <<<EOD
    <h1>Welcome to <a href="http://www.tcpdf.org" style="text-decoration:none;color:black;"><span style="background-color:#CC0000;"> TC<span style="color:white;">PDF</span> </span></a>!</h1>
    <i>This is the first example of TCPDF library.</i>
    <p>This text is printed using the <i>writeHTMLCell()</i> method but you can also use: <i>Multicell(), writeHTML(), Write(), Cell() and Text()</i>.</p>
    <p>Please check the source code documentation and other examples for further information.</p>
    <p style="color:#CC0000;">TO IMPROVE AND EXPAND TCPDF I NEED YOUR SUPPORT, PLEASE <a href="http://sourceforge.net/donate/index.php?group_id=128076">MAKE A DONATION!</a></p>
    EOD;
    
    // Print text using writeHTMLCell()
    $pdf->writeHTMLCell($w=0, $h=0, $x='', $y='', $html, $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=true);
    
    // ---------------------------------------------------------
    
    // Close and output PDF document
    // This method has several options, check the source code documentation for more information.
    $pdf->Output('example_001.pdf', 'I');
    
    //============================================================+
    // END OF FILE
    //============================================================+
    ?>
    

    代码将pdf文件输出到浏览器。我该怎么做 保存pdf数据 数据库还是文件系统?对于文本数据,我使用file\u put\u contents来创建html/txt文件。

    Piskvor . 解决方案代码

    $content=$pdf->Output('', 'S');
    header("Content-type:application/pdf");
    header("Content-Disposition:attachment;filename='pdf.pdf'");
    echo $content;
    

    您可以将$content保存为db中的blob并检索它以生成pdf。如果要在浏览器中打开pdf,请删除以下行。

    2 回复  |  直到 8 年前
        1
  •  6
  •   Piskvor left the building Rohit Kumar    15 年前

    答案就在那里,在你的代码里:

    // Close and output PDF document
    // **This method has several options**, check the source code documentation for more information.
    $pdf->Output('example_001.pdf', 'I');
    

    From the documentation :

    参数:(…) string$dest Destination发送 下列值:(…)S:将文档作为 字符串。名称被忽略。

    因此,更改代码如下:

    $pdffilecontent = $pdf->Output('', 'S');
    

        2
  •  4
  •   Kareem    12 年前

    $dest字符串(发送文档的目的地)的值可以是:

    I: send the file inline to the browser (default). 
    D: send to the browser and force a file download with the name given by name.
    F: save to a local server file with the name given by name.
    S: return the document as a string (name is ignored).
    FI: equivalent to F + I option
    FD: equivalent to F + D option
    E: return the document as base64 mime multi-part email attachment (RFC 2045)