我的要求是我需要打印发票,它可能包含10行或者可能包含20行。每件事都应该在一张发票中。
例如如果你去任何超市,如果你买3件物品,你可能会收到小额账单。如果您购买30件商品,您可能会收到大笔账单。我想在我的vb.NET应用程序中实现相同的功能。
我确实需要根据账单的性质通过程序增加打印机页面长度。
我正在使用点阵打印机和图形模式打印。
我尝试过:
截至目前,我已创建了文本文件,并使用以下命令
通过命令行打印进行打印Type Printfile.txt > prn
但是,问题是我无法使用不同的字体,重量或大小格式化我的文本文件,因为我将其写为文本文件(记事本)。
我正在使用streamwriter从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!
答案 0 :(得分:4)
您可以使用WebBrowser控件来打印html格式的发票。您仍然需要根据需要了解如何从文本文件中填充发票。这可以自动化。例如,创建一个循环来添加每个表行。你甚至可以使用css。
将WebBrowser控件添加到表单,然后运行此代码
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
您需要一个文件管理处理程序(或单独的打印按钮,但在文档完成之前无法调用ShowPrintDialog()
点。)
Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
Me.WebBrowser1.ShowPrintDialog()
End Sub
以上代码生成了这个基本格式的收据。
答案 1 :(得分:0)
在点式打印机中,谁可以打印所有行(无论多少行),最后发送ascii代码以使用原始打印来剪切纸张。
您可以发送FF(换页,从打印机后部弹出纸张),但不能退出ESC O(从打印机前面弹出纸张),ESC 0 / ESC 1(初始化打印机/复位)错误)甚至是铃声/蜂鸣器:转义码是BEL
代码在品牌之间变化,有时在打印机型号中变化。您也可以使用多种模式或Page description languages (PDL)。惠普也将其称为打印机命令语言(PCL)。最常见的是Epson PDL。
的文档