我正在使用tcpdf在我的webapp中创建pdf文件。
我正在使用tcpdf的writeHtml()函数并尝试将一些希伯来语与英语混合,
当尝试将两种语言组合在同一行时,输出方向错误。
例如- 这是我的一段代码:
$pdf = new TCPDF ( PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false );
$pdf->SetDisplayMode ( "default", "OneColumn" );
$pdf->setRTL ( false );
$pdf->SetFont ( 'freeserif', '', 10, '' );
$html = '<body style="text-align: center">';
$html .= "<p> some words in english ואחכ כמה מילים בעברית </p>";
$html .= "<p> כמה מילים כתובות בעברית and then some words in english</p>";
$html .= '</body>';
$pdf->AddPage ();
$pdf->writeHTML ( $comments_table, true, false, true, false, 'R' );
$pdf->Output ( $path, 'F' );
预期的输出将是:
英语中的一些单词ואחככמהמיליםבעברית
כמהמיליםכתובותבעברית,然后是一些英文单词。
但是每种语言的第二语言都是以反对顺序排列的 我的输出是:
英语中的一些单词בעבריתמיליםכמהואחכ
כמהמיליםכתובותבעבריתenglish in words then
你可以看到 - 在第一行中英语是好的 - 而希伯来语没有,在第二行中希伯来语是好的而英语不是
答案 0 :(得分:1)
我从tcpdf切换到内置支持双向语言的mpdf
答案 1 :(得分:0)
尝试使用display_errors
在span
标记中包装希伯来语块。我知道这可以在浏览器中使用,只是不确定dir="rtl"
。您也可以在TCPDF
个标签中包含混合英语和希伯来语的完整句子。
答案 2 :(得分:0)
根据this tutorial from w3.org about bidirectional text:
对于内嵌文字,紧密包装标记中的所有反方向短语 这确定了他们的基本方向。
所以你的代码应该是这样的:
DB_Main
答案 3 :(得分:0)
使用setRTL():
...
$pdf->setRTL(true);
$pdf->writeHTML($html, true, false, true, false, '');
答案 4 :(得分:0)
要使输出正确显示RTL或LTR写入方向,只需从解决方案中检查当前方向并将其存储在$ direction变量中,然后检查是否为RTL。 将此添加到您的代码中:
$direction = $user->get_config("direction");
$style = "";
if ($direction == "rtl"){
$style = "
<style> h1,h2,h3,h4,h5,div,p,table,thead,tr,td {
direction:rtl !important; text-align: right !important;}
</style>";
}
然后在将任何内容放入$ html变量之前将其添加
$html = $style . "<HTML CODE>";
最后打印输出:
$pdf->writeHTML($html, true, false, false, false, '');