Tag: 打印

将BlockUIContainer打印到XpsDocument / FixedDocument

题 如何打印具有BlockUIContainer的FlowDocument? 如何在FlowDocument上强制执行度量/更新/排列? 背景 我有一个生成的FlowDocument ,其中包含一些文本段落,其中一些Rectangle元素填充了来自资源字典的DrawingBrushes和带有自定义控件的BlockUIContainer 。 当文档转换为FixedDocument / XpsDocument时,在任何FlowDocument *控件中查看时,文档都会正确呈现,而Rectangle或BlockUIContainer元素都不会呈现。 我几乎可以肯定这是因为没有测量/安排控件,但是无法弄清楚如何在转换为XpsDocument之前强制执行。 我已经递归地走了LogicalTree并完成了以下操作, UIElement element = (UIElement)d; element.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity)); element.Arrange(new Rect(element.DesiredSize)); element.UpdateLayout(); 其中d是DependencyObject 。 我可以看到,这在调试器中以break-pointed为单位时设置ActualWidth和ActualHeight属性。 我已经尝试强制Dispatcher按照Will♦的建议进行渲染。 用于打印XpsDocument的代码 public class XpsDocumentConverter { public static XpsDocumentReference CreateXpsDocument(FlowDocument document) { // Need to clone the document so that the paginator can work FlowDocument clonedDocument = DocumentHelper.Clone(document); Uri […]

为什么此flowdocument表始终打印2列

我的WPF应用程序中有一个ListView,它绑定到要执行的任务集合(待办事项列表)。 我希望用户能够打印他们的列表,并根据MSDN指南创建以下代码。 (这是我第一次涉足印刷业) public FlowDocument GetPrintDocument() { FlowDocument flowDoc = new FlowDocument(); Table table = new Table(); int numColumns = 3; flowDoc.Blocks.Add(table); for(int x=0;x<numColumns;x++) { table.Columns.Add(new TableColumn()); } GridLengthConverter glc = new GridLengthConverter(); table.Columns[0].Width = (GridLength)glc.ConvertFromString("300"); table.Columns[1].Width = (GridLength)glc.ConvertFromString("50"); table.Columns[2].Width = (GridLength)glc.ConvertFromString("50"); table.RowGroups.Add(new TableRowGroup()); table.RowGroups[0].Rows.Add(new TableRow()); // store current working row for reference TableRow currentRow […]

POS应用程序开发 – 收据打印

我一直在为餐馆/酒吧建立一个POS应用程序。 设计部分已经完成,过去一个月我一直在编码。 一切正常,但现在我需要打印。 我必须打印到连接到运行软件的计算机的收据打印机,然后我会尝试在像厨房一样的远程打印机上打印。 我在这个问题上寻求帮助,却发现这些类型的打印机的打印标准是使用POS for .NET。 问题是,这已经过时了,或者至少几年后它没有任何更新。 关于如何使用这个库有很多问题,大多数答案都不容易理解。 因此,如果任何人可以在收据打印机上像一个简单的短语(“Hello World”)一步一步地帮助打印,我将非常感激。 我正在使用64位Windows 7上运行的visual studio 2012,我在c#中编写WPF代码。

C#中的点阵打印?

我正在尝试使用C#打印到Dot Matrix打印机(各种型号),目前我正在使用Win32 API(您可以在网上找到很多示例)调用将转义码直接从我的C#应用​​程序发送到打印机。 这很棒,但…… 我的问题是因为我正在生成转义码并且不依赖于Windows打印系统,打印输出无法发送到任何“普通”打印机或PDF打印驱动程序等。 (这现在导致问题,因为我们尝试使用Easy Print [基于XPS]在2008终端服务器上使用该应用程序] 问题是:如何使用C#打印格式化文档(预打印固定发票)到Dot Matrix打印机(Epson,Oki和Panasonic …各种型号)不使用直接打印,转义码等。 **只是为了澄清一下,我正在尝试像GDI +(System.Drawing.Printing)之类的东西,但问题是它很难,就像旧代码那样排队。 (旧代码绕过Windows驱动程序将字符直接发送到打印机。)有什么建议可以改进,以便他们可以使用GDI +,但仍像旧代码一样排队吗?

如何将List 的值在将其编码为c#中的条形码后添加到List 中

我有两个List一个是字符串,另一个是PictureBox类型。 我想取List类型字符串的值,然后将其转换为条形码,然后将其保存到PictureBox类型的List中。 我现在这样做: List PictureBoxList = new List(); List SerialNumberList = new List(); int SerialNumberStart = 0; for(int i = 0; i < 10 ; i++) { SerialNumberStart++; SerialNumberList.Add("S" + SerialNumberStart); } private void PrintButton_Click(object sender, EventArgs e) { for(int j =0 ; j < SerialNumberList.Count ; j++) { BarcodeLib.TYPE barcodetype1 = BarcodeLib.TYPE.CODE39; BarcodeLib.Barcode bar1 […]

PrintPage PrintPageEventHandler打印太多副本

我必须为我们公司生产的产品打印运输标签。 为了让我自己了解这些标签的结果,我使用Windows窗体进行设计。 这允许我使用Label控件定位我的文本,设置正确的字体等,添加自定义BarCode控件,并使用Panel控件“ 花哨 ”将项目分组到框中。 每页包含两(2)个标签。 当我的代码打印标签文档时,我要求2,4或6份副本。 有时,也会使用“打印预览”。 在这种情况下,我必须重置创建的标签数量。 但是,当文件打印时: 如果请求是2份,代码打印2张纸(4个标签) 如果请求是4份,代码打印8张纸(16个标签) 如果请求是6份,代码打印高达18页(36个标签) 有没有人看到一种模式? 我不。 这是我的打印命令: public int Print(string docName, int rows, int columns, int copies) { short shortCopies = (short)copies; LabelsHorizontal = rows; LabelsVertical = columns; Size docSize = PrintPreview.Document.DefaultPageSettings.Bounds.Size; float height = 0.8F * Screen.PrimaryScreen.WorkingArea.Size.Height; float width = (height * docSize.Width) / docSize.Height; […]

使用ManagementClass将打印机添加到本地计算机

我看到参考和提示,以编程方式可以使用ManagementClass等将网络打印机添加到本地计算机。 但是我还没有找到任何有关这方面的实际教程。 有没有人实际使用过ManagementClass呢? 我这样做: var connectionOption = new ConnectionOption(); var mgmScope = new ManagementScope(“root\cimv2”,connectionOptions); var printerClass = new ManagementClass(mgmScope, new ManagementPath(“Win32_Printer”),null); var printerObj = printerClass.CreateInstance(); printerObj[“DeviceID”] = prnName; // printerObj[“DriverName”] = drvName; // full path to driver printerObj[“PortName”] = “myTestPort:”; var options = new PutOptions {Type = PutType.UpdateOrCreate}; printerObj.Put(options); 所有这一切都是创建一个错误“通用失败” 我无法弄清楚我错过了什么…..任何有关这方面的帮助或想法将不胜感激。 我想我需要更好地解释我想要做什么…当打印机需要的打印机没有绑定时,我需要:创建一个tcpip原始端口,通过tcp / ip连接打印机,安装驱动程序,可选默认设置。 我希望WMI能够基本上处理所有这些,但似乎并非如此。 […]

收据打印的中心文本

我有一些代码,我用它来打印C#的收据。 下面的代码打印正常,但我正在努力调整左右中心的文本, Graphics graphics = e.Graphics; Font font = new Font(“Courier New”, 10); float fontHeight = font.GetHeight(); int startX = 0; int startY = 0; int Offset = 0; graphics.DrawString(“Welcome to MSST”, new Font(“Courier New”, 14), new SolidBrush(Color.Black), startX, startY + Offset); Offset = Offset + 20; graphics.DrawString(“Recept No :” + receptno + 1, new […]

使用C#将ESC命令发送到打印机

我的应用程序需要打印发票,然后从数据库中获取发票,在大字符串中插入发票上的信息(告诉行,列等),之后我准备将字符串发送到打印机。 我的问题是:我需要在我的大字符串中放入一些ESC / P命令/字符 我试着这样做: char formFeed = (char)12; Convert.ToChar(12); MyBigString.Insert(10, formFeed); 这样,第10行将执行FormFeed,但这不起作用 注意:我将MybigString一次性发送到打印机。 为了使我的代码有效,我需要逐行将数据发送到打印机? 谢谢您的帮助。 PS:对不起,对于我的英语,我是一名不会说英语的巴西开发人员。

水晶报告| 印刷| 默认打印机

我正在创建一个应用程序,用户将打印我使用Crystal Report显示的发票。 用户向我展示了他目前使用ForPro制作的应用程序。 在该应用程序中,在“打印机选项”窗体下,可以看到当前安装的所有打印机,用户可以选择默认打印机。 发票开始后,用户按下打印按钮,然后有一个对话框询问否。 的副本。 输入后,发票直接打印,没有任何打印对话框。 如果用户想要再次更换打印机,他/她将在“打印机选项”表单中更改它。 我想知道Crystal Report中是否有类似的东西,并且需要有关如何处理它的指导。