我正在尝试使用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();
呈现时的样子:
打印时,剪刀显示,但不显示虚线。
任何帮助将不胜感激!谢谢! :)
答案 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);
}
}
}