我在一个可以接受已经创建的PDF文件并直接发送到打印机的库之后.我不希望用户需要安装Adobe Reader或其他任何东西,应用程序将生成PDF并且我想要打印它.
我试图解决这个问题将近2天.网上有很多或更少的好解决方案,但没有一个完美适合我的任务.
使用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 Window打开,必须打开它,直到打印任务准备就绪.
使用Windows预设
Process process = new Process();
process.StartInfo.FileName = pathToPdf;
process.StartInfo.Verb = "printto";
process.StartInfo.Arguments = "\"" + printerName + "\"";
process.Start();
process.WaitForInputIdle();
process.Kill();
Run Code Online (Sandbox Code Playgroud)
问题 - 仍然有一个Adobe Reader窗口弹出,但在打印完成后它通常会自动关闭.
解决方案 - 说服客户使用福昕阅读器(不要使用最后两行代码).
将PDF页面转换为Drawing.Image
我不知道怎么用代码来做这件事,但是当我让它上班时剩下的只是小菜一碟.Printing.PrintDocument可以满足所有需求.
最诚挚的问候,马克斯
我在文本文件中有zebra TLP2844打印机的脚本代码.我需要将该脚本文件打印到通过USB连接的打印机.我使用DOS命令使用并行端口执行该脚本:
/c type filename.txt >PRN
Run Code Online (Sandbox Code Playgroud)
但是打印机与USB连接在一起.如何向usb发送打印命令?我应该使用printdocument类吗?
这是我的示例代码.但它打印的是一个空页面
printDocument1.DocumentName = "C:\a.pbf";// PrintDocument printDocument1
printDialog1.Document = printDocument1;
printDialog1.AllowPrintToFile = true;
printDialog1.AllowSelection = true;
printDialog1.AllowSomePages = true;
printDialog1.PrintToFile = true;
if (printDialog1.ShowDialog() == DialogResult.OK)
printDocument1.Print();
Run Code Online (Sandbox Code Playgroud)
这有什么不对吗?请帮我
目标
我工作的公司目前使用黑匣子运输系统。每天早上,我们的货运经理都会为他的司机打印货运单。我想使用 C# 将每张票打印为 PDF 保存一份副本。保存为 PDF 的操作应在幕后完成。
注意:PDF 副本将作为硬拷贝的补充,但是,我想在打印硬拷贝时生成 PDF 副本(或者如果我可以使用保存的打印作业,则直接在打印后生成 PDF 副本)。
最终结果:经理打印一份硬拷贝,并将 PDF 保存到存档文件夹中,无需经理进行任何交互。
我尝试过的
我已指示打印机在打印后“保留打印的文档”。这会在后台打印文件夹中留下一个 .shd 和一个 .spl 文件。我已经尝试过该类PrintDocument,但我找不到任何方法来指示作业使用已完成的打印作业重新打印(到 PDF 驱动程序)。
问题
我想要完成的事情可能吗?
进一步澄清:
如果不清楚,我不希望经理再次将文档打印到 PDF 打印驱动程序。平均而言,他每天早上必须打印 60 张罚单,然后才能派司机出去。我不想将该数字增加到 120 并强迫他输入文件名。
此外,“黑匣子”运输系统还包括运行我们制造工厂其他部分的其他模块 - 无法更改软件。
我正在编写一个应用程序,它执行一些测试并生成许多不同的报告.这些可以是标签,最终客户的PDF,维修部门的PDF,XML文件等的任意组合.
根据报告类型,我需要将文件发送到文件系统或许多不同的打印机之一(A4,标签等).理想情况下,应该没有弹出窗口 - 只是直接用纸.
如何将文件(PDF,XML)发送到打印机?我曾经想过,对于XML/Text,我可以将File.Copy转换为LPTn,但这似乎不起作用.对于PDF我猜我可以用一些导致PDF打印的参数调用Acrobat.
我使用的打印机映射到LPTn.有没有更好的方法来执行此操作并将定义存储在应用程序中?即标签转到MyLabelPrinter,A4 PDF转到MyA4Printer.
有没有人这样做过?