带表pdf的Dompdf包含错误

时间:2012-02-26 12:13:05

标签: php cakephp pdf-generation dompdf

我在cakephp 1.3应用程序中使用dompdf 0.6.0 beta 3作为供应商。我的服务器的PHP版本是5.2。我作为附件生成的pdf包含用html帮助器生成的表,并且在头中声明了css。

我有一个非常奇怪的问题。通常生成的pdf没有问题,但是在生成的pdf的大约10%中,该文件包含错误并且仅部分呈现。没有致命的错误,但不知何故pdf生成是不对的。更奇怪的是,它与PHP代码在Session变量中采用的数据完全相同。因此有时会生成相同的数据而没有任何问题(在90%的情况下),有时会出现问题。

如果你对这个问题有什么了解,谢谢你。

以下是生成pdf的代码。 (Journal是我创建的帮助器,函数Journal :: journalCheck输出一个表)

$html = 
'<html xmlns="http://www.w3.org/1999/xhtml">'.
    '<head>'.
        $this->Html->charset().
        '<style>

            ul{
                margin: 0px;
            }
            .enonces p{
                margin:0px;
            }
            table{
                border-collapse: collapse;
                width:100%;
                margin-bottom: 25px;
            }    
            table.legende{
                width:25%;
            }

            td{
                border: 1px solid black;
            }

            th{
                border: 1px solid black;
                background-color: #96ed88;
            }
            .noEcriture{
                width:5%;
            }

            .nomCompte{
                width:15%;
            }

            .montantCompte{
                width: 10%;
                text-align: right;
            }

            .libelle{
                width: 45%;
                min-width: 65px;
            }
            .faux{
                color: red;
                text-decoration:line-through;
            }
            .ecriture_fausse{
                background-color: pink;
            }
            td.correction_cell{
                background-color: #daafe7;
            }
            .consigne{
                font-style:italic;
            }

            .enonces{
                border: 1px solid black;
                margin-bottom: 20px;
            }

        </style>'.
    '</head>'.
    '<body>'.
        '<h1>'.
            $exercice[0]['Exercice']['nom'].
        '</h1>'.
        '<h3>'.
            'Exercice réalisé par '.$session->read('eleve.Exercice.prenom').'                            '.$session->read('eleve.Exercice.nom_famille').
            ' - version '.$session->read('exercice.'.$this->params['pass'][0].'version').
            ' - '.date('d/m/Y').
        '</h3>'.
        '<p class="consigne">'.
            $this->Journal->showConsigne($exercice[0]['Exercice']['consigne'],$raw = true).
        '</p>'.
        '<div class="enonces">'.
            $this->Journal->viewEnonce($enonces).
        '</div>'.
        $this->Journal->journalCheck($datas,$correct_datas,$ecriture_ids,$compte_ids,array('pdf'=>true)).
        '<p>'.
            'Légende:'.
        '</p>'. 
        '<table class="legende">'.
            $this->Html->tableCells(array(array('écriture juste'),
                                    array(array('écriture fausse',array('class'=>'ecriture_fausse'))),
                                    array(array('corrigé',array('class'=>'correction_cell'))))
                                    ).
        '</table>'.       
        '<p>'.
            'Source: <a href="'.$_SERVER['HTTP_HOST']."/".basename(ROOT)."/"."exercices/complete/".$this->params['pass'][0].'">'.
            $_SERVER['HTTP_HOST']."/".basename(ROOT)."/"."exercices/complete/".$this->params['pass'][0].'</a>'.             
        '</p>'.
    '</body>'.
'</html>';

$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("Journalizer_".$exercice[0]['Exercice']['nom']."_".$session->read('eleve.Exercice.nom_famille')."_".$session->read('eleve.Exercice.prenom')."_v".$session->read('exercice.'.$this->params['pass'][0].'version').".pdf", array("Attachment" => 1));

1 个答案:

答案 0 :(得分:0)

前段时间我遇到了同样的问题。事实是,当pdf太大时,dompdf会抛出错误。我现在无法找到解决方法,因为我无法再访问代码了。

尝试检查apache错误日志文件。如果您发现此错误,那么您可以使用错误消息谷歌搜索答案。

需要一些简单的源代码来修复此问题。