问题标签 [system.printing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1411 浏览

linux - DNP DS620 切割问题上的自定义打印

大家好,我目前在树莓派上使用 DNP DS620,我正在使用 lpr 命令进行一些打印,例如lpr -P printername -o landscape picturename 这给了我一张 4x6 英寸(10x15cm)的图片

所以我可以用命令系统订购一些打印件(很好!)但我找不到任何方法来使用切割选项在最后制作一张双 2x6 英寸的图片。我知道一些 Epson 打印机使用该source=DocFeedCut命令,但在我的情况下它不起作用。

那么每个人都知道执行此操作的命令或执行此操作的方法吗?

0 投票
1 回答
1325 浏览

c# - 如何在 .NET 中以编程方式在信头纸、卡片纸、预印纸上打印

我正在尝试使用 System.Drawing.Printing 库从 WCF 服务进行打印。问题是我正在尝试选择此库中似乎不可用的信头纸、卡片纸或预印纸的纸张类型(或介质类型)。

System.Drawing.Printing 有一个 PageSettings 类,但我只能设置 PaperSize 并且没有用于 Letterhead、Cardstock、Pre-printed 等的 PaperSize。https: //msdn.microsoft.com/en-us/library/System .Drawing.Printing.PageSettings(v=vs.110).aspx

此外,PrinterSettings.PaperSources 中的 PaperSource 类不包含有关每个纸盘中的纸张类型的任何信息。

有没有人建议如何确保我发送的打印作业具有正确的设置,以便打印机知道从哪个托盘打印?

必须有办法做到这一点。例如,我可以在从 Word 或 Excel 打印时选择信头,但只有在我转到打印机属性时才可以。为什么我不能在 .NET 中以编程方式执行此操作?这是托管代码限制吗?我需要访问打印机驱动程序吗?

甚至 System.Printing 也没有这些选项可用。MSDN 还指出:

警告: System.Printing 命名空间中的类不支持在 Windows 服务或 ASP.NET 应用程序或服务中使用。尝试从这些应用程序类型之一中使用这些类可能会产生意想不到的问题,例如服务性能下降和运行时异常。

我唯一可用的其他选项是让用户手动设置每台打印机,使用数据库中每个托盘中的纸张类型,并带有一些用户界面。然后我只需设置要从中打印的托盘。如果可能的话,我想避免这种情况。

2015 年 12 月 14 日更新

打印机制造商愿意提供付费解决方案,但目前该项目不可行。

粗略的代码解决方案是:

0 投票
1 回答
295 浏览

c# - 使用 System.Printing 类获取打印驱动程序信息

我尝试获取有关我们网络中几台打印机的信息。因为在我们的服务器上不允许使用 WMI,所以我尝试获取与Win32_PrinterDriverWMI 类相同的信息,例如、 、ConfigFile等等DataFile(我最多可以通过 WMI 获取所有属性)。DependentFilesDriverPath

但是,我得到的 Collectionpq.QueueDriver.PropertiesCollection只有该Name属性。我现在已经在 119 个不同的 PrintQueue 上尝试过了。

我为什么要得到这个名字是有原因的吗?还是我在这里使用了错误的课程?

0 投票
2 回答
1774 浏览

c# - 如何从头开始创建“页面”以在 c# 中打印或打印预览?

由于可用于此工作的组件非常复杂和/或许可功能有限,我决定从头开始编写此组件。这是我在 PHP 和 VB6 中的全部功能。但是我在尝试添加page.

关于如何从文件打印或如何打印单个页面(所有图形等都是为 Print 事件中的页面硬编码)的很多很好的示例,但没有关于如何设置集合来保存页面数据的内容,以及然后发送那些要打印的。

在 vb6 中,您可以获取 pagebounds 并调用新页面,但在 .NET 中,似乎没有新页面方法。

以下是我到目前为止的来源,由于明显缺乏此基本功能,因此非常粗糙。

我不是在寻找一个关于如何编写 PDF 文档的非常冗长的大型项目,因为它们都非常严格,它们每个都有至少一个限制,这对于我打算设计的布局来说是一个问题(从 PHP 升级,这是一个从 VB6 升级)。最终结果布局如下所示 >

第一页(发票主页面)

发票首页

第二页 [摘要]

此报告可能有更多页面,具体取决于付款和服务中的项目数量。如果有很多项目,则继续的子报表的标题将滚动到下一页。例如,如果客户有 200 项服务,这些项目将以类似的方式继续,在每个连续页面的开头使用相同的“付款”标题块。

发票第二页

详细报告

可能有多个详细报告,每个都从新页面的开头开始,并且为这些页面重置和打印页面计数器。因此,发票的第 6 页实际上可能是第二份详细报告的第 3 页。每个报告的开头和结尾如下所示(图片描述了字段数据的布局等)

报告第一页

报告首页

报告最后一页

报告最后一页

我在找什么?

使上述多报表发票布局在 Visual Studio .NET 中工作的可靠方法。我希望将代码从 php 和 vb6 移植出来,并且我对使用分布规模庞大或极其复杂/有限的许可证限制的库不感兴趣。微软提供了一些非常强大的内置工具,我并不反对使用内置的 PDF 打印驱动程序和假脱机数据,尽管这有点小技巧,但它似乎是最简单的制作方法此功能不受 3rd 方控件的限制或膨胀。(包括开源,因为我看到的那些倾向于对 char 进行一些非常奇怪的转换,然后可能是乳胶或其他东西,不完全确定所有转换的东西是关于什么的)。

笔记

了解上述报告样式的组合构成一张发票非常重要,因此每个客户只有一个 pdf 文件。如果有帮助,这里有一个 VB6 向后兼容方法,它揭示了传统的“打印”对象打印兼容性 vb6。这应该有助于阐明我希望创建/使用的本机功能。

VB6

我很难接受上述“没有直接等效”的陈述,因为在内存中创建文档时添加新页面似乎是创建打印文档的一个非常基本(也是必不可少的)功能。必须首先从文件中加载需要打印的所有内容是没有意义的。

0 投票
0 回答
182 浏览

vb.net - startdocprinter 返回错误的非零打印队列 JobID。它无效并在后续运行中减少

我正在使用 MSKB RawPrinterHelper 代码的 vb.net/win32 示例的略微修改版本将 RAW 打印作业发送到打印队列。

一切正常,它可以打印,它可以打印,而且通常生活很好,但是我从 StartDocPrinter 返回的 ID 不能用于查找打印作业状态。这是错误的。

使用 ManagementObjectSearcher 查找作业状态所需的 JobID 与 StartDocPrinter 返回的 ID 不匹配。

更奇怪的是,StartDocPrinter 返回的句柄在每次调用时都会减小。

它看起来几乎像某种有符号/无符号溢出条件。

我考虑过的一件事,我似乎找不到参考,是 StartDocPrinter 和“其他一切”不返回/使用相同的 JobID,但我还没有找到明确的参考或转换方法它们之间。

任何帮助表示赞赏!

特里

编辑

怪异等级:无限

我编写了一个应用程序来监控打印队列并不断从打印队列中返回 PrintSystemJobInfo.JobIdentifiers 列表。

当打印作业正在假脱机时,它的 ID 在 29,000 范围内,并且每个新作业都会将其一。然而 。. . .

作业完成假脱机后,PrintSystemJobInfo.JobIdentifier将更改并变为 200 范围内的“正常”JobIdentifier,按递增顺序,与所有其他作业内联。

我了解到的是,我的声明似乎很好,并且 JobIdentifier 在作业完成假脱机时实际上会发生变化。

???

`

`

0 投票
1 回答
443 浏览

c# - System.Printing 命名空间设置打印机页面源

我正在尝试通过System.Printing命名空间打印 XPS 流

来自 github 的 XpsPrinterUtils.ModifyPrintTicket

代码不工作,我坚持这一点。

任何人对此都有很好的想法或解决方案,可以使用 system.printing 命名空间打印(pdftron 获得的 Xps 文件流)并动态更改页面源。

0 投票
1 回答
623 浏览

c# - 使用 System.Printing (printQueue.AddJob) 打印时指定不同的 inputbin

我正在使用以下代码打印文档:

我很难尝试将 inputBin 设置为特定的 bin。我已经知道使用它的垃圾箱是“纸箱 3”,我的打印机的值为 261。

我知道可以使用这样的 printTicket 更改垃圾箱:

问题是枚举 (system.printing.inputBin) ,它只包含标准的最小 bin。(值从 0 到 5,没有 bin2、bin3 等。)

问题:-我如何假设在这种情况下设置纸箱值???(261) 我知道有办法做到这一点,但几个小时后我仍然坚持这一点。

有什么帮助吗?(注意获取bin名称和对应的值不是我需要的,我只需要弄清楚打印作业票中的值如何设置

请注意,它仅适用于 4.0 项目

谢谢

0 投票
0 回答
1397 浏览

c# - 修改 printTicket

很多天以来,我一直在尝试修改打印票。:(

这是代码:

问题:看起来票已正确修改,但由于某些原因,它从未将票中指定的信息用于任何选项。帮助!!!!

请注意,我使用的是 .Net 4.0,但使用 addJob (4.5) 中的新 PrintTicket 参数得到相同的结果: printQueue.AddJob("xx", result.ValidatedPrintTicket)

谢谢!

0 投票
0 回答
743 浏览

c# - 无法使用 PrintJobInfoCollection 在 c# 中获取打印作业的副本数

我正在 C# Win Forms 中创建自定义打印作业监控应用程序,我能够使用 PrintJobInfoColletion 获取大部分打印作业信息,但我无法获取副本数量,这是我的代码到目前为止:

当我尝试使用此代码获取许多副本时,这些副本总是返回给我 1

我已经尝试了一周,但仍然找不到解决问题的方法,我的目标是在特定作业中打印总页数。PrintJob.NumberOfPagesPrinted 也返回零。

0 投票
0 回答
688 浏览

c# - c# System.Printing AddJob() 在 windows server 2012 r2 上生成异常

我正在尝试编写 ac# 程序,该程序将使用 System.Printing 命名空间将文档打印到网络打印机。该代码适用于我的 Windows 7 桌面,但不适用于 Windows 服务器。

该代码稍后会检查作业状态以确定它是否打印成功。

问题是在 windows server 2012 R2 上运行时,会产生以下异常:

第 908 行是: PrintSystemJobInfo myprintjob = queue.AddJob(); 这不会发生在我的 Windows 7 桌面上。它在那里完美地工作。有谁知道为什么会这样?

附加信息:桌面和服务器都是 64 位的。在这两种情况下,都使用了相同的打印机。该文件可以在 Windows 服务器上手动打印,因此它不应该是打印机的问题。尝试以管理员身份运行程序。