【问题标题】:FPDF Dashed Line Not PrintingFPDF 虚线不打印
【发布时间】:2016-07-29 02:02:02
【问题描述】:

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

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

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

【问题讨论】:

    标签: php printing fpdf


    【解决方案1】:

    我在工作中遇到了这个问题。虚线始终显示在 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);
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      我在工作中遇到了这个问题。虚线始终显示在 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);
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-05
        • 2012-11-13
        • 1970-01-01
        • 1970-01-01
        • 2016-05-07
        • 1970-01-01
        • 2012-09-13
        • 2012-01-04
        相关资源
        最近更新 更多