Dompdf с таблицей PDF содержит ошибку - PullRequest
0 голосов
/ 26 февраля 2012

В качестве поставщика я использую dompdf 0.6.0 beta 3 в приложении cakephp 1.3. Php версия моего сервера 5.2. PDF-файл, который я генерирую как вложение, содержит таблицы, созданные с помощью html helper, а css объявлен в заголовке

У меня очень странная проблема. Обычно нет проблем с сгенерированным pdf, но примерно в 10 процентах сгенерированного pdf файл содержит ошибку и отображается только частично. Не существует фатальной ошибки, но как-то не правильно генерировать PDF. Еще более странно, что это происходит с точно такими же данными, что и код php в переменных Session. Таким образом, одни и те же данные иногда генерируются без проблем (в 90% случаев), а иногда возникает проблема.

Спасибо, если у вас есть подсказка о том, в чем может быть проблема.

Вот код, который генерирует PDF. (Журнал - это помощник, который я создал, и функция 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 голосов
/ 26 февраля 2012

У меня была такая же проблема некоторое время назад. Дело в том, что dompdf выдавал ошибку, когда pdf был слишком большим. Я не могу найти решение для этого сейчас, потому что у меня больше нет доступа к коду.

Попробуйте проверить файл журнала ошибок apache. И если вы найдете эту ошибку, то вы можете поискать ответ в Google, используя сообщение об ошибке.

Чтобы исправить это, потребовалось простое редактирование в одну строку.

...