2016-07-29 44 views
2

我正在尝试使用Dashes script在fPDF中创建一条虚线。FPDF虚线未打印

当我生成PDF时,虚线呈现正确,但是当我尝试打印时,它不显示。我尝试过使用不同设置的多台打印机。

这里是我的代码:

$x = $pdf->GetX(); 
$y = $pdf->GetY(); 
$pdf->Image(SCRIPT_ROOT."/images/pdf-cut.png",$x,$y,4,4); 
$pdf->SetDash(4,2); 
$pdf->SetLineWidth(0.2); 
$pdf->Line(17,$y+2,200,$y+2); 
$pdf->SetDash(); 

而且它看起来呈现时一样:

Rendered Dashed Line

打印时,剪刀显示出来,而不是虚线。

任何帮助,将不胜感激!谢谢! :)

回答

0

我在工作中遇到了这个问题。虚线总是出现在PDF查看器中,但在某些打印机(或某些打印机驱动程序)上,虚线会丢失。将此功能添加到您的班级,以便以任意角度在两个坐标之间绘制多条线段。注意:$ dlen是破折号的长度,$ freq是它们被放置的频率。

public function SegmentedLine($x,$y,$x2,$y2,$dlen = 1,$freq = 3){ 
    if($x == $x2 and ($y2 - $y) < 0){ // vertical up 
     $angle = M_PI * 1.5; 
    }elseif($x == $x2){     // vertical down 
     $angle = M_PI * 0.5; 
    }else{        // not vertical 
     $angle = ($y2 - $y)/($x2 - $x); 
     $angle = atan($angle); 
    } 
    if($x > $x2){      // NW or SW quadrant from start. 
     $angle = M_PI + $angle; 
    } 
    $sin = sin($angle); 
    $cos = cos($angle); 
    $d  = sqrt(pow(($x2 - $x),2) + pow(($y2 - $y),2)); 
    for($i = 0; $i < ($d/$dlen); $i++){ 
     if($i % $freq == 0){     
      $sx = ($x + ($i * $dlen * $cos)); 
      $sy = ($y + ($i * $dlen * $sin)); 
      $ex = ($x + (($i + 1) * $dlen * $cos)); 
      $ey = ($y + (($i + 1) * $dlen * $sin)); 
      $this->Line($sx,$sy,$ex,$ey); 
     } 
    } 
} 
0

我在工作中遇到了这个问题。虚线总是出现在PDF查看器中,但在某些打印机(或某些打印机驱动程序)上,虚线会丢失。将此功能添加到您的班级,以便以任意角度在两个坐标之间绘制多条线段。注意:$ dlen是

public function SegmentedLine($x,$y,$x2,$y2,$dlen = 1,$freq = 3){ 
    if($x == $x2 and ($y2 - $y) < 0){ // vertical up 
     $angle = M_PI * 1.5; 
    }elseif($x == $x2){     // vertical down 
     $angle = M_PI * 0.5; 
    }else{        // not vertical 
     $angle = ($y2 - $y)/($x2 - $x); 
     $angle = atan($angle); 
    } 
    if($x > $x2){      // NW or SW quadrant from start. 
     $angle = M_PI + $angle; 
    } 
    $sin = sin($angle); 
    $cos = cos($angle); 
    $d  = sqrt(pow(($x2 - $x),2) + pow(($y2 - $y),2)); 
    for($i = 0; $i < ($d/$dlen); $i++){ 
     if($i % $freq == 0){     
      $sx = ($x + ($i * $dlen * $cos)); 
      $sy = ($y + ($i * $dlen * $sin)); 
      $ex = ($x + (($i + 1) * $dlen * $cos)); 
      $ey = ($y + (($i + 1) * $dlen * $sin)); 
      $this->Line($sx,$sy,$ex,$ey); 
     } 
    } 
}