Я использую скрипт FPDF для разработки файла .pdf.Помимо этого, также используется функция WriteHTML () для сборки части файла .pdf из HTML.Все работает нормально, кроме части оправдания этой HTML-части текста.Я менял скрипт HTML_TO_PDF, а также оригинальный скрипт FPDF.Когда я пытаюсь написать текст с помощью функции MultiCell (), он может выравнивать текст, но жирные части помещаются в новую строку.Я хотел удалить эту функциональность.Затем я пришел к идее преобразовать функцию Write () в FPDF, чтобы она могла только оправдывать текст.Я добавил часть кода из функции MultiCell () в функцию Write () для выравнивания текста.Результатом этого является оправданный текст, но с некоторыми совпадениями, которые я не могу удалить.Это перекрытие появляется, когда текст становится жирным.Я не совсем уверен, как удалить это перекрытие.Я пытался манипулировать переменными, которые используются для вычисления ws (расстояние между словами), но безуспешно.Функция Write () без части выравнивания текста, дает мне выравнивание текста по левому краю без наложений.Я хочу получить обоснованный текст без наложений.Любая рекомендация будет полезна:)
Это функция преобразования Write ():
function Write($h, $txt, $link='', $align='J')
{
// Output text in flowing mode
if(!isset($this->CurrentFont))
$this->Error('No font has been set');
$cw = &$this->CurrentFont['cw'];
$w = $this->w-$this->rMargin-$this->x;
$wmax = ($w-2*$this->cMargin)*1000/$this->FontSize;
$s = str_replace("\r",'',$txt);
$nb = strlen($s);
$sep = -1;
$i = 0;
$j = 0;
$l = 0;
$ns = 0; //I copied this from MultiCell() function
$nl = 1;
while($i<$nb)
{
// Get next character
$c = $s[$i];
if($c=="\n")
{
// Explicit line break
$this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',false,$link);
$i++;
$sep = -1;
$j = $i;
$l = 0;
if($nl==1)
{
$this->x = $this->lMargin;
$w = $this->w-$this->rMargin-$this->x;
$wmax = ($w-2*$this->cMargin)*1000/$this->FontSize;
}
$ns = 0;
$nl++;
continue;
}
if($c==' '){
$sep = $i;
$ls = $l; //also this part
$ns++; //this too
}
$l += $cw[$c];
if($l>$wmax)
{
// Automatic line break
if($sep==-1)
{
if($this->x>$this->lMargin)
{
// Move to next line
$this->x = $this->lMargin;
$this->y += $h;
$w = $this->w-$this->rMargin-$this->x;
$wmax = ($w-2*$this->cMargin)*1000/$this->FontSize;
$i++;
$nl++;
continue;
}
if($i==$j)
$i++;
$this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',false,$link);
}
else
{
//this is part for text align
if($align=='J')
{
$this->ws = ($ns>1) ? ($wmax-$ls)/1000*$this->FontSize/($ns-1) : 0;
$this->_out(sprintf('%.3F Tw',$this->ws*$this->k));
//echo $this->ws*$this->k . "\n";
}
//to here
$this->Cell($w,$h,substr($s,$j,$sep-$j),0,2,'',false,$link);
$i = $sep+1;
}
$sep = -1;
$j = $i;
$l = 0;
$ns = 0;
if($nl==1)
{
$this->x = $this->lMargin;
$w = $this->w-$this->rMargin-$this->x;
$wmax = ($w-2*$this->cMargin)*1000/$this->FontSize;
}
$nl++;
}
else
$i++;
}
// Last chunk
if($i!=$j)
$this->Cell($l/1000*$this->FontSize,$h,substr($s,$j),0,0,'',false,$link);
}
Результат этих изменений показан на рисунке:
![enter image description here](https://i.stack.imgur.com/SSGwp.png)