2017-05-03 20 views
6

私の要件は、請求書を印刷する必要があることです。請求書を印刷する必要があります。すべてのものが1つの請求書に含まれている必要があります。TVSドットマトリックスプリンタを使用した.NET PrintDocumentの動的紙の高さ

あなたがスーパーに行く場合、3つのアイテムを購入すると、小さなサイズの請求書を得ることがあります。 30個のアイテムを購入すると、大きなサイズの請求書を取得する可能性があります。私は私のvb.NETアプリケーションで同じものを実装したい。

正確には、請求書の性質に応じてプログラムによってプリンタページの長さを増やす方法が必要です。

私はドットマトリックスプリンタとグラフィックモード印刷を使用しています。

私が試してみました:

を今のところ、私はテキストファイルを作成し、コマンドの下

Type Printfile.txt > prn 

を使用してコマンドラインプリントを通してそれを印刷する。しかし、問題は私がすることはできませんよですテキストファイル(メモ帳)として書いているので、別のフォント、太さ、またはサイズのテキストファイルをフォーマットします。

私はVB.NETからファイルを書き込むためにストリームライターを使用しています。今はテキストファイルでフォーマットしようとしています。

いくつかの単語を太字またはイタリックにしてフォントサイズを変更したいのですが、テキストファイルで書式を設定しているので、できません。


Store Name 
Store Address 
----------------------------------------  
Gift Receipt 

Transaction #:   105 
Date: 11/10/2009  Time: 6:10:10 
Cashier: 2   Register: 5 
----------------------------------------  
Item   Description  Quantity 
---------------------------------------- 
567577   xyz    2 
687687   abc    4 
– –   – –    – 
---------------------------------------- 
        Net Amount : 6 

Thank You for shopping 
XYZ StoreName 
We hope you’ll come back soon! 

+1

のドキュメント。テキストのフォーマット(列、行など)は何ですか?どのような技術(Excel、pdfなど)をフォーマットするために使用していますか?どのようにプリンタに送るのですか?乞食から終わりまで、*道*はやるべきことがたくさんあります。それが立てば、この質問は広すぎます。もしできれば、私は投票に投票するだろう。 – djv

+1

コードの試行を確認する必要があります。上記のように、これは広範囲に見える。やりたいことはたくさんありますが、どこから始めたらいいか分かりません。 – Bugs

+0

em update code too –

答えて

4

があなたの代わりにHTML形式の請求書を印刷するために、WebBrowserコントロールを使用することができます。

は以下の形式です。必要に応じて、テキストファイルから請求書を取り込む方法をまだ理解しておく必要があります。これは自動化することができます。たとえば、各テーブル行を追加するループを作成します。あなたはcssを使うことさえできます。

あなたは、ドキュメントの完全な(または別の印刷ボタンのハンドラが必要になりますが、ポイントはShowPrintDialog()を前に呼び出すことはできませんされて

Dim html = 
    "<html>" & 
     "<head>" & 
      "<style>" & 
       "table, th" & 
       "{" & 
        "border: 1px solid black;" & 
        "table-layout: fixed;" & 
        "width: 100px;" & 
        "border-collapse: collapse;" & 
       "}" & 
       ".title" & 
       "{" & 
        "color: blue;" & 
       "}" & 
      "</style>" & 
     "</head>" & 
     "<body>" & 
      "<p><b><div class=""title"">Store Name</div></b></p>" & 
      "<p>Store Address</p>" & 
      "<p><hr/></p>" & 
      "<p><b>Gift Receipt</b></p>" & 
      "<p>Transaction #:   105</p>" & 
      "<p>Date: 11/10/2009  Time: 6:10:10</p>" & 
      "<p>Cashier: 2   Register: 5</p>" & 
      "<p><hr/></p>" & 
      "<table>" & 
       "<tr>" & 
        "<th>Item</th>" & 
        "<th>Description</th>" & 
        "<th>Quantity</th>" & 
       "</tr>" & 
       "<tr>" & 
        "<th>567577</th>" & 
        "<th>xyz</th>" & 
        "<th>2</th>" & 
       "</tr>" & 
       "<tr>" & 
        "<th>687687</th>" & 
        "<th>abc</th>" & 
        "<th>4</th>" & 
       "</tr>" & 
       "<tr>" & 
        "<th>- -</th>" & 
        "<th>- -</th>" & 
        "<th>-</th>" & 
       "</tr>" & 
       "<tr>" & 
        "<th colspan=""2"">Net Amount</th>" & 
        "<th>6</th>" & 
       "</tr>" & 
      "</table>" & 
      "<p><hr/></p>" & 
      "<p>Thank You for shopping</p>" & 
      "<p>XYZ StoreName</p>" & 
      "<p>We hope you’ll come back soon!</p>" & 
     "</body>" & 
    "</html>" 

Me.WebBrowser1.DocumentText = html 

をフォームにWebBrowserコントロールを追加し、このコードを実行します文書が完成しました)。

Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted 
    Me.WebBrowser1.ShowPrintDialog() 
End Sub 

上記のコードは、フォーマットされていても基本的なレシートを生成します。すべての行を印刷することができ、ドットプリンタにおいて

enter image description here

+0

あなたの答えをありがとう。試してみましょう。それと同時にカスタム用紙の長さをサポートしますか?それは10行を含んでもよく、または20行を含んでもよい。すべてのものが1つの請求書に含まれている必要があります。 –

+0

もちろん、理由の中で。行数が多い場合は、表とフォントのサイズを小さくすることができます。適切なサイズを見つけるには数回の試行が必要です。あなたが100の項目を持っていたなら、もちろんあなたは1ページにそれを適合させたくないかもしれません。したがって、いくつかのロジックをプログラムに書き込む必要があります。 – djv

+0

これはうまくいくとは思わないが、問題はウィンドウがページをどのように処理するかにある。これを行うには、印刷が完了したら次のページに進まないようにドライバを慎重に設定する必要があります。 –

0

終わりに、生の印刷を使用して紙を切断するASCIIコードを送信し、(何なし母校)。

ESC O(プリンタの前面から用紙を排出する)、ESC 0/ESC 1(プリンタ/プリンタを初期化するには、リセットエラー)またはベル/ブザー:エスケープコードはBEL

コードはブランドごとに変更され、プリンタモデルでは変更されることがあります。また、いくつかのモードまたはPage description languages (PDL)を持つことができます。 HPはまた、それをPrinter Command Language(PCL)とも呼んでいます。最も一般的なものはEpson PDLです。

example in C#、あなたはプレーンテキストファイルを持っている、とあなたが紙の上のフォーマットされた請求書に取得したいwin32 api