Интервал между буквами FPDF

Я пытаюсь установить ширину букв для определенного «блока» текста в fpdf. Я искал и нашел только один способ установить ширину букв для всего документа, и даже это не сработало. Текст отправляется в генератор php fpdf.

$pdf->SetFont('Arial','b',85, LetterSpacing Here?); 

Любая помощь?

К сожалению, вы не можете сделать это напрямую только с функциями FPDF. Здесь вам нужно закодировать новую функцию, которая воссоздает Cell() с некоторыми новыми параметрами …

Но подождите … кто-то уже это сделал!

Он находится здесь: FPDF Add-On by Patrick Benny

Это такая отличная работа, что вам даже не нужно что-то еще! 🙂

Основываясь на других предоставленных ответах, я расширил класс FPDF, который мы используем, чтобы подчеркивание учитывало пользовательский интервал между буквами.

 <?php class Custom_FPDF extends FPDF { protected $FontSpacingPt; // current font spacing in points protected $FontSpacing; // current font spacing in user units function SetFontSpacing($size) { if($this->FontSpacingPt==$size) return; $this->FontSpacingPt = $size; $this->FontSpacing = $size/$this->k; if ($this->page>0) $this->_out(sprintf('BT %.3f Tc ET', $size)); } protected function _dounderline($x, $y, $txt) { // Underline text $up = $this->CurrentFont['up']; $ut = $this->CurrentFont['ut']; $w = $this->GetStringWidth($txt)+$this->ws*substr_count($txt,' ')+(strlen($txt)-1)*$this->FontSpacing; return sprintf('%.2F %.2F %.2F %.2F re f',$x*$this->k,($this->h-($y-$up/1000*$this->FontSize))*$this->k,$w*$this->k,-$ut/1000*$this->FontSizePt); } } 

Пример использования теста:

 $pdf = new Custom_FPDF(); $pdf->AddPage(); $pdf->SetFont('Arial', 'BU', 11); $pdf->SetFontSpacing(3); $pdf->Cell(0, 10, 'Test of letter spacing with underline', 0, 1); $pdf->SetFontSpacing(0); $pdf->Cell(0, 10, 'Test of letter spacing with underline'); $pdf->Output(); 

Протестировано расширение FPDF версии 1.81

Это действительно позволит вам выполнить интервал между буквами:

 // letter-spacing (0 for normal, 0.3 = 33%, 1 = 100%) function SetCharSpacing($cs) { $this->_out(sprintf('BT %.3F Tc ET',$cs*$this->k)); } 

Кредиты: http://fpdf.de/forum/showthread.php?t=3241

Поместите его в свой класс phpdf php.

 function SetFontSpacing( $size ) { if ( $this->FontSpacingPt == $size ) return; $this->FontSpacingPt = $size; $this->FontSpacing = $size / $this->k; if ( $this->page > 0 ) $this->_out( sprintf( 'BT %.3f Tc ET', $size ) ); } 

перед этим добавьте глобальную переменную в класс fpdf; var $ FontSpacingPt;

Надеюсь, что это поможет с лучшим классом fpdf.