Php TCPDF:writeHTML在链接描述包含某些unicode情况时无法输出

Php TCPDF:writeHTML在链接描述包含某些unicode情况时无法输出,php,pdf,unicode,pdf-generation,tcpdf,Php,Pdf,Unicode,Pdf Generation,Tcpdf,经过一天的调试,我确信当tcpdf使用writeHTML时,会有一些可疑之处,其中的链接描述中包含unicode 在WIN上的开发系统上,我们使用示例6()解决了最初的问题,并在第116行之后添加了以下部分: $html = ''; $html .= 'Unicode testcase for chars like: U+00E0 / à / c3 a0 / LATIN SMALL LETTER A WITH GRAVE:<br>'; $html .= '0a: <a hre

经过一天的调试,我确信当tcpdf使用writeHTML时,会有一些可疑之处,其中的链接描述中包含unicode

在WIN上的开发系统上,我们使用示例6()解决了最初的问题,并在第116行之后添加了以下部分:

$html = '';
$html .= 'Unicode testcase for chars like: U+00E0 / à / c3 a0 / LATIN SMALL LETTER A WITH GRAVE:<br>';

$html .= '0a: <a href="http://www.tecnick.com">Il sindaco del Rione Sanità to http://www.tecnick.com</a><br>';
$html .= '0b: <a href="http://www.tecnick.com">Il sindaco del Rione Sanità </a><br>';
#$html .= '0c: <a href="http://www.tecnick.com">Il sindaco del Rione Sanità</a><br>';               #<wont work

$html .= '1a: ' . 'Il sindaco del Rione Sanità' . '<br />';
$html .= '1b: <a href="http://www.google.com">link</a><br />';
#$html .= '1c: <a href="http://www.google.com">Il sindaco del Rione Sanità</a><br />';              #<wont work

$html .= '<table>';
$html .= '<tr><td>2a: ' . 'Il sindaco del Rione Sanità' . '</td></tr>';
$html .= '<tr><td>2b: <a href="http://www.google.com">link</a></td></tr>';
#$html .= '<tr><td>2c: <a href="http://www.google.com">Il sindaco del Rione Sanità</a></td></tr>';  #<wont work
$html .= '</table>';

$pdf->writeHTML($html, true, false, true, false, '');
$html='';
$html.='Unicode字符测试用例,如:U+00E0/A/c3a0/带GRAVE的拉丁文小写字母A:
'; $html.=“0a:
”; $html.=“0b:
”; #$html.=“0c:
”#writeHTML($html,true,false,true,false,”);
运行PHP7.4.9,取消注释三个注释行中的任何一行都会导致完整的HTML块在PDF中无法添加/可见。比较0b0c,该行中只有一个空格会发生变化。一些测试还明确涉及utf8_编码文本,并产生了相同的结果

使情况复杂化:我们将这个确切的示例移动到另一台在FreeBSD上运行PHP7.4.12的服务器上,所有的示例都运行良好。因此,我们责怪开发人员,回到原始数据集,期望问题得到解决。但它只是在另一个背景下重新出现。我们再次验证了这确实是link/unicode的组合造成的

只是想详细说明一下我们的来历:在我们真正的问题中

  • 我们首先通过将所有unicode字符串添加到HTML块来测试它们是否正常
  • 在完全相同的上下文中,我们通过在描述中添加“link”来测试链接,没有问题
  • 将(1)中的unicode字符串组合为(2)中的链接描述,在涉及某些unicode字符时,整个HTML块将不显示>失败
  • TL:DR:

    $pdf->writeHTML('UNICODESTUFF', true, false, true, false, '');  >works  
    $pdf->writeHTML('<a href="xxx">ASCII</a>', true, false, true, false, '');  >works  
    $pdf->writeHTML('<a href="xxx">UNICODESTUFF</a>', true, false, true, false, '');  >might break
    
    $pdf->writeHTML('UNICODESTUFF',true,false,true,false',);>作品
    $pdf->writeHTML('',真,假,真,假,'');>作品
    $pdf->writeHTML('',真,假,真,假,'');>可能破裂