2016-07-29 7 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ビューアに表示されますが、一部のプリンタ(または一部のプリンタドライバ)では破線が表示されません。この関数をクラスに追加して、任意の角度で2つの座標間に複数の線分を描画します。注:$ 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ビューアに表示されますが、一部のプリンタ(または一部のプリンタドライバ)では破線が表示されません。この関数をクラスに追加して、任意の角度で2つの座標間に複数の線分を描画します。注:$ 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); 
     } 
    } 
} 
です
関連する問題