NEC製プリンタPC-PR201/40で、印刷時にフォントのサイズやName等を自由に変更して印刷したいのですが、わからなくて困ってます。
どなたかご存知の方、教えてください。お願いします。
>印刷時にフォントのサイズやName等を自由に変更して印刷したいのですが
(1)これは,プリンタに直接コードを送って印刷する
(2)TPrinterなどのCanvasを使用して印刷する
(2)の場合でしたら,Fontのサイズもスタイルもフォント名も自由に変更
可能ですから,多分(1)のケースだと思います.
この場合,プリンタの持つ機能を使用しますから,自由という訳にはいか
ないでしょう.制限があります.
基本的には,プリンタの制御コードは,メーカーに資料を請求して入手する
しかないでしょう.
http://www.pcspace.jp/NativePRN.htmlなところも参考にしてはいかがでしょう.
私個人としては,できることならCanvasを使用する方向にしていくことを
お勧めします.
http://www.express.nec.co.jp/care/user/printer/dot.html
の一番下にコードのマニュアルあります。
(これって古いマニュアルをスキャンしただけの代物です。)
ありがとうございます。
早速やってみます。
Canvasで色んな設定をやってるのですが、印刷されてくるのはやっぱりワンパターンです。。。あと、印刷のプログラムで、begindog,Enddogを使っていません。ダウンロードした関数を使用してます。
Excelの画面を印刷してみたら、設定通りに、バーコードまで、きちんとと印刷できたので...何かやり方があるはずですよねっ。
やってみます。
ありがとうございましたっ!
>印刷されてくるのはやっぱりワンパターンです。。。
Canvas.Font.Sizeが反映されないということですよね.
う〜む.今時そんなプリンタがあるのかな.でも,Excelの画面(シート)は
期待通り印刷できるんですよね.不思議だ.
そうなんです。Excelのシートは、ちゃんと印刷されるんですけど。。。
私のプログラムがダメなのかもしれません。
きっとできるはず...だと思うんですけど。。。
明記していないため、以下の点の確認です。
> 印刷のプログラムで、begindog,Enddogを使っていません。ダウンロードした関数を使用してます。
どこからダウンロードしたものでしょう?
(誰でもダウンロードできるものであれば、紹介しておくことで、誰かやってみてくれるかも)
文字の出力は、ダウンロードした関数で?
それとも、Canvasのメソッド(TextOut等)を使って?
Canvas.Font.SizeのCanvasは、本当にプリンタのCanvas?
ダウンロードした関数による文字列出力であれば、その関数内で勝手にフォントとか変更している可能性もありますしね。
BeginDog,EndDogを、ダウンロードした何かにお任せにしている以上、その中身が問題のような気がします。
>印刷されてくるのはやっぱりワンパターンです。。。
これは,印刷関係のコンポを提供している者としては問題です.
もし,差支えなかったら以下からファイルをDLして実行して頂けたら
幸いです.
http://homepage2.nifty.com/Mr_XRAY/Test.htm
(291KB)
これは、全く動かないのでしょうか?それとも、何か点の様なものが印刷されるのでしょうか?
私の説明が下手ですみません。
NECのHPよりWindows用ドライバをDLして印刷は可能なのですが、
Printer.BeginDoc;
Printer.TextOut(x,y,'ABC');
Printer.EndDoc;
と実行すると、最後に用紙が排出されますが、この際に1ページ送ってくれません。
プリンタのプロパティに、使用している用紙の選択が無いからです。
で、ここ↓
http://www.kobira.co.jp/sakura/d_print.htm
にあるtranprn.zipはどうかと教えてもらい、ダウンロードしました。
NECのドライバでは、フォントを自由に変更できるかどうかとか分りません。
拡大、縮小の関数はあるのですが...。
できたら、FontDialogで指定したフォントで印刷したいのです。
説明が全然ダメで、すみませんっ。
>Mr.XRAY 様
印刷実行、きちんとできました。
>印刷実行、きちんとできました。
テストして頂き,ありがとうございました.
このテストプログラムでプレビュー通りに印刷できるということは,
PC-PR201/40でも普通にPrinter.Canvasを使用して印刷できるということに
なります.
残念ですが,takaさんのコーディング(プログラムのコード)の間違いか,
勘違いでしょう(他の方のレス参考)
>できたら、FontDialogで指定したフォントで印刷したいのです。
新規プロジェクト(必ず新規です.新規でないと既にあるコードが動作
を変更してしまう可能性があります).しつこいようですが.必ず新規
にプロジェクトを作成して,
(1) Buttonを一つ
(2) FontDialogを一つ配置し
(3) usesにPrintersを追加します
(4) Button1のクリックイベントを以下の様にします.
(5) コンパイル実行して,フォントダイアログでフォントのサイズを変更
(分かりやすいように,なるべく大きなサイズ 例30とか)
して印刷する.
フォントサイズを変更してまた印刷します.文字のサイズが変わって
いるハズです.
//====================================================================
// 備考
// PC-PR201/40はNECのモノクロドットインパクトプリンタ
// 解像度は24pin, 160dpi
// 制御言語は201PL
// ドライバはPC-9801からWindowsXPまで全てあり
//====================================================================
procedure TForm1.Button1Click(Sender: TObject);
begin
if FontDialog1.Execute then begin
Printer.BeginDoc;
try
Printer.Canvas.Font.Assign(FontDialog1.Font);
Printer.Canvas.TextOut(360,600,'テスト');
finally
Printer.EndDoc;
end;
end;
end;
>後に用紙が排出されますが、この際に1ページ送ってくれません。
これは,フォントサイズの変更ができないということとは別の問題です.
>プリンタのプロパティに、使用している用紙の選択が無いからです。
ということです.
> Printer.BeginDoc;
> Printer.TextOut(x,y,'ABC');
> Printer.EndDoc;
重箱の底を... で申し訳ないのですが.このコードでは印刷できないハズです.
FontDialogで指定した通り、印刷できました。ありがとうございました。
ただ、今、一行ごとに改行という風なプログラムでやっていて、printer.canvasを使うと、印刷後、用紙を送りすぎてしまいます。
printer.canvasというのはそういうものなんでしょうか...。
すみません、まだまだ全然詳しくないので。。。
>printer.canvasを使うと、印刷後、用紙を送りすぎてしまいます。
これだけではわかりません.印刷の時の用紙設定と,プリンタにセット
した用紙など,他の情報というより,情報が全くありませんので...
>printer.canvasというのはそういうものなんでしょうか...。
そんなことはありません.多くの人はPrinter.Canvasを使い,また多くの
レポートツールがPrinter.Canvasを使用しています.
Printer.Canvasの方が一般的なのです.
至らない事ばかりですみませんっ。
印刷の設定は、用紙サイズが10×11インチで、トラクタユニットの設定にしています。用紙は縦が64mm、横が100mmです。(すみませんインチで表せなくて。)
用紙の選択ができれば、printer.canvasを使っても送りすぎずにできると思うのですが、用紙の選択ができないので、printer.canvasは使っていません。
参考にと教えて頂いた、NativPRNのプログラムでやっています。
printer.canvasでうまくやりたいのですが...。
>用紙の選択ができないので
これはユーザ定義の用紙が作成できないということでしょうか.
今,WindowsXPで確認しましたが,100mm×64mmの設定ができましたが
(PC-PR201/40のXP,2003用ドライバ使用)
(トラクタユニット,用紙セット位置は左端)
お使いのOSがわかりませんが,Windows9Xの場合でしたら,個別のプリンタ
ドライバ,2000,XPでしたら
http://homepage2.nifty.com/Mr_XRAY/Delphi/plSetPrinter/FreeSizePaper.htm
コードで設定したい場合は,NkPrinterや,手前みそですが拙作のコンボを
使ってみて下さい.それでもダメな場合は残念ですがNativPRを使うしかな
いでしょう.
ツイート | ![]() |