2016-07-29 3 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); 
     } 
    } 
} 
입니다.
관련 문제