アシアル株式会社主催 開発者向け、一歩先をいくためのテクニカルセミナー

<< ループを2重でする場合の処理 質問一覧 Mysqlの実行コードが無限ループしてし... >>

  • 0P
$pdf->Cellで1文字ずれてしまいます

請求書をPDFで作成しているのですが、

$pdf->SetXY(100.0, 106.0);
$str = mb_convert_encoding("三井住友銀行 (普通) 9999999","SJIS","EUC-JP");
$pdf->Cell(99, 7, $str, 0, 0, 'R');

$pdf->SetXY(100.0, 112.0);
$str = mb_convert_encoding("埼玉りそな銀行 (普通) 5555555","SJIS","EUC-JP");
$pdf->Cell(99, 7, $str, 0, 0, 'R');

と右揃えにしているのですが、PDFで、

   三井住友銀行 (普通) 9999999
  埼玉りそな銀行 (普通) 5555555

と1文字はみ出して表示されてしまいます。

色々試したところ、"三"の文字が入っていると、このようになってしまうようです。
"三"を外したところ、正常にPDFに出力されました。

    井住友銀行 (普通) 9999999
   埼玉りそな銀行 (普通) 5555555


何かエンコードの仕方に問題があるのでしょうか?

よろしくご教授お願いいたします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。

Q$pdf->Cellで1文字ずれてしまいます saitamanzo  [02月08日 17時19分] 
┗Re:$pdf->Cellで1文字ずれてしまいます shimix  [02月08日 17時53分] 
  ┗Re:Re:$pdf->Cellで1文字ずれてしまいます saitamanzo  [02月09日 11時11分] 
    ┗Re:Re:Re:$pdf->Cellで1文字ずれてしまいます shimix  [02月09日 11時39分] 
      ┗Re:Re:Re:Re:$pdf->Cellで1文字ずれてしまいます saitamanzo  [02月09日 14時34分] 

コメント一覧

並び替え( ツリー順 / 投稿順[降順] / 投稿順[昇順]

Re:$pdf->Cellで1文字ずれてしまいます

こちらの環境(Win、fpdf1.6)で試しましたが、現象を確認出来ません。前後のソースとか環境とかをもう少し詳しくお願いします。

試したソース全文です
  1. <?php
  2. require('fpdf/japanese.php');
  3. $pdf=new PDF_Japanese();
  4. $pdf->AddSJISFont();
  5. $pdf->Open();
  6. $pdf->AddPage();
  7. $pdf->SetFont('SJIS','',18);
  8. $pdf->SetXY(100.0106.0)// そのままコピペ ここから
  9. $str = mb_convert_encoding("三井住友銀行 (普通) 9999999",'SJIS','EUC-JP');
  10. $pdf->Cell(997$str00'R');
  11. $pdf->SetXY(100.0112.0);
  12. $str = mb_convert_encoding("埼玉りそな銀行 (普通) 5555555",'SJIS','EUC-JP');
  13. $pdf->Cell(997$str00'R')// ここまで
  14. $pdf->Output();
  15. ?>

Re:Re:$pdf->Cellで1文字ずれてしまいます

さっそくのご返答ありがとうございます。

こちらはLINAXサーバです。

下記のソースで再現できました。

  1. <?php
  2.  
  3. require('libs/fpdf/mbfpdf.php');
  4.  
  5. $pdf=new MBFPDF('P''mm''A4');  // ページの方向:縦長(横長='L')
  6.  
  7. $pdf->SetTitle('test.pdf');
  8. $pdf->AddMBFont(GOTHIC ,'SJIS');
  9. $pdf->Open();
  10. $pdf->AddPage();
  11. $pdf->SetFont(GOTHIC,'',20);      // MSゴシックセット
  12.  
  13. $pdf->SetFontSize(14);
  14.  
  15. $pdf->SetXY(100.0106.0);
  16. $str = mb_convert_encoding("三井住友銀行 (普通) 9999999",'SJIS','EUC-JP');
  17. $pdf->Cell(997$str00'R');
  18. $pdf->SetXY(100.0112.0);
  19. $str = mb_convert_encoding("埼玉りそな銀行 (普通) 5555555",'SJIS','EUC-JP');
  20. $pdf->Cell(997$str00'R');
  21.  
  22. $fname = 'test.pdf';
  23. $pdf->Output($fname,'D');        // ダウンロード
  24.  
  25. ?>


アパッチの設定に問題があるのでしょうか?

できればプログラムで解決したいと思っています。

以上よろしくお願いいたします。

Re:Re:Re:$pdf->Cellで1文字ずれてしまいます

たしかに「MBFPDF」だとずれますね。

PDF_Japaneseだと問題ないんですが、今さら変更は無理でしょうか?

Re:Re:Re:Re:$pdf->Cellで1文字ずれてしまいます

ご返答ありがとうございます。

社内のアプリすべてMBFPDFを使っていますので、ここだけ変更というわけには
いきませんでした。

とりあえず、文字数取得して、スタート位置を調節して左寄せで表示、
ということを試してみたいと思います。

何か他にいい方法がありましたらぜひよろしくお願いいたします。
ループを2重でする場合の処理 質問一覧 Mysqlの実行コードが無限ループしてし...