如何从fpdf中的pdf的锚链接中删除下划线

时间:2017-01-28 10:23:43

标签: php pdf fpdf

我们正在使用我们有链接的FPDF制作pdf报告。

我们的问题是我们无法从pdf报告中发送的链接中删除下划线和默认颜色。我们想在不同的链接上设置自定义的不同颜色。

以下是我们正在制作的内容。

$ text22 = preg_replace('/ \ S * \ b('。$ searchphrase [$ rr]。')\ b \ S * / i',' $ 1 ',$ aaa) ;

  

$ text22 = preg_replace('/ \ S * \ b('。$ searchphrase [$ rr]。')\ b \ S * / i',' $ 1 ',$ aaa) ;

     

$ PDF->的WriteHTML(utf8_decode($主));

下面是我们的pdf报告,现在我们必须从链接中删除下划线并在其上设置自定义颜色。

enter image description here

1 个答案:

答案 0 :(得分: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)
  {
	  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);
      }
	  $this->SetStyle('U',true);
	  $this->Write(5,$txt,$URL);
	  $this->SetStyle('U',false);
	  $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();
?>