$pdf->Cellで1文字ずれてしまいます - PHPプロ!Q&A掲示板

2505

  • 0P

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

質問日時 / 2010年2月8日 17:19    回答数 / 4件

Questioner:  saitamanzo  このエントリーをはてなブックマークに追加 

キーワード / fpdf    mb_convert_encoding    cell   

請求書を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


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

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

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



ツリー一覧

┗A01shimixこちらの環境(Win、fpdf1.6)で試しましたが、現象を
 ┗A01-1saitamanzoさっそくのご返答ありがとうございます。 こちらは
  ┗A01-1-1shimixたしかに「MBFPDF」だとずれますね。 PDF_Japanese
   ┗A01-1-1-1saitamanzoご返答ありがとうございます。 社内のアプリすべて

回答一覧

並び替え:

A01
answerershimix [2月8日 17:53]

こちらの環境(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. ?>

この意見に回答する

ツリーへ TOPへ

A01-1
replyersaitamanzo [2月9日 11:11]

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

こちらは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. ?>


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

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

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

この意見に回答する

ツリーへ TOPへ

A01-1-1
replyershimix [2月9日 11:39]

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

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

この意見に回答する

ツリーへ TOPへ

A01-1-1-1
replyersaitamanzo [2月9日 14:34]

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

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

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

何か他にいい方法がありましたらぜひよろしくお願いいたします。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
負荷時のmysql_connect()エラー
 このエントリーをはてなブックマークに追加 
A
これはPHPというよりOSまたはMySQLのコミュニティで質問されたほうがいいと思います。 ぱっと思いついた範囲で記すと MySQL等のDBに「ある時点において同時に接続可能なクライアントの最大数」に制限があるよう...

>>続きを読む

今回のような実践的な経験がエンジニアのキャリアに繋がると思います。是非サービスを成功させて下さい!

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)