• ベストアンサー

テキストエリアの行文字数の固定について

現在、HTMLを作成しているのですが、 画面で入力した情報を取得して、 PDFに反映させるといったことをしています。 そこで、テキストエリアに入力したままを PDFに出力する箇所があるのですが、 テキストエリアのcolsで指定したバイト数よりも 全角文字が多く入ってしまうので、 PDFと画面で若干ずれが生じています。 現在はcols88でフォントはMSゴシックを指定しています。 この場合ですと、1バイト文字()は88バイト(88文字)入るのですが、 2バイト文字(全角文字)だと94バイト(47文字) 入ってしまいます。 フォントはゴシックとほぼ同じ種類だったら 問題ないので、フォントで対応できる場合も ご教授ください。 又、この問題はどうしようもない問題とご存知でしたら、 そちらもご教授ください。 よろしくお願い致します。

  • piro2
  • お礼率50% (8/16)
  • HTML
  • 回答数3
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.3

「MS ゴシック」が、完全な等幅フォントではない(全角と半角の名場が異なる)ことが原因です。 ただし、フォントサイズが 1.5 の倍数の時には、完全な等幅になるようなので、フォントサイズを 12 あたりに設定してやるとよいでしょう。  <TEXTAREA style="font:12px 'MS ゴシック'" cols="88"></TEXTAREA> このようにしておけば、全角/半角が混じっても、88バイト分しか入らなくなります。

piro2
質問者

お礼

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

その他の回答 (2)

  • sight
  • ベストアンサー率53% (199/370)
回答No.2

こんにちは。COLSとかかれているからには、<TEXTAREA>のほうですよね? となると、MAXLENGTHで指定するわけにもいきませんね。 (しかも、MAXLENGTHの解釈はIEとNNで異なり、文字数だったりバイト数 だったりするので汎用性がないですし・・・) 試していないので申し訳ないのですが、<TT>でうまくいかないでしょうか? TeleType、等幅フォントとするタグです。 プロポーショナルフォントを使うと、どうしても1バイト文字2つと2バイト文字1つ の幅が同じにはならないと思いますので。 #フォントの見栄えが変わってしまいますが・・・

piro2
質問者

補足

ご回答ありがとうございます。 ご教授頂いた<TT>を以下のように試したのですが、 <TT>タグがきかないようです。 【試したHTML】 <TT><TEXTAREA></TEXTAREA></TT> そこで、少し<TT>を試したところ ラベル系の文字に効果が出るようでした。 しかし、 12345678901234567890 あいうえおかきくけこ と<TT>タグ付のラベルで試したところ 若干ずれが生じるみたいです。 他の方法がございましたら、ご教授お願い致します。

  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.1

テキストエリアに、  MAXLENGTH=n(入力可能な文字数)  を追加して下さい。 例 <INPUT TYPE="TEXT" NAME="UID" VALUE='' SIZE=12 MAXLENGTH=8>  で、半角で8文字まで入力可能になります。

piro2
質問者

補足

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

関連するQ&A

  • テキストエリアの長さ(表示文字数)が違う?

    ジャンルを迷ったのですが... CGIを改造中です。テキストエリアを利用してスクロールする長文を表示させようとしています。 もちろんですが、管理画面(入力画面)もテキストエリアです。 ここでものすごく変な事が起きています。 表示画面では、<TEXTAREA rows="19" cols="23">と表示してあり、全角11文字・半角22文字で折り返しています。 管理画面では、<TEXTAREA cols="19" rows="10" name="com1">と表示してあり、全角11文字・"半角16文字"で折り返しています。 なんでこんな差が出るのでしょうか? ちなみに、ヘッダー部分はサブルーチンを使ってどちらも同じですし、スタイルシートももちろん一緒です。

  • テキストエリア入力文字数の表示で全角と半角を区別したいです。

    JavaScriptで以下のようにテキストエリアで入力文字数を表示させているのですが、 全角文字も半角文字も同じ1文字としてカウントされてしまいます。 入力された文字が全角なら2、半角なら1としてカウントするように出来ないでしょうか? ================================================================ /*テキスト入力フォームで文字数を表示する*/ function ShowLength( str ) { document.getElementById("inputlength").innerHTML = str.length + "文字"; } ---------------------------------------------------------------- <textarea cols="70" rows="10" onkeyup="ShowLength(value);" /></textarea> <p id="inputlength">0文字</p> ================================================================ 宜しくお願い致します。

  • テキストエリア内の文字を大きくしたい

    下記のようなな記述で文字記入をしています 表示自体の文字ポイントは変更できるのですが、いざ入力記入をすると機種依存のような文字の大きさにしか表示されません。小さいので、不評を買っています。 <TR><TD valign="top" bgcolor="#6687cc"> <FONT color="#ffffff" size="-1">本文*</FONT> </TD> <TD valign="top"> <FONT size="-1">半角2000文字(全角1000文字)まで</FONT><BR> <TEXTAREA rows="12" cols="57" name="message"></TEXTAREA> </TD></TR> 現状は9ポイントほどの表示、12ポイントほどにしたい このサイトの質問内容文表示よりも大きくしたい できますか

    • ベストアンサー
    • HTML
  • テキストエリアで文字数が200になったら警告

    テキストエリアで文字数が200になったら警告するようなことができますか? (例) テキストエリアに文字を入れていって、201文字目に入ったらぽっぷアップで「これ以上入力できません」とお知らせ。

  • テキストエリア

    テキストエリア内にデータ(HTMLソース)を入力し、HTMLファイルとして保存します。 しかし、問題がいくつも出てしまいました。 1.空白の処理・・・半角全角とも空白があるとそこまでのデータしか送れません。 2.複数行のデータが送れない。改行すると、1行目しかデータが送れません。 3.特殊文字。<や>などの文字があると、きちんと送れません。 どうしたらデータをそのままの形で送れるでしょうか?

    • ベストアンサー
    • Perl
  • テキスト形式で1行の文字数を揃えるには?

    こんにちは。 メモ帳で1行の文字数を揃えるにはどうしたらいいでしょう? HTMLの文章をコピー&ペーストして、短時間で済ませたいのです。 今まで試した方法は下記の通りです。 1.メモ帳にそのまま貼り付け  →横にどんどん伸びてしまう。 2.ワードで文字数を指定して、テキスト+改行(*.txt)で保存  →1文字、2文字、はみ出しているところがある。   プロポーショナルフォントは使っていません。   半角と全角は混在しています。 環境はWin2000、office2000です。 ご存知の方、よろしくお願いします。

  • テキストエリア内の文字が表示されない

    PCからタグ打ちでテキストエリアを作り、 中にはリンクタグを入れました。 PCからも携帯(ドコモ)からも正常に表示されるのですが、 auのW62SHからはテキストエリア内の文字が表示されていないと言われました。 このようにしました↓ <form action="" style="margin:0;"> <textarea cols="30" rows="2" name="link"> <a href="アドレス"></a> </textarea></form> どこか間違えているのか、 それとも携帯の機種の問題でしょうか? よろしければ教えてください。 よろしくお願いいたします。

  • テキストエリアに「\1,000,000」と入力すると文字化けするので良い方法はありませんか?

    入力テキストエリアに「\1,000,000」と入力すると文字化けするので、 何か良い解決策はありませんか?\1,000,000はそのまま手入力で計算した 値ではありません。 また、テキストエリアですので、 \1,000,000 \1,000,000 で2行になる事もあります。その場合、改行コードなども関係してくると 思います。混乱してきたので、わかる方ご伝授お願いいたします。 半角\を入れると、全角¥に変換するなどです。 もしよければもうひとつ、半角数字、半角英字を全て、全角にする方法はありますか? 非常に困っています。良い解決策があれば教えて下さい。

    • ベストアンサー
    • Perl
  • JavaScript~フォームのテキストエリアの設定

    フォームのテキストエリアの背景色を指定できたと思うのですが、 どのサイトでそれを見たのか忘れてしまい、どうしても見つかりません(^-^;; 方法、又は説明のあるサイトをご存知でしたら教えて下さい。 あと、同じくフォームのテキストエリアで、 入力した文字のフォントの種類やサイズを指定できますか? 読み込んだあとではなくて、書いているときです。 (説明が下手でごめんなさい) ネスケで見たときにテキストエリアが広くなってしまって、 掲示板等のデザインが崩れてしまいます。 同じ数値で指定するとI.E.よりネスケのほうが広くなるし字も大きいのですが、 ネスケ用に別指定等できるのでしょうか? お時間のあるときで構いませんので宜しくお願いします。

  • テキストエリア内の文字装飾について

    過去の質問を検索しましたが当方の悩みを解決してくれる 決定的な回答が得られなかったので新規に質問させて頂きました。 当方で作成しているHPにテキストエリアを配置しておりますが、 テキストエリア内の文字のフォントと文字色を変えたいと思うのですが、 フォント又は文字色のどちらか一方は設定できるんですが、 フォントと文字色両方を希望通りに設定できなくて困ってます。 両方一遍に設定するにはどうしたら良いのでしょうか? ちなみにインラインフレームを使う方法も考えましたが、 インラインフレーム内に広告が強制表示されてしまうので使えません。

専門家に質問してみよう