3

動的データからPDFを作成するPHPスクリプトがあります。この方法で達成しようとしたページにプリンターマークを付ける必要があります。

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));

ただし、各登録マークに描かれる最後の線は白です。したがって、後続のマークでは、楕円は白い線と白い塗りつぶしで描画されます。

最初の楕円に線種パラメータを明示的に設定すると、すべてのマークの外側の円が描画されます。

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