Tag: 打印

和打印机说话

有没有办法编写一些可以与打印机“对话”的代码,以获得有关它状态的一些基本信息? 我真正感兴趣的是发现纸张是否缺纸还是卡纸 – 这种性质的东西。 我应该为这类东西使用System.Management库吗? PS – 知道如何掌握在特定PC上设置的所有打印机也很方便。 你会怎么做?

如何在C#.NET中捕获打印作业

我正在尝试捕获在本地网络中提交给打印机的每个打印作业。 我想显示工作的一些属性,如工作名称,提交时间等。 我尝试了一个while循环,但它没有捕获我的打印作业,也许是因为它在线程正在睡觉时发生。 有没有我可以注册和处理的事件? 我不想花费所有CPU资源来完成此任务的infinetly循环。 我试过这个: public static void WritePrinterJobs() { while (true) { foreach (var job in LocalPrintServer.GetDefaultPrintQueue().GetPrintJobInfoCollection()) { Console.WriteLine(job.Submitter + ” ” + job.TimeJobSubmitted.ToShortDateString()); } Thread.Sleep(100); } } 编辑:上面的代码实际上工作,你不需要更低级别,如果它适合你,我的错误是没有正确配置默认打印机。

将Panel保存为JPEG,仅保存可见区域c#

我正在尝试保存,然后在c#中打印一个面板。 我唯一的问题是它只保存可见区域,当我向下滚动时它会打印出来。 Bitmap bmp = new Bitmap(this.panel.Width, this.panel.Height); this.panel.DrawToBitmap(bmp, new Rectangle(0, 0, this.panel.Width, this.panel.Height)); bmp.Save(“c:\\panel.jpg”, System.Drawing.Imaging.ImageFormat.Jpeg);

更改打印机默认纸张尺寸

我在打印机上定义了几种自定义纸张尺寸(打印机默认设置)。 我需要能够选择其中一种格式作为默认格式。 程序化(C#)解决方案是理想的,但命令行也可以。 现在,我可以获得打印机上定义的纸张尺寸(名称/尺寸)列表,我可以找出哪个是默认值。 为了选择另一种格式作为默认格式,我到目前为止唯一的解决方案是更改devMode结构上的dmPaperSize字段; 但是我找不到与所需纸张格式相对应的正确值。 所以我将dmPaperSize设置为0,然后递增它,直到打印机上出现正确的格式。 这在一些打印机上需要很长时间。 是否有另一种方法可以在默认打印机上选择(按名称)默认的papaer格式?

如何用C#打印PDF

我试图解决这个问题将近2天。 网上有很多或更少的好解决方案,但没有一个完美适合我的任务。 任务: 以编程方式打印PDF 使用固定打印机进行操作 不要让用户做多个Button_Click 做到沉默 – 越多越好 做客户端 第一解决方案 使用Forms.WebBrowser执行此操作 如果我们安装了Adobe Reader,则有一个插件可以在webbrowser中显示PDF。 有了这个解决方案,我们有一个很好的预览和webbrowserControlName.Print()我们可以触发控件来打印其内容。 问题 – 我们还有一个PrintDialog。 使用start参数启动AcroRd32.exe 以下CMD命令让我们使用Adobe Reader打印PDF。 InsertPathTo .. \ AcroRd32.exe / t“C:\ sample.pdf”“\ printerNetwork \ printerName” 问题 – 我们需要AcroRd32.exe的绝对路径 有一个Adobe Reader窗口打开,必须打开它,直到打印任务准备就绪。 使用Windows预设 Process process = new Process(); process.StartInfo.FileName = pathToPdf; process.StartInfo.Verb = “printto”; process.StartInfo.Arguments = “\”” + printerName + “\””; […]

在卷纸上打印

我正在使用带Winforms的C#。 我想在纸卷上打印钞票。 纸张的宽度为3英寸,但纸张的长度是动态的(它是卷纸)。 长度取决于列表中有多少项。 例如,在购买时如果有100件商品售出那么它将是相当长的卷,而对于购买的单件商品它将是很小的长度。 当我打印报告时,在结束作业之后,打印机会弹出最后一页而不是我需要的页面。 只要A4尺寸就可以弹出纸张。 我想打印所需的行,然后停止打印。 我使用一卷纸,而不是A4或A3和Epson LQ-300 + II打印机。 更具体地说,始终对页面大小的单元进行打印。 如果我将页面设置为3英寸x 8英寸,那么我总是打印出8英寸长的打印输出。 如果我要打印一张9英寸的钞票,我最终会打印出16英寸的纸张,浪费7英寸的纸张。 如何打印最后一页只需要它就可以了? 这是代码: private void printDoc_PrintPage(Object sender, PrintPageEventArgs e) { Font printFont = new Font(“Courier New”, 12); int y = 15; e.Graphics.DrawString(“a Line”, printFont, Brushes.Black, 0, y); y = y + 20; e.Graphics.DrawString(” Line”, printFont, Brushes.Black, 0, y); y = […]

c#检查打印机状态

在我的应用程序(Windows 7,VS2010)中,我必须在成功打印图像后减少信用计数器。 无论如何,在开始整个过程​​之前,我想了解打印机状态,以便在纸张,卡纸等方面提醒用户。 现在,环顾四周我发现了几个使用Windows WMI的例子,但是……从来没有用过。 例如,使用THIS代码段,如果我取出纸张,打开盖子,打印机状态也随时可用…关闭打印机。 现在打印机状态总是很好,我正在办公室测试打印机在家里舒适地关闭。 让我用炸药引爆设备以获得打印机错误状态? 这是我用过的代码 ManagementObjectCollection MgmtCollection; ManagementObjectSearcher MgmtSearcher; //Perform the search for printers and return the listing as a collection MgmtSearcher = new ManagementObjectSearcher(“Select * from Win32_Printer”); MgmtCollection = MgmtSearcher.Get(); foreach (ManagementObject objWMI in MgmtCollection) { string name = objWMI[“Name”].ToString().ToLower(); if (name.Equals(printerName.ToLower())) { int state = Int32.Parse(objWMI[“ExtendedPrinterStatus”].ToString()); if ((state == […]

使用C#.net直接将打印命令发送到LPT并行端口

在DOS中我们可以这样做: ECHO MESSAGE>LPT1 我们如何在C#.NET中实现同样的function? 使用C#.NET将信息发送到COM1似乎很容易。 LPT1端口怎么样? 我想将Escape命令发送到热敏打印机。

在WPF中打印DataGrid中的所有数据

我正在研究WPF应用程序。 我在DataGrid中有数据,我必须打印其中的所有数据。 我试过这个…… publicMainWindow() { InitializeComponent(); DataTabledt = newDataTable(); dt.Columns.Add(“S.No”); dt.Columns.Add(“Name”); dt.Columns.Add(“Father’s Name”); dt.Columns.Add(“DOB”); dt.Columns.Add(“Qualification”); dt.Columns.Add(“Gender”); dt.Columns.Add(“SSC %”); dt.Columns.Add(“+2 %”); dt.Columns.Add(“Graduation %”); dt.Columns.Add(“Work Experience”); dt.Columns.Add(“Company”); object[] rowValues = {“01″,”Gopi”,”Ravi”,”31″,”Degree”,”M”, “88”,”85″, “80”,”2 Years”,”Blah Blah”}; dt.Rows.Add(rowValues); dt.AcceptChanges(); myGrid.DataContext = dt.DefaultView; } privatevoidPrint_Click(object sender, RoutedEventArgs e) { PrintDialogprintDlg = newPrintDialog(); if ((bool)printDlg.ShowDialog().GetValueOrDefault()) { Sizepagesize = newSize(printDlg.PrintableAreaWidth,printDlg.PrintableAreaHeight); myGrid.Measure(pagesize); myGrid.Arrange(newRect(5, […]

使用EPL2打印语言打印bmp文件时出现大黑线

这是本主题的第3部分。 第1 部分 , 第2部分 。 我成功地将单色位图打印到我的打印机,但是当打印项目时,图像右侧有一个大的黑色条纹。 这是原作 (扫描)打印机打印的内容 用于生成二进制blob的代码 Rectangle rect = new Rectangle(0, 0, Bitmap.Width, Bitmap.Height); System.Drawing.Imaging.BitmapData bmpData = null; byte[] bitVaues = null; int stride = 0; try { bmpData = Bitmap.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, Bitmap.PixelFormat); IntPtr ptr = bmpData.Scan0; stride = bmpData.Stride; int bytes = bmpData.Stride * Bitmap.Height; bitVaues = new byte[bytes]; System.Runtime.InteropServices.Marshal.Copy(ptr, […]