【问题标题】:TCPDF ERROR: Some data has already been output, can't send PDF file while trying to put data in viewTCPDF ERROR: Some data has been output, can't send PDF file while trying to put data in view
【发布时间】:2017-01-29 07:30:48
【问题描述】:

我正在尝试将我的 foreach 循环放在我的视图中。当我尝试刷新我的页面时,我遇到了这个错误,也尝试做一些研究并按照说明仍然无法正常工作。这个错误的原因是什么?

控制器

public function testing(){
        $this->load->library('Pdf');
        $this->load->model('newModel');
        $data['accounts'] = $this->newModel->get('users');
        $this->load->view('admin/testing',$data);
    }

查看

    <?php
//============================================================+
// File name   : example_016.php
// Begin       : 2008-03-04
// Last Update : 2013-05-14
//
// Description : Example 016 for TCPDF class
//               Document Encryption / Security
//
// Author: Nicola Asuni
//
// (c) Copyright:
//               Nicola Asuni
//               Tecnick.com LTD
//               www.tecnick.com
//               info@tecnick.com
//============================================================+

/**
 * Creates an example PDF TEST document using TCPDF
 * @package com.tecnick.tcpdf
 * @abstract TCPDF - Example: Document Encryption / Security
 * @author Nicola Asuni
 * @since 2008-03-04
 */

// Include the main TCPDF library (search for installation path).

// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);


// *** Set PDF protection (encryption) *********************

/*
  The permission array is composed of values taken from the following ones (specify the ones you want to block):
    - print : Print the document;
    - modify : Modify the contents of the document by operations other than those controlled by 'fill-forms', 'extract' and 'assemble';
    - copy : Copy or otherwise extract text and graphics from the document;
    - annot-forms : Add or modify text annotations, fill in interactive form fields, and, if 'modify' is also set, create or modify interactive form fields (including signature fields);
    - fill-forms : Fill in existing interactive form fields (including signature fields), even if 'annot-forms' is not specified;
    - extract : Extract text and graphics (in support of accessibility to users with disabilities or for other purposes);
    - assemble : Assemble the document (insert, rotate, or delete pages and create bookmarks or thumbnail images), even if 'modify' is not set;
    - print-high : Print the document to a representation from which a faithful digital copy of the PDF content could be generated. When this is not set, printing is limited to a low-level representation of the appearance, possibly of degraded quality.
    - owner : (inverted logic - only for public-key) when set permits change of encryption and enables all other permissions.

 If you don't set any password, the document will open as usual.
 If you set a user password, the PDF viewer will ask for it before displaying the document.
 The master (owner) password, if different from the user one, can be used to get full document access.

 Possible encryption modes are:
    0 = RSA 40 bit
    1 = RSA 128 bit
    2 = AES 128 bit
    3 = AES 256 bit

 NOTES:
 - To create self-signed signature: openssl req -x509 -nodes -days 365000 -newkey rsa:1024 -keyout tcpdf.crt -out tcpdf.crt
 - To export crt to p12: openssl pkcs12 -export -in tcpdf.crt -out tcpdf.p12
 - To convert pfx certificate to pem: openssl pkcs12 -in tcpdf.pfx -out tcpdf.crt -nodes

*/

$pdf->SetProtection(array('print', 'copy'), '', null, 0, null);

// Example with public-key
// To open the document you need to install the private key (tcpdf.p12) on the Acrobat Reader. The password is: 1234
//$pdf->SetProtection($permissions=array('print', 'copy'), $user_pass='', $owner_pass=null, $mode=1, $pubkeys=array(array('c' => 'file://../config/cert/tcpdf.crt', 'p' => array('print'))));

// *********************************************************


// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('TCPDF Example 016');
$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.'example_016', PDF_HEADER_STRING);

// set header and footer fonts
$pdf->setHeaderFont(Array('helvetica', '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array('helvetica', '', 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 (optional)
if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
    require_once(dirname(__FILE__).'/lang/eng.php');
    $pdf->setLanguageArray($l);
}

// ---------------------------------------------------------

// set font
$pdf->SetFont('times', '', 16);

// add a page
$pdf->AddPage();

// set some text to print
$tbl='
<table cellspacing="0" cellpadding="1" border="1">
        <tr>
            <td>Branch Name</td>
            <td>Amount</td>
            <td>Balance</td>
        </tr>
    ';
foreach ($branches as $b){
$tbl .= '<tr>
        <td>'.$b['branch'].'</td>

    ';
}
foreach($amount as $a){
$tbl .= '
        <td>'.$a['amount_charged'].'</td>

    </tr>'
    ;

    }
$tbl.='

</table>
';
$pdf->writeHTML($tbl, true, false, false, false, '');


// ---------------------------------------------------------

//Close and output PDF document
$pdf->Output('example_016.pdf', 'D');

//============================================================+
// END OF FILE
//============================================================+
?>

型号

public function get($table)
    {
        $result = $this->db->get($table);
        return $result->result_array();
    }

注意:我添加了 ob_start(); // 这是我在做一些研究时看到的 还有 ob_end_clean();

TCPD_Config

    define ('PDF_AUTHOR', 'TCPDF');

    /**
     * Header title.
     */
    define ('PDF_HEADER_TITLE', '504 CEMENTINA STREET | ARNAIZ AVE., PASAY CITY 1013 | 0919-333-3434');

    /**
     * Header description string.
     */
    define ('PDF_HEADER_STRING', "by Try - Tecnick.com\nwww.tcpdf.org");

注意:在我的 tcpdf_config 中,我更改了标题标题

**TCPDF_Autoconfig**

if (!defined('PDF_HEADER_LOGO')) {
    $tcpdf_header_logo = '';
    if (@file_exists(K_PATH_IMAGES.'16358960_120300001889155349_1641985124_n.png')) {
        $tcpdf_header_logo = '16358960_120300001889155349_1641985124_n.png';
    }
    define ('PDF_HEADER_LOGO', $tcpdf_header_logo);
}

注意:在我的 tcpdf_autoconfig 中,我更改了默认图像为 tcpdf_logo 的图像

【问题讨论】:

  • 来自question 我知道你想要在图像之后的新行 在图像之后。所以改为与pdf标题斗争。在标题中只使用图像。在标题之后相应地使用各种字体、换行符等设计正文

标签: php codeigniter tcpdf


【解决方案1】:

您可以使用字符串连接来创建表

$e="1,2,3,4,5";
$arr=explode(',',$e);
$tbl='
<table cellspacing="0" cellpadding="1" border="1">
    ';
foreach ($arr as $e){
$tbl .= '

    <tr>
        <td>'.$e.'</td>
        <td>COL 3 - ROW 2</td>
    </tr>'
    ;

}
$tbl.='

</table>
';


$pdf->writeHTML($tbl, true, false, false, false, '');

输出:

【讨论】:

  • 先生,我怎样才能将我表格的所有数据显示到我的 pdf 中?让它充满活力
  • 动态的意思是,你可以在foreach循环中传递变量数据来创建表格。如果你需要更多帮助,然后给出print_r($accounts)的结果,然后我会用它来制作表格。
  • 先生,我应该如何/在哪里放置新行?在我看来,tcpdf_config 还是 tcpdf_autoconfig?
  • 请提供屏幕截图或图片,显示您的桌子的外观
  • 先生,在 example_16 等部分。我该如何换行?
猜你喜欢
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 2022-12-02
  • 2022-12-27
  • 2022-12-19
  • 2021-06-27
  • 2022-12-01
  • 2020-10-12
相关资源
最近更新 更多