cle*_*ath 5 .net printing reporting report rdlc
我想要完成的
要求:打印一张A4宽一半A4高的收据并旋转打印,以便在连续A4(CCP)上打印。

我总是得到什么

我试过的
RDLC 报告被定义为 205 毫米 x 145 毫米,因此它应该很好地适合可用空间。
我已经尝试了以下
PrintingBegin事件ReportViewer并设置DefaultPageSettings为相同的纸张大小没有任何帮助。我似乎记得在某处读到如果报告高度小于宽度,打印输出会自动旋转为横向。不知道能不能关掉这个功能...
更新:页面大小为 208 毫米 x 147 毫米,所有边距为 12 毫米。报告的主体为 173mm x 121mm
小智 1
我要尝试一下。\n我的猜测是您正在使用一组打印库,这些库在高级中运行良好,但您应该使用更多“手动”的库。\n我爸爸拥有一家咖啡店,我做了他的POS软件。我们的收据打印机仅打印所需的行以及我要给您的代码。我猜这种移动方式可能适合你。
\n\n此方法不打印图像,仅打印文本,这一点很重要。
\n\n我的代码中的打印方法好像和你的不一样;他们是“性格敏感的”。这意味着,如果您需要 3 个空格笔画的页边距,则需要先写 3 个空格键笔画,然后再写您的文本。
\n\n要运行此代码,您必须创建一个“.txt”,然后将该文本文件作为参数发送给打印类。\n我不确定您使用的是 C# 还是 VB,我的代码\ 是 c# 中的。
\n\n因此,首先,要在程序中的任何位置创建文本文件,您需要标题:
\n\nusing System.IO;\nRun Code Online (Sandbox Code Playgroud)\n\n然后,您将开始创建文本文件:
\n\nStreamWriter sw = new StreamWriter("receipt.txt");\nRun Code Online (Sandbox Code Playgroud)\n\n这会在您当前的文件夹中创建一个文件 - 与您的 .exe 所在的文件夹相同。它还会覆盖旧的文件,因此您无需担心以前是否存在同名文件。\n要写入收据行,您将使用:
\n\nsw.WriteLine(" the text is supposed to be written, you may use concatenations ");\nRun Code Online (Sandbox Code Playgroud)\n\nWriteLine 方法将一行文本写入文件,然后移至下一行。
\n\n当你完成写入后,你需要关闭文件...
\n\nsw.Close();\nRun Code Online (Sandbox Code Playgroud)\n\n然后你需要打电话给我给你的印刷班。假设您已经拥有它,您需要创建它的一个实例,如下所示:
\n\nPimpMyPrint p = new PimpMyPrint();\nRun Code Online (Sandbox Code Playgroud)\n\n然后调用 PrintDoc 方法...
\n\np.PrintDoc("receipt.txt");\nRun Code Online (Sandbox Code Playgroud)\n\n再说一遍,您仍然需要一个具有所有必要方法的类。\n我不会为该类获得学分;这是来自西班牙的作家弗朗西斯科·哈维尔·塞巴洛斯的作品。Ceballos 先生是西班牙语 SD 社区的知名作者,这来自他的书《Microsoft C# Curso de programaci\xc3\xb3n》。
\n\n这是您需要添加的类:
\n\nusing System;\nusing System.IO;\nusing System.Drawing;\nusing System.Drawing.Printing;\n\nnamespace SomeNamespace\n{ \n class PimpMyPrint\n {\n private Font font;\n private StreamReader sr;\n\n public void PrintDoc(string textfile)\n {\n try\n {\n sr = new StreamReader(textfile);\n\n try\n {\n font = new Font("Arial", 10);\n PrintDocument pd = new PrintDocument();\n pd.PrintPage += new PrintPageEventHandler(this.PrintPage);\n pd.Print();\n }\n finally\n {\n sr.Close();\n }\n }\n catch (Exception e)\n {\n Console.WriteLine(e.Message);\n }\n }\n\n private void PrintPage(object obj, PrintPageEventArgs ev)\n {\n float LinesPerPage = 0;\n float pos_Y = 0;\n int count = 0;\n float marginLeft = ev.MarginBounds.Left;\n float marginUP = ev.MarginBounds.Top;\n string line = null;\n\n float fontHeight = font.GetHeight(ev.Graphics);\n LinesPerPage = ev.MarginBounds.Height / fontHeight;\n\n while (count < LinesPerPage && ((line = sr.ReadLine()) != null))\n {\n pos_Y = marginUP + (count * fontHeight);\n ev.Graphics.DrawString(line, font, Brushes.Black, 0, pos_Y, new StringFormat());\n count++;\n }\n\n if (line != null)\n ev.HasMorePages = true;\n else\n ev.HasMorePages = false;\n } \n } \n} \nRun Code Online (Sandbox Code Playgroud)\n\n我希望这对你有用,就像对我有用一样!
\n| 归档时间: |
|
| 查看次数: |
2871 次 |
| 最近记录: |