2

phpとreporticoを使用してWebベースのレポートアプリケーションを開発しています。ペルシア語でレポートを作成したいので、PDFファイルの方向を変更する必要があります(左から右、rghtから左)。 FPDFでそれを支持するものはありますか、それともreporticoでそれを解決するための解決策はありますか?

4

2 に答える 2

1

この URL を参照してください。非常に役立つと思います。

http://www.fpdf.de/downloads/addons/31/

または試してみてください。

説明 : この拡張機能を使用すると、回転およびせん断 (斜体のように歪んだ) テキストを印刷できます。

TextWithDirection(float x, float y, string txt [, string direction])

×:横軸

y: 縦座標

txt: テキスト文字列

方向: 次のいずれかの値 (デフォルトでは R):

  • R(右):左から右
  • U (上): 下から上
  • D (下): 上から下
  • L (左): 右から左

TextWithRotation(float x, float y, string txt, float txt_angle [, float font_angle])

×:横軸

y: 縦座標

txt: テキスト文字列

txt_angle: テキストの角度

font_angle: せん断角度 (デフォルトでは 0)

ソース

 <?php
require('fpdf.php');

class RPDF extends FPDF {

function TextWithDirection($x, $y, $txt, $direction='R')
{
    $txt=str_replace(')', '\\)', str_replace('(', '\\(', str_replace('\\', '\\\\', $txt)));
    if ($direction=='R')
        $s=sprintf('BT %.2f %.2f %.2f %.2f %.2f %.2f Tm (%s) Tj ET', 1, 0, 0, 1, $x*$this->k, ($this->h-$y)*$this->k, $txt);
    elseif ($direction=='L')
        $s=sprintf('BT %.2f %.2f %.2f %.2f %.2f %.2f Tm (%s) Tj ET', -1, 0, 0, -1, $x*$this->k, ($this->h-$y)*$this->k, $txt);
    elseif ($direction=='U')
        $s=sprintf('BT %.2f %.2f %.2f %.2f %.2f %.2f Tm (%s) Tj ET', 0, 1, -1, 0, $x*$this->k, ($this->h-$y)*$this->k, $txt);
    elseif ($direction=='D')
        $s=sprintf('BT %.2f %.2f %.2f %.2f %.2f %.2f Tm (%s) Tj ET', 0, -1, 1, 0, $x*$this->k, ($this->h-$y)*$this->k, $txt);
    else
        $s=sprintf('BT %.2f %.2f Td (%s) Tj ET', $x*$this->k, ($this->h-$y)*$this->k, $txt);
    if ($this->ColorFlag)
        $s='q '.$this->TextColor.' '.$s.' Q';
    $this->_out($s);
}

function TextWithRotation($x, $y, $txt, $txt_angle, $font_angle=0)
{
    $txt=str_replace(')', '\\)', str_replace('(', '\\(', str_replace('\\', '\\\\', $txt)));

    $font_angle+=90+$txt_angle;
    $txt_angle*=M_PI/180;
    $font_angle*=M_PI/180;

    $txt_dx=cos($txt_angle);
    $txt_dy=sin($txt_angle);
    $font_dx=cos($font_angle);
    $font_dy=sin($font_angle);

    $s=sprintf('BT %.2f %.2f %.2f %.2f %.2f %.2f Tm (%s) Tj ET',
             $txt_dx, $txt_dy, $font_dx, $font_dy,
             $x*$this->k, ($this->h-$y)*$this->k, $txt);
    if ($this->ColorFlag)
        $s='q '.$this->TextColor.' '.$s.' Q';
    $this->_out($s);
}

}

?> 

 <?php
define('FPDF_FONTPATH', 'font/');
require('rpdf.php');

$pdf=new RPDF();
$pdf->Open();
$pdf->AddPage();
$pdf->SetFont('Arial', '', 40);
$pdf->TextWithRotation(50, 65, 'Hello', 45, -45);
$pdf->SetFontSize(30);
$pdf->TextWithDirection(110, 50, 'world!', 'L');
$pdf->TextWithDirection(110, 50, 'world!', 'U');
$pdf->TextWithDirection(110, 50, 'world!', 'R');
$pdf->TextWithDirection(110, 50, 'world!', 'D');
$pdf->Output();
?> 

出力:- http://www.fpdf.org/en/script/ex31.pdf

于 2012-09-02T07:23:49.537 に答える