【问题标题】:RTL Justify allignment issue in TCPDFTCPDF 中的 RTL 对齐对齐问题
【发布时间】:2019-12-12 00:17:39
【问题描述】:

我正在研究 TCPDF。当我在 MultiCell 中使用 justify 时,我有 3 行 RTL 文本,最后一行从左侧开始(它应该从右侧开始)。

$txt = 'السلام عليكم السلام عليكم السلام عليكم السلام عليكم السلام عليكم السلام عليكم السلام عليكم السلام عليكم السلام عليكم السلام عليكم السلام عليكم السلام عليكم السلام عليكمالسلام عليكمالسلام عليكم
';

$pdf->MultiCell(170, 0, $txt."\n", 0, 'J', false, 1);

当我尝试使用 WriteHTML 时,结果是一样的

$htmlpersian = '<p align="justify" dir="rtl" >
السلام عليكم السلام عليكم السلام عليكم السلام عليكم السلام عليكم السلام عليكم السلام عليكم السلام عليكم السلام عليكم السلام عليكم السلام عليكم السلام عليكم السلام عليكمالسلام عليكمالسلام عليكم   
</p>';
$pdf->WriteHTML($htmlpersian."\n", true, 0, true, 0);

"\n" 被添加到字符串中以防止最后一行对齐

【问题讨论】:

  • 你到底想问什么?
  • @sɐunıɔןɐqɐp 让最后一行右对齐
  • 您是否尝试使用:&lt;p align="right" dir="rtl" &gt;
  • @sɐunıɔןɐqɐp 它没用

标签: php html tcpdf


【解决方案1】:

这是我想出的一个解决方法,但它需要使用不同的文本手动调整额外的灵敏度变量,这基本上是将最后一行写在一个单独的单元格中,向右对齐。

$textexploded   =   explode(" ",$lettertext);                   // create array of words
$lettercount    =   mb_strlen($lettertext,'UTF-8');             // Get total number of characters of the whole text
$linesnum       =   $lettercount / $linechar;                    // divide number of characters over sensitivity number "how many letters per line"
$whole          =   floor($linesnum);                       // before decimal       
$fraction       =   $linesnum - $whole;                      // decimal
$last           =   $fraction * $linechar;                   // estimate number of characters of last line 
$last           =   $last - 3;                                  // refining

if (    $lettercount >= $linechar   ) {                     // Proceed of text characters are more than one line limit
    $total = 0;
    for ($x = count($textexploded); $total < $last; $x--) {   // Start at the end of the words array
        $total += mb_strlen($textexploded[$x-1],'UTF-8');    // Estimate at what array word last line starts
    }

    $slice_position = array_search($x, array_keys($textexploded));  // determine the slice position of the original text 
    $a1 = array_slice($textexploded, 0, $slice_position, true);     // Slice the first lines 
    $a2 = array_slice($textexploded, $slice_position, count($textexploded), true);  //slice the last line
    $a1 = implode(" ",$a1);                                         // recombine words 
    $a2 = implode(" ",$a2);                                         // recombine words 

    $pdf->MultiCell(190, 0, '       '.$a1, 0, 'J', 0, 1, '', '', false, 2, false, true, 0, 'M');
    $pdf->Cell(0, 6, $a2, 0, 0, 'R', 0, '', 0, false, 'T', 'M');
} else {
    $pdf->Cell(0, 6, $lettertext, 0, 0, 'R', 0, '', 0, false, 'T', 'M');
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    相关资源
    最近更新 更多