0

我正在尝试编写一个代码,我必须在其中打印数据库的内容并将其输出为 pdf 文件

但是我似乎遇到了问题

当我导出数据库中的所有内容时,我的 pdf 不显示任何内容

但如果我限制它,例如 LIMIT 5

它可以正常工作并正确打印数据

有没有办法让它打印我的数据库而不必使用限制,因为我需要将它打印在单个 pdf 文件中

//tcpdf 库的设置

    ob_start();
    session_start();
    include('connect.php');
    include('../libraries/tcpdf/tcpdf.php');
    include('../libraries/tcpdf/config/lang/eng.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('Test');
    $pdf->SetTitle('Report');
    $pdf->SetSubject('Report');
    $pdf->SetKeywords('Test, Report, Data, Form, Results');



    // set default header data
    $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING, array(0,64,255), array(0,64,128));
    $pdf->setFooterData($tc=array(0,64,0), $lc=array(0,64,128));

    // 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);

    // remove default header
    $pdf->setPrintHeader(false);

    // Add a page
    // This method has several options, check the source code documentation for more information.
    $pdf->AddPage();

//查询和打印到pdf

    //queries
    $c_name=DB::queryOneField('report_name',"SELECT * from reports r INNER JOIN report_fields rf on r.report_id=rf.report_id INNER JOIN searchcolumn s on rf.field_id=s.scol_id where r.report_id=%i",$_GET['c_id']);


    if($_GET['custom']==true)
    {
        $a=DB::query("SELECT * from reports r INNER JOIN report_fields rf on r.report_id=rf.report_id INNER JOIN searchcolumn s on rf.field_id=s.scol_id where r.report_id=%i",$_GET['c_id']);  
        $s = DB::query("SELECT * FROM alumni order by ln,batch ASC); //<-- ------------------ this is the part where it works if you add LIMIT 5 in the sql statement

        foreach($s as $m){
            foreach($a as $c){
        $line2 .=

        str_replace(",","",$c['advsearch_name']) . ": " . str_replace(",","",$m[$c['advsearch_col']]) . "<br />";

            }
        $line2 .="<br />";
        }

        $data="$line2";


    }


    // Set some content to print
    $html = <<<EOD
    <hr>
    <table>
    <tr>
        <td width="60%">REPORTS - $rp_name</td>
    </tr>
    </table>
    <br>
    $data
    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);
    ob_end_clean();

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

我错过了什么吗?

谢谢

4

1 回答 1

0

在TCPDF脚本的开头添加此代码:

ob_start();
set_time_limit(0);
ini_set("memory_limit", "256M");
于 2019-01-07T14:05:56.003 回答