Tag: 打印

不使用互操作/非托管代码监视打印假脱机

背景: 我正在使用.NET 4.0在C#中编写应用程序。 它按特定顺序打印一堆文档。 这些文档有各种不同的类型,实际上是使用带有“print”动词的ShellExecute打印的。 为了确保订单不会混乱,我想检查所涉及的打印机的打印队列。 我的主循环看起来像: 在文档上调用“打印”操作 等待文档显示在打印队列中 重复直到完成 如何使用托管代码监控打印队列? 我发现了一些使用非托管调用做类似事情的好例子(例如: http : //blogs.msdn.com/b/martijnh/archive/2009/08/05/printmonitor-ac-print-spooler-monitor.aspx )。 此外,我知道如何查看c:\ windows \ system32 \ spool下的假脱机文件…并以这种方式解决问题。 但是,这些解决方案都没有令人满意……我正在调用非托管鳕鱼的数量,我觉得我应该用C ++编写应用程序。 (并没有.NET依赖/开销。) 主要问题:是否真的无法仅使用托管呼叫监控打印队列? 更一般的问题:我来自java世界,当我想要做一些特定于OS的事情或者需要与MS世界中的其他事物进行交互时,通常只使用.NET语言。 (例如SSIS组件。) 似乎每次我开始一个项目时我都会陷入同样的​​混乱:对本机函数,COM东西等的各种调用等。 次要问题:对于.NET哲学或实现,我是否缺少一些东西? (我是不是觉得托管库做得不够好?对于任何需要执行Windows特定操作的东西,例如操纵打印队列,.NET是错误的选择吗?)我得到(或者我认为)得到的.NET是理论上应该是独立于操作系统的……但是大多数现代操作系统肯定都有打印机和打印队列等等。 (所以如果你有做这些事情的generics调用,它们可以在每个平台的框架版本上实现..)

UWP直接从Windows应用程序打印而不带打印对话框

POS打印机是否只支持Epson打印机? (与https://msdn.microsoft.com/en-us/library/windows/apps/mt426652相关) 如何在不显示“打印对话框”的情况下将文档直接发送到打印机?

C#在尝试打印文档时阻止Adobe Reader窗口出现

由于我无法立即进入的原因,我需要在尝试打印文档时阻止Adobe Reader窗口打开。 在我之前处理这个问题的开发人员设置了以下标志,虽然我不确定他们是为了什么 – if (RegistryManager.GetAcrobatVersion() >= 9.0f) printerArg = “\”” + printerName + “\””; else printerArg = printerName; Process myProc = new Process(); myProc.StartInfo.FileName = fileName; myProc.StartInfo.Verb = “printto”; myProc.StartInfo.UseShellExecute = true; myProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; myProc.StartInfo.CreateNoWindow = true; myProc.StartInfo.Arguments = “\”” + printerName + “\””; bool result = myProc.Start(); if (myProc.WaitForInputIdle()) { if (!myProc.HasExited) […]

以静默方式打印报表服务器端

我正在尝试编写一个程序,允许我从服务器端代码打印ssrs报告(.rdl文件)到预定的打印机,而没有任何弹出窗口询问我想要使用哪台打印机可以这样做吗?

发送原始数据以打印不起作用

我想发送原始数据进行打印,避免选择打印机(快速打印)。 我正在尝试使用Microsoft提供的这个帮助程序: https : //support.microsoft.com/en-us/kb/322091#top 但是,当我调用该方法时: RawPrinterHelper.SendStringToPrinter(pd.PrinterSettings.PrinterName, s); 我的打印机开始工作(产生一些噪音),但它从不需要白纸并开始打印。 我用两台打印机试过它,两台打印机的行为都是一样的。 此外,我放弃了打印机坏了的可能性,因为我可以打印其他文件。 有什么不对?

在Windows中以编程方式确认成功打印

我公司正在开发一个财务应用程序。 现在我们必须处理一项新法律,要求我们采取不同的行动,无论是否打印收据。 使用Windows中的标准打印队列将收据打印在A4纸上的激光打印机上。 有没有办法以编程方式检查某个打印作业是否确实成功了? 需要它的模块是用c#开发的。

以编程方式更改WinForms WebBrowser控件的目标打印机

我正在尝试使用不可见的WebBrowser控件来打印一个非常简单的HTML文档。 我们的应用程序要求我们能够以这种方式打印多个文档,并且它们都可以发送到不同的打印机。 不幸的是,我没有非常成功地使输出转到正确的打印机。 它现在的工作方式是在打印文档之前,应用程序确定要接收哪个打印机,并相应地设置默认打印机。 为此,它使用从WinSpool.drv导入的SetDefaultPrinter()。 如果我在调试模式下执行代码,我可以清楚地看到默认打印机更改(并且此更改反映在控制面板UI中),但WebBrowser仍然坚持使用原始默认打印机。 从我所看到的MSDN文档并没有真正为这种情况提供解决方案。 我非常感谢有关如何以编程方式完成此操作的一些输入。

检测PrintDocument何时成功打印(不仅仅是预览)

我在我的应用程序中使用PrintDocument进行一些自定义打印。 我的项目成功打印时需要记录。 我最初通过以下方式实现了这个目标 print_doc.EndPrint += (o,e) => printed_callback (); 打印完成后调用printed_callback 。 但是,现在我正在添加预览支持,我将PrintDocument以完全相同的方式传递到PrintPreviewDialog中 。 这样做会导致在初始呈现预览所需的打印输出后调用EndPrint事件。 因此,即使用户单击“预览”然后关闭预览,也会调用我们的日志记录代码。 有关如何区分真实打印输出和“预览打印”的任何建议? 不幸的是,由于用户可能会单击预览对话框中的“打印”按钮并触发打印输出,因此我不能仅为传递给PrintPreviewDialog的PrintDocument连接到EndPrint 。

在C#应用程序中使用b-pac SDK标记打印开发

我正在Visual Studio 2012 RC中开发一个POS系统的C#应用程序 。 我必须使用标签打印机打印销售 兄弟P-Touch QL-500标签打印机。 我已经做了什么。 我已经安装了最新的b-pac SDK 3.0 成功添加对我的C#应用​​程序的引用。 为了创建标签模板,我安装了最新版本的p-touch Editor 5.0。 制作了一个模板(Mylabel.lbl)。 但在那之前。 我运行一些内置的示例,但这些示例引发exception。 在谷歌上做了很多搜索之后我发现这是打印机的驱动程序问题 。 我无法安装驱动程序,因为驱动程序的安装需要连接打印机。 我没有打印机。 我需要做什么 你知道我怎么能做这个任务吗? 使用兄弟P-Touch QL-500标签打印机打印标签的正确方法是什么。 请帮帮我,我已经做了很多时间搜索。 stackoverflow是我最后的希望。 我是这种标签印刷的新手。 请帮助我将非常感激。 我正在使用的ruff示例代码。 bpac.DocumentClass doc = new DocumentClass(); if (doc.Open(“templateFile.lbx”)) { doc.GetObject(“field1”).Text = “…”; doc.GetObject(“field2”).Text = “…”; doc.StartPrint(“”, PrintOptionConstants.bpoDefault); doc.PrintOut(1, PrintOptionConstants.bpoDefault); doc.EndPrint(); doc.Close(); } 这是我正在尝试的示例代码。 第一行引发exception […]

如何从C#中的DataGridView打印数据?

我正在开发一个程序,我需要打印DataGridView控件中显示的Bills数据。 我想知道代码如何在DataGridView中打印数据。 我正在使用Visual Studio 2008和C#3.5