TCPDF仅显示字符串的第一个字符

时间:2016-04-01 10:21:00

标签: php tcpdf

我是使用TCPDF库的新手,我遇到了Write和MultiCell功能问题。我不知道为什么有时TCPDF只打印给定字符串的第一个字符。

这就是我的print_r($ row)

的样子
Array(
[0] => 
[codDefinitivo] => 
[1] => Best Spot
[seccion] => Best Spot
[2] => 
[colaboradora] => 
[3] => KELER
[marca] => KELER
[4] => KELER
[anunciante] => KELER
[5] => DIMENSION
[inscrito_pr] => DIMENSION
[6] => ARZAK Y KELER, HISTORIAS PARALELAS
[titulo] => ARZAK Y KELER, HISTORIAS PARALELAS
[7] => DIMENSION
[agencia] => DIMENSION
[8] => Bebidas alcohólicas
[categoria] => Bebidas alcohólicas
[9] => Nacer en Donostia, la pasión por el sabor y una apuesta por la intensidad son algunas de las características que Arzak  y Keler tienen en común.? El spot crea un paralelismo entre la vida de Arzak y la de Keler como referentes donostiarras del sabor y de la intensidad. Esta historia, puede ser narrada igualmente por keler, Y ese es el juego de la historia, el paralelismo entre los dos protagonista, la confusión, el ?de quien hablo?, de Juan Mari Arzak.. o de KELER.
[descripcion] => Nacer en Donostia, la pasión por el sabor y una apuesta por la intensidad son algunas de las características que Arzak  y Keler tienen en común.? El spot crea un paralelismo entre la vida de Arzak y la de Keler como referentes donostiarras del sabor y de la intensidad. Esta historia, puede ser narrada igualmente por keler, Y ese es el juego de la historia, el paralelismo entre los dos protagonista, la confusión, el ?de quien hablo?, de Juan Mari Arzak.. o de KELER.)

当我使用$ row [' seccion']或$ row [' descripcion']时,结果只是两个字符串中的第一个字符...我不会&#39我不知道我错过了什么。

这就是我编写Write和MultiCell函数的方式

$pdf->MultiCell (66, 10, $row['descripcion'], 0, 'L', false, 1, 75, 38, true, 0, false, true, 0, 'T', false);
$pdf->Write(2, $row['seccion'], '', 0, 'L', true, 0, false, false, 0);

如果我将内容$row[descripccion]复制到MultiCell函数中,TCPDF会正确输出

$pdf->MultiCell (67, 10, "Nacer en Donostia, la pasión por el sabor y una apuesta por la intensidad son algunas de las características que Arzak  y Keler tienen en común.? El spot crea un paralelismo entre la vida de Arzak y la de Keler como referentes donostiarras del sabor y de la intensidad. Esta historia, puede ser narrada igualmente por keler, Y ese es el juego de la historia, el paralelismo entre los dos protagonista, la confusión, el ?de quien hablo?, de Juan Mari Arzak.. o de KELER.", 0, 'L', false, 1, 75, 38, true, 0, false, true, 0, 'T', false);

php脚本如下 [...]

$result = mysql_query($sql,$link_kobal);

while($row = mysql_fetch_array($result))
{
    $pdf->SetFont($fontNameTitol, 'B', $tamanyFont);
    $pdf->Write(2, $row['seccion'], '', 0, 'L', true, 0, false, false, 0);

    $pdf->SetFont('helvetica', '', 8);


    // Descripció
    $pdf->SetXY(75, 35);
    $pdf->SetFont('helvetica', 'B', 8);
    $pdf->Write(2, 'Descripción', '', 0, 'L', true, 0, false, false, 0);

    $pdf->SetFont('helvetica', '', 8);
    $pdf->MultiCell (67, 10, $row['descripcion'], 0, 'L', false, 1, 75, 38, true, 4, false, true, 0, 'T', false);
}

感谢您的建议!

2 个答案:

答案 0 :(得分:1)

大家好,感谢您的帮助!

我解决了我的问题。现在,TCPDF的MultiCell或Write功能显示所有数据。解决方案是以这样的方式添加utf8_encode函数:$pdf->MultiCell (67, 10, utf8_encode($row['descripcion']), 0, 'L', false, 1, 75, 38, true, 4, false, true, 0, 'T', false);

希望对某人有用!

答案 1 :(得分:0)

对于我来说,当我向它传递无效的UTF-8字符串时,TCPDF的反应方式相同。使用mb_substr($ text,0,$ max_length,'UTF-8')代替mb_substr($ text,0,$ max_length)解决了这个问题。我怀疑您的解决方案(utf8_encode)会间歇性地修复代码中较早出现的错误。