2013-12-17 3 views
1

Я пытаюсь сгенерировать отчет, используя php. Я следовал this instruction. Однако у меня есть ошибка, которую я не могу решить. Это ошибка, которую я получаю неоднократно.PHP Генерировать отчет (JasperReports) TCPDF ОШИБКА:

TCPDF ERROR: Некоторые данные уже выведены, не могут отправлять PDF-файл.

Ниже мой PHP код

 <html> 
    <head> 
     <meta charset="UTF-8"> 
     <title></title> 
    </head> 
    <body> 
     <form method="POST" action=""> 
      <input type="hidden" name="submit" value=""> 
     <input type="submit" name="commit" value="Login"> 
     </form>   
    </body> 
</html> 
<?php 
if(isset($_POST['submit'])) 
{ 
//Import the PhpJasperLibrary 
include_once("PhpJasperLibrary/tcpdf/tcpdf.php"); 
include_once("PhpJasperLibrary/PHPJasperXML.inc.php"); 



    //database connection details 

$server="localhost"; 
$db="hotel"; 
$user="root"; 
$pass=""; 
$version="0.8b"; 
$pgport=5432; 
$pchartfolder="./class/pchart2"; 



//display errors should be off in the php.ini file 
ini_set('display_errors', 0); 

//setting the path to the created jrxml file 
$xml = simplexml_load_file("Report/report9.jrxml"); 

$PHPJasperXML = new PHPJasperXML(); 
//$PHPJasperXML->debugsql=true; 
//$PHPJasperXML->arrayParameter=array("parameter1"=>1); 
$PHPJasperXML->xml_dismantle($xml); 

$PHPJasperXML->transferDBtoArray($server,$user,$pass,$db); 
$PHPJasperXML->outpage("I"); //page output method I:standard output D:Download file 

}?> 

Это мой jrxml

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report9" language="groovy" pageWidth="460" pageHeight="800" columnWidth="420" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"> 
    <property name="ireport.zoom" value="1.0"/> 
    <property name="ireport.x" value="0"/> 
    <property name="ireport.y" value="0"/> 
    <queryString> 
     <![CDATA[SELECT * FROM hkschedule]]> 
    </queryString> 
    <field name="scheduleid" class="java.lang.Integer"/> 
    <field name="staffID" class="java.lang.String"/> 
    <field name="day" class="java.lang.String"/> 
    <field name="TimeRange" class="java.lang.String"/> 
    <background> 
     <band splitType="Stretch"/> 
    </background> 
    <title> 
     <band height="79" splitType="Stretch"/> 
    </title> 
    <pageHeader> 
     <band height="35" splitType="Stretch"/> 
    </pageHeader> 
    <columnHeader> 
     <band height="30" splitType="Stretch"> 
      <staticText> 
       <reportElement x="13" y="0" width="100" height="20"/> 
       <textElement/> 
       <text><![CDATA[scheduleid]]></text> 
      </staticText> 
      <staticText> 
       <reportElement x="156" y="0" width="100" height="20"/> 
       <textElement/> 
       <text><![CDATA[day]]></text> 
      </staticText> 
      <staticText> 
       <reportElement x="285" y="0" width="100" height="20"/> 
       <textElement/> 
       <text><![CDATA[TimeRange]]></text> 
      </staticText> 
     </band> 
    </columnHeader> 
    <detail> 
     <band height="33" splitType="Stretch"> 
      <textField> 
       <reportElement x="13" y="0" width="100" height="20"/> 
       <textElement/> 
       <textFieldExpression><![CDATA[$F{scheduleid}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="156" y="0" width="100" height="20"/> 
       <textElement/> 
       <textFieldExpression><![CDATA[$F{day}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="285" y="0" width="100" height="20"/> 
       <textElement/> 
       <textFieldExpression><![CDATA[$F{TimeRange}]]></textFieldExpression> 
      </textField> 
     </band> 
    </detail> 
    <columnFooter> 
     <band height="45" splitType="Stretch"/> 
    </columnFooter> 
    <pageFooter> 
     <band height="54" splitType="Stretch"/> 
    </pageFooter> 
    <summary> 
     <band height="42" splitType="Stretch"/> 
    </summary> 
</jasperReport> 

ответ

1

Пожалуйста, обратите внимание, что в вашем коде PHP вы написали некоторые HTML теги, которые на самом деле причина ошибки «TCPDF ERROR : Некоторые данные уже выведены, не могут отправить файл PDF. ".

Так что, если вы хотите создать файл PDF, в вашем коде PHP, вам не нужно писать HTML теги или любые PHP печати заявления, как эхо, печать и т.д.

сделать в соответствии с заданными шагами: -

1. Сохраните HTML-код в create_report.html: -

<html> 
<head> 
    <meta charset="UTF-8"> 
    <title></title> 
</head> 
<body> 
    <form method="POST" action="create_report_view.php"> 
     <input type="hidden" name="submit" value=""> 
    <input type="submit" name="commit" value="Login"> 
    </form>   
</body> 

======================== ================================================== === =======

2. и сохранить PHP код в create_report_view.php: -

<?php 

    if(isset($_POST['submit'])) 
    { 
    //Import the PhpJasperLibrary 

    include_once("PhpJasperLibrary/tcpdf/tcpdf.php"); 
    include_once("PhpJasperLibrary/PHPJasperXML.inc.php"); 
    //database connection details 

    $server="localhost"; 
    $db="hotel"; 
    $user="root"; 
    $pass=""; 
    $version="0.8b"; 
    $pgport=5432; 
    $pchartfolder="./class/pchart2"; 


    //display errors should be off in the php.ini file 
    ini_set('display_errors', 0); 

    //setting the path to the created jrxml file 
    $xml = simplexml_load_file("Report/report9.jrxml"); 

    $PHPJasperXML = new PHPJasperXML(); 
    //$PHPJasperXML->debugsql=true; 
    //$PHPJasperXML->arrayParameter=array("parameter1"=>1); 
    $PHPJasperXML->xml_dismantle($xml); 

    $PHPJasperXML->transferDBtoArray($server,$user,$pass,$db); 
    $PHPJasperXML->outpage("I"); //page output method I:standard output D:Download file 

}>

============ ================================================== =======================

Надеюсь, это поможет вам создать отчет в формате pdf.

Если вы хотите сделать вышеприведенную вещь на одной странице php, вам просто нужно использовать некоторые всплывающие окна javascript.

Смежные вопросы