1

我正在使用 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' );

预期的输出将是:

一些英语单词 ואחכ כמה מילים בעברית

כמה מילים כתובות בעברית 然后是一些英文单词。

但是每种语言的第二种语言中的单词都以相反的顺序出现,我的输出是:

一些英语单词 בעברית מילים כמה ואחכ

כמה מילים כתובות בעברית 英语单词有些然后和

如您所见-在第一行中,英语还可以-希伯来语不是,在第二行中,希伯来语还可以,而英语不是

4

5 回答 5

1

根据w3.org 关于双向文本的本教程

对于内联文本,将所有相反方向的短语紧紧包裹在设置其基本方向的标记中。

所以你的代码应该是这样的:

$html = '<body style="text-align: center">
            <span> some words in english<span>
            <span>ואחכ כמה מילים בעברית <br> כמה מילים כתובות בעברית<span>
            <span>and then some words in english</span>
        </body>';

$pdf->AddPage();

$pdf->writeHTML( $html, true, false, true, false, '' );
于 2015-08-25T03:27:26.373 回答
1

我从 tcpdf 切换到 mpdf,它内置了对双向语言的支持

于 2015-08-29T11:21:27.710 回答
0

使用 setRTL():

...
$pdf->setRTL(true);
$pdf->writeHTML($html, true, false, true, false, '');
于 2017-10-26T08:16:00.233 回答
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, '');
于 2018-07-01T08:11:44.853 回答
-1

尝试将希伯来语块包装在span带有dir="rtl". 我知道这可以在浏览器中使用,只是不确定TCPDF. 您还可以在这些span标签中包含混合了英语和希伯来语的整个句子。

于 2015-06-02T04:39:25.537 回答