3

我有一个 PHP 脚本,可以从动态数据生成 pdf。我需要在我试图以这种方式实现的页面上放置打印机标记:

function drawPrinterMarks($obj, $pageWidth, $pageHeight){
    $registrationMarks=array(
        array($pageWidth/2, 5),
        array($pageWidth/2, $pageHeight-5),
        array(5, $pageHeight/2),
        array($pageWidth-5, $pageHeight/2)
    );

    $regLineStyle=array('width'=>0.07, 'color'=>array(100,100,100,100));
    $whiteLineStyle=array('width'=>0.07, 'color'=>array(0,0,0,0));

    foreach($registrationMarks as $rM){
        $obj->Ellipse($rM[0], $rM[1], 2, 0, 0, 0, 360, '', '', array(0,0,0,0));
        $obj->Ellipse($rM[0], $rM[1], 1, 0, 0, 0, 360, 'F', '', array(100,100,100,100));
        $obj->Line($rM[0]-2.5, $rM[1], $rM[0]+2.5, $rM[1], $regLineStyle);
        $obj->Line($rM[0], $rM[1]-2.5, $rM[0], $rM[1]+2.5, $regLineStyle);
        $obj->Line($rM[0]-1, $rM[1], $rM[0]+1,$rM[1], $whiteLineStyle);
        $obj->Line($rM[0], $rM[1]-1, $rM[0], $rM[1]+1, $whiteLineStyle);
    }
}

它以我想要的方式绘制第一个标记(在顶部的中间)。(看起来像 Acrobat 使用的标准注册标记)但它不会在其他地方绘制外圈。 看例子

有任何想法吗?

4

1 回答 1

1

在这里,您告诉 TCPDF 用当前线型绘制一个椭圆:

$obj->Ellipse($rM[0], $rM[1], 2, 0, 0, 0, 360, '', '', array(0,0,0,0));

但是为每个注册标记绘制的最后一条线是白色的。因此,对于后续标记,椭圆是用白线和白色填充绘制的。

如果您在第一个椭圆上明确设置 linestyle 参数,它将为您的所有标记绘制外圆。

$obj->Ellipse($rM[0], $rM[1], 2, 0, 0, 0, 360, '', $regLineStyle, array(0,0,0,0));
于 2013-04-21T08:49:28.290 回答