プロが教える店舗&オフィスのセキュリティ対策術

現在、HTMLを作成しているのですが、
画面で入力した情報を取得して、
PDFに反映させるといったことをしています。

そこで、テキストエリアに入力したままを
PDFに出力する箇所があるのですが、
テキストエリアのcolsで指定したバイト数よりも
全角文字が多く入ってしまうので、
PDFと画面で若干ずれが生じています。

現在はcols88でフォントはMSゴシックを指定しています。
この場合ですと、1バイト文字()は88バイト(88文字)入るのですが、
2バイト文字(全角文字)だと94バイト(47文字)
入ってしまいます。
フォントはゴシックとほぼ同じ種類だったら
問題ないので、フォントで対応できる場合も
ご教授ください。
又、この問題はどうしようもない問題とご存知でしたら、
そちらもご教授ください。
よろしくお願い致します。

A 回答 (3件)

「MS ゴシック」が、完全な等幅フォントではない(全角と半角の名場が異なる)ことが原因です。


ただし、フォントサイズが 1.5 の倍数の時には、完全な等幅になるようなので、フォントサイズを 12 あたりに設定してやるとよいでしょう。

 <TEXTAREA style="font:12px 'MS ゴシック'" cols="88"></TEXTAREA>

このようにしておけば、全角/半角が混じっても、88バイト分しか入らなくなります。
    • good
    • 0
この回答へのお礼

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

1.5の倍数時に等幅なるというので
問題が解決しました。
フォントサイズを9にすることにしました。
助かりました、ありがとうございます。

お礼日時:2002/02/25 19:24

こんにちは。

COLSとかかれているからには、<TEXTAREA>のほうですよね?
となると、MAXLENGTHで指定するわけにもいきませんね。
(しかも、MAXLENGTHの解釈はIEとNNで異なり、文字数だったりバイト数
だったりするので汎用性がないですし・・・)

試していないので申し訳ないのですが、<TT>でうまくいかないでしょうか?
TeleType、等幅フォントとするタグです。
プロポーショナルフォントを使うと、どうしても1バイト文字2つと2バイト文字1つ
の幅が同じにはならないと思いますので。

#フォントの見栄えが変わってしまいますが・・・

この回答への補足

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

ご教授頂いた<TT>を以下のように試したのですが、
<TT>タグがきかないようです。
【試したHTML】
<TT><TEXTAREA></TEXTAREA></TT>

そこで、少し<TT>を試したところ
ラベル系の文字に効果が出るようでした。
しかし、
12345678901234567890
あいうえおかきくけこ
と<TT>タグ付のラベルで試したところ
若干ずれが生じるみたいです。

他の方法がございましたら、ご教授お願い致します。

補足日時:2002/02/25 15:45
    • good
    • 0

テキストエリアに、


 MAXLENGTH=n(入力可能な文字数)
 を追加して下さい。

<INPUT TYPE="TEXT" NAME="UID" VALUE='' SIZE=12 MAXLENGTH=8>
 で、半角で8文字まで入力可能になります。

この回答への補足

早速のご回答ありがとうございます。
また、質問の内容が曖昧ですいませんでした。

テキストフィールドであれば
MAXLENGTHを使用して制限が可能ですが、
テキストエリアだと無理だと思います。
また、MAXLENGTHの場合は、文字数になってしまうので、
全角文字でもMAXLENGTHで指定した文字数まで
入力可能になってしまいます。
今回はバイト数で制限したい状態です。
曖昧で申し訳ございませんが、
よろしくお願い致します。

補足日時:2002/02/25 14:51
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!