我在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));
答案 0 :(得分:0)
前段时间我遇到了同样的问题。事实是,当pdf太大时,dompdf会抛出错误。我现在无法找到解决方法,因为我无法再访问代码了。
尝试检查apache错误日志文件。如果您发现此错误,那么您可以使用错误消息谷歌搜索答案。
需要一些简单的源代码来修复此问题。