FPDF虚线不打印

时间:2016-07-29 02:02:03

标签: php printing fpdf

我正在尝试使用Dashes script在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

打印时,剪刀显示,但不显示虚线。

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

2 个答案:

答案 0 :(得分: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);
        }
    }
}

答案 1 :(得分: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);
        }
    }
}