2017-01-28 2 views
-1

мы делаем PDF-отчет, используя FPDF, в котором у нас есть ссылки.Как удалить Underline из ссылки привязки pdf в fpdf

Наша проблема заключается в том, что мы не можем удалить подчеркивание и цвет по умолчанию из ссылки, которую мы отправили в отчете в формате pdf. и мы хотим установить особый цвет на разные ссылки.

ниже - это то, что мы делаем.

$ text22 = preg_replace ('/ \ S * \ Ъ (' $ searchphrase [$ Р.Р.] ') \ Ъ \ S */I', '$ 1', $ ааа..);

$ text22 = preg_replace ('/ \ S * \ Ъ (' $ searchphrase [$ Р.Р.] ') \ Ъ \ S */I', '$ 1', $ ааа..);

$ pdf-> WriteHTML (utf8_decode ($ main));

Ниже представлен наш pdf-отчет, теперь мы должны удалить подчеркивание из ссылки и установить на нем собственный цвет.

enter image description here

ответ

0

Вы, возможно, придется расширить класс FPDF себя и изменить подчеркивание/цвет в функции PutLink.

http://www.fpdf.org/en/script/script50.php

Редактировать

Вот пример кода расширения класса FPDF. На самом деле, поскольку функция WriteHTML отсутствует в классе FPDF, это расширяет класс, в котором он есть. Это один из многих способов заставить его работать. В этом примере вам нужно указать цвет ссылки в дополнительном атрибуте (data-color), поскольку класс не может читать правила CSS. Вы могли бы, конечно, написать регулярное выражение для анализа CSS, а затем перевести цвета в r, g, b. Но для более простого примера я оставил это.

<?php 
 

 
// This class extends the Tutorial 6 class, which in turn extends the main FPDF class 
 
class XPDF extends PDF 
 
{ 
 
    protected $clr = ""; 
 

 
    function OpenTag($tag, $attr) 
 
    { 
 
\t parent::OpenTag($tag, $attr); 
 
    if ($tag == "A") 
 
    { 
 
     if (isset($attr['DATA-COLOR'])) 
 
     { 
 
     
 
     $this->clr = $attr['DATA-COLOR']; 
 
     } 
 
     else 
 
     { 
 
     $this->clr = ""; 
 
     } 
 
    } 
 
    } 
 
    
 
    function CloseTag($tag) 
 
    { 
 
    parent::CloseTag($tag); 
 
    if ($tag == "A") 
 
     $this->clr = ""; 
 
    } 
 

 
    function PutLink($URL, $txt) 
 
    { 
 
     // Put a hyperlink 
 
     if ($this->clr != "") 
 
     { 
 
     $clrs = explode(",", $this->clr); 
 
     $this->SetTextColor($clrs[0], $clrs[1], $clrs[2]); 
 
     } 
 
     else 
 
     { 
 
     $this->SetTextColor(0,0,255); 
 
     } 
 
\t $this->SetStyle('U',true); 
 
\t $this->Write(5,$txt,$URL); 
 
\t $this->SetStyle('U',false); 
 
\t $this->SetTextColor(0); 
 
    } 
 
} 
 

 
$html = 'This is some text and <a href="http://www.whatever.com">here is a link</a>. To specify the pdf colour of a link, you need to specify it as RGB numbers in a data-attribute, like <a href="http://www.whatever.com" data-color="255,0,0">this</a> or <a href="http://www.whatever.com" data-color="255,0,100">this</a>.'; 
 

 
$pdf = new XPDF(); 
 
// First page 
 
$pdf->AddPage(); 
 
$pdf->SetFont('Arial','',14); 
 
$pdf->WriteHTML($html); 
 
$pdf->Output(); 
 
?>

+0

мы уже сделали ссылки через якорный тег, но мы хотим, чтобы удалить подчеркивание и изменить цвет тега привязки. любезно предложите. – Harinarayan

+0

Да. Посмотрите на расширение класса FPDF и переопределите функцию PutLink. Дайте мне знать, что вы не понимаете, и я уточню. –

+0

$ text22 = preg_replace ('/ \ S * \ b ('. $ Searchphrase [$ rr]. ') \ B \ S */i', '$1', $ aaa); Этот код, когда мы запускаем в браузере, отлично работает, но когда мы передаем $ text22 в pdf в виде $ pdf-> WriteHTML (utf8_decode ($ text22)); стиль css не работает. Все анкеры синего цвета и подчеркнуты, но мы хотим, чтобы весь якорь был разного цвета и не подчеркивался. – Harinarayan

Смежные вопросы