- 締切済み
テキストファイル中で印刷改行方法
MS-DOSの時代には良くやったのですが、最近はやらなくなった技に関してです。 プレーンテキストファイルを普通にWindowsのメモ帳などを使って印刷した時に、任意のところで改ページしたいのです。 ESCシーケンスコードの「FF」を埋め込めば良いかと思い、バイナリエディタで「x0C」を埋め込んで見たのですが、それだけではうまくいかないみたいです。 どなたか経験はありませんか? ちなみに、ESC制御コードはプリンタメーカによって違いがあるかと思うのですが、何かの機種で成功した事例があればお教えください。 当方使用機種は、EPSON LP-8300,LP-8500などCANONのLBP-2630です。
- みんなの回答 (7)
- 専門家の回答
みんなの回答
#5、#6です。 今日職場で試してみましたのでご報告します。 エディタで『文字列1[CL]文字列2[CL]文字列3[CL]文字列4』と入力して印刷してみたところ…うまく行きませんでした。印刷結果は『文字列1文字列2文字列3』となり、CL と文字列4は無視されてしまいました。 うそをついてしまったとあせりつつ、もう一度トライしたところ、今度はなぜか、期待通り各文字列がそれぞれ1枚の紙に印刷されました! 最初は4ページが1枚の紙ですむように、2ページ1面の縮小&両面印刷で失敗し、次は縮小せず片面印刷で4枚の紙に各文字列が出力され成功しましたので、縮小や両面だとダメなのかな…と思い、縮小のみ、両面印刷のみでそれぞれ試して原因を探ったのですが、どちらもうまく行きました。じゃあ最初の失敗はなんだったんだろう…と、失敗した縮小&両面でもう一度試すと……うまく行きました!? 結局、最初の失敗の原因はわからず終いです。CL(FF)のコード自体は、MS-DOSよりもずっと前、コンピュータ=大型汎用機だったころから、改ページのコードとして使用されていたはずですが、今やその原始的(?)な機能を継承しないプリンタが多数派なんですかね…? 迷宮入りです。 よろしければ、Spurの環境ではどう印刷されるのか、教えていただけませんか?(単なる私の好奇心です) プリンタの機種が違い、原因も不明で、結局お役に立てずすみませんでした。
#5です。混乱を招いてしまいすみません。 >えっ?『12 CL Ctrl-L』ですか? この3つは同義で、10進だと「12」、制御コードだと「CL」という意味です。 つまり「12」=「CL」=「Ctrl-L」で、いずれも0x0Cのことです。これにより挿入されるのは、0x0Cが1つです。エディタの画面上は「CL」の2文字が合わさったものが半角1文字分の大きさで表示されます。結局、Spurさんがバイナリエディタでされたのと同じことです――ということで、手段が違うものの私もSpurさんと同じことをしてできたはずなので、Spurさんの方法は正しいと思っています。(じゃぁ何で出来ないんだろう?とツッコまれると弱いのですが…)
お礼
なるほど、そうだったんですか・・・
これ、職場でうまく行った覚えがあるのですが、思い違いかも知れません。 私にはバイナリエディタなんて使えませんので、秀丸エディタで「その他」→「制御コード入力」で『12 CL Ctrl-L』(つまり、x0Cです)を入れてできたような…しかし、確信が無いので明日職場で確認し、成否をご報告します。 (ご報告は明日のこの時間になると思います。それまでに良回答がありましたら、締め切って頂いて構いません) ちなみに環境は、Windows2000→Windows NT4(プリンタサーバ)→NEC MultiWriter 2250 です。
補足
えっ?『12 CL Ctrl-L』ですか? 『Ctrl-L』は分かるのですが、その前に『12 CL』を付けるのですか? えっと、それは、キャラクタですか? 『CL』は「x0C」ですよね? 『Ctrl-L』は何でしたっけ?「x0A」ですか? つまり、x21 x22 x0C x0A を送るということかな?
- you-m
- ベストアンサー率58% (190/327)
Windowsの印刷の仕組みは、MS-DOS時代とは全く違っているという事を認識しなければならないでしょう。 MS-DOSでは、印刷する為にプリンタ固有の制御コードをコントロールするデバイスドライバを組み込み、そのドライバにアプリケーションが対応している必要がありました。 また、単純な印刷はLPTポートに対してデータをリダイレクトするような形でもできたので、テキストにESCシーケンスを埋め込む事で、直接プリンタを制御するような事も可能だったわけです。 しかしながら、Windowsの印刷の仕組みは、アプリケーションとプリンタのアーキテクチャを完全に切り離しています。印刷時には必ずプリンタドライバを経由するので、印字結果に影響するような制御コード等は、その時点で通常は削除されます。 改行の制御は、アプリケーション側での対応が不可欠なのです。 業務系の印刷をする為に、わざわざESCシーケンスをスルーするドライバをメーカから提供してもらったりする事はありますが、ESCシーケンスを直接送るような操作は、Windowsではかなりイレギュラーな対応が必要になると思いますよ。 相変わらず仮想デバイス名のLPTポートは、明示的に割り当てれば有効(MS-DOSアプリへの互換性の為)なので、LPT1とかへの直接印刷ならば、うまくいくかもしれません。 しかし、Winアプリからの印刷では駄目でしょう。 簡単なのは、LPTポートへのファイルリダイレクトでしょうか。 データを送った先でも、同じように設定・操作していないと駄目なのはもちろん、Windowsのバージョンによってもしかしたら挙動が違うかもしれませんので、少々試行錯誤が必要だと思います。
お礼
確かに・・・ そうなんだと言うことは分かっているのですが、何とかならないかな~と考えています。 ですから、「ワザ」なんですね。 どうにかしたい・・・・(-_-;)
- route15519
- ベストアンサー率36% (142/392)
#1の方、勘違いかも? エスケープシーケンス、、、懐かしいですね。 windowsのプリントシステム・プリンタの制御コード共にMS-DOSの頃のものはほとんど通用しないと考えた方が良さそうです。プリンタはwindows専用とかMS-DOS非対応などと売ってたりしますしね。 Linuxからのプリントが出来なくて(windows Printing system)悩んでいたりして>自分(笑
お礼
でしょう?懐かしいですよね(⌒ ⌒) 私は今でもMS-DOSのバッチファイルを作ったり、色々やっております。 特に最近UNIXコマンドを使うようになって、シェルスクリプトを書いていると、MS-DOSのバッチファイルを思い出したりします。 今回も、ESCシーケンスなどというものを引っ張り出してやろうとしているのです。 プリンタを一時的にESCモードにすれば、メタではなく、プリンタに持っているフォントで動こうとするの、それで何か出来ないかを試しています。 何かアイデアがあればお願いいたします。(⌒ ⌒)(_ _)
- Fukutarou
- ベストアンサー率30% (193/641)
すいません。改ページでしたね。タイトルが改行だったので、間違いました。 知ってるソフトで紙という便利ソフトがあり色々出来ます 印刷プレビューも出来ますので参照してください。
補足
タイトルを間違えました(^^ゞポリポリ 「テキストファイル中で印刷改ページ方法」をお聞きしたくお願いします。m(_"_)m
- Fukutarou
- ベストアンサー率30% (193/641)
WINDOWSのメモ帳でしたら、複雑な事を考えず編集で「右端で折り返す」を使用すれば任意のところで折り返せます。 メモ帳のウインドウを最大にしないで、大きさを変えられるようにしてウインドウサイズを変更すれば良いので、お試しあれ。
補足
早々に回答頂き、ありがとうございます。 せっかく回答いただいたのですが、それは目的と違うのです。 あくまでファイル中に「改ページ」を埋め込む方法についての質問なんです。 例えば、A4で1枚と少し余分くらいの内容が書いてあるとします。 そのまま印刷すると、1枚目が丁度一杯になってから改ページして、残りが2ページ目に印刷されます。 しかし、説明の都合上、1ページ目の中ほどで改ページし、残りを2ページ目に印刷したいのです。 しかも、何も考えずに印刷するだけで、例えば、メールでそれを受け取った人も同じように印刷させたいので、文書の途中に「改ページ」を埋め込みたいワケです。 昔のプリンタは「FF」を埋め込んでおくだけでよかったのですが、最近のはダメなんでしょうか? ESCシーケンスには対応しているはずなので可能だと思うのですが・・・?
補足
わざわざテストまでしていただき感謝ですm(_"_)m 私がやった時は、改ページコードを埋め込んだ位置にピリオドがひとつ出ただけです。 つまり、無視されたのでもなく、解釈できなかったのだと思います。 でも、テストしていただいて、うまく行ったのですか? いいな~。 何か方法があるはずだと思って色々やってはいるのですが・・・ 以前は自分で改行コードだけを出力する簡単な処理をAssemblerで作って、それを使って制御したこともありますが、今のOSではそのAssemblerで作ったソフトが動作しません。 やりにくい世の中になりました(笑)