问题标签 [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 投票
3 回答
2058 浏览

.net - 在通过 XML 修改 PrintTickets 方面需要帮助

通过 System.Printing 框架(主要类是 PrintQueue、PrintTicket 和 PrinterCapabilities)做一些关于控制打印的工作。就像我最近一直在做的大多数事情一样,关于它的信息太少了。我希望在这个问题中汇编一些好的信息来帮助充实这个主题。

PrintTickets 让开发人员可以很好地处理最常见的打印配置设置。这很幸运,因为我不想用旧的 DEVMODE 方式来做(你可以将 DEVMODE 二进制流与 PrintTickets 相互转换,这很方便!)。

问题是有很多打印机,每一个都有独特的配置。这些不属于为 PrintTickets 创建的漂亮属性和枚举。如果您必须配置其设置超出此界面的打印机,则必须将您的 PrintTicket 序列化为 xml 并在那里进行修改。

当您使用 PrintTicket xml 时,您的生活由三个或更多模式支配:两个由 Microsoft 和一个或多个由打印机制造商。两个 MS 模式是

我在处理原始 xml 时遇到的第一个问题是我找不到任何涵盖这些模式的 XSD。

有人知道我在哪里可以获得这些模式的 XSD 吗?

我遇到的第二个大问题是将用户输入映射到 PrintTicket xml。最理想的情况是,我想接受用户的输入,比如“Tray 3”,然后通过 PrintCapabilities 进行映射,以确定为该功能设置的选项的值。打印功能的文档有些不清楚,我担心如果我做得不对,它会充满边缘情况,会回来咬我。

有没有人有任何修改 PrintTicket XML 的好例子?

这是这个wiki的一个很好的起点......


问题1的更新:

向我从 2005 年的 WinHEC PPT 中获得的地址发送了一封电子邮件,并得到了 Windows 体验 - 文档和打印的项目经理 Justin Hutchings 的实际回复(很酷,不是吗?):

将要,

打印模式命名空间没有 XSD。您应该查看 Print Schema Specification 1.0 并使用它来验证您的一致性。http://www.microsoft.com/whdc/xps/downloads.mspx

我们还在 PrintVerifier 中内置了 PrintSchema 验证。有关获取和配置 Print Verifier 的更多信息,请访问以下网址:

0 投票
1 回答
358 浏览

c# - 修改打印预览

我正在构建 ac# 应用程序,它显示(文档的)打印预览,然后要求用户通过 InkPicture 控件“签名”文档。我从 inkpicture 控件中提取位图并将其应用到 PrintDocument 没有问题(我在打印预览之前的过程中较早地执行此操作并将这些图像绘制到打印文档)但打印预览的目的是允许用户查看文档,因为它将被打印并在其上签字。

我尝试将文档重置为修改后的文档

我试过重建打印预览控件

没有效果。

修改后使控件无效也无济于事。

我有点难过。

0 投票
1 回答
2573 浏览

c# - InstallPrintQueue:如何创建新端口?(.net,c#)

我在这里与 .net 框架的 System.Printing 命名空间作斗争。在 MS 管理我的打印服务器的所有工具中,我一直认为它们缺乏端口和驱动程序管理功能。

所以我被困在这里的一段代码有效:

它确实使用我指定的驱动程序在远程服务器上为我创建了一个队列,但驱动程序应该已经存在于我可以使用的服务器上,但我未能找到在我的打印服务器上创建新 TCP/IP 端口的方法,因此以这种方式安装新的打印队列可能是有用的。我不明白为什么我只允许使用现有端口安装新队列。有点让我失望。如果有人知道如何创建一个端口和一个队列,我想看看如何。

0 投票
2 回答
1798 浏览

c# - System.Printing 返回打印队列状态 - 属性永远不会返回 true

我正在使用 System.Printing 来询问 PrintQueue 状态 - 我的目标是获取状态更新和错误,特别是布尔值 IsOutOfMemory、NeedUserIntervention、IsOutOfPaper、HasPaperProblem、IsPaperJammed、IsInError、IsPaused、IsBusy、IsPrinting、IsProcessing、IsInitializing、IsDoorOpened 等。问题是属性永远不会返回真,即使我知道一个是真的。有没有人在这些属性上取得成功?有人知道这里可能有什么问题或遗漏吗?

谢谢詹姆斯

0 投票
2 回答
4928 浏览

vb.net - 网络打印机和 PrintServer.GetPrintQueues 方法

我感觉PrintServer.GetPrintQueues 方法 返回网络打印机。

如果这是真的,我还有什么其他选择?

0 投票
3 回答
6563 浏览

c# - C# 中的 PrintableArea - 错误?

我对 PageSettings.PrintableArea 的宽度和高度值有疑问。Width、Height 和 Size 属性声称可以“获取或设置”这些值。此外,inflate() 函数声称可以根据传入的值更改大小。

然而,所有这些改变价值的尝试都没有奏效。Inflate() 被忽略(没有错误,就像它工作一样通过,但值保持不变。

尝试设置高度、宽度或大小会导致编译器错误:“无法修改 'System.Drawing.Printing.PageSettings.PrintableArea' 的返回值,因为它不是变量”。

我觉得这意味着描述的“或设置”部分是谎言。

为什么我想知道这一点:(总有人问...)我有一个打印应用程序(C#、WinForm),它在大多数情况下都运行良好。我可以设置打印机设置和页面设置对象来控制打印对话框的打印机属性中显示的内容。但是,对于 Microsoft Office Document Image Writer,这些设置有时会被忽略,即使显示其他内容,纸张大小也会返回为 0、0。就显示的值而言,我真正希望它是所见即所得的,所以我将纸张尺寸改回应有的尺寸,但可打印区域,如果它是错误的,会使生成的图像不稳定。生成的图像是可打印区域的大小,而不是纸张大小的值。只是想知道是否有这样做的理由或让它不这样做的方法。

提前致谢。:)

更新:

更新 2:

对于正确打印的(自定义尺寸)打印机,当我更改 PaperSize 时,PrintableArea 和 PageBounds 会自动更改以匹配它。当我在 MDIW 上更改 PaperSize 时,只有 PageBounds 更改。我不明白是什么原因造成的。

结论:

Nobugz 很好地解释了为什么不能设置 PrintableArea(通常永远不需要)以及为什么它的 inflate() 函数被忽略,所以我将其标记为答案。

至于促使我提出这个问题的持续存在的问题,我仍然不知所措。作为对“ScaleTranform”建议的回应,PaperSize 和 Graphics 对象已经有了正确的值,因此弄乱这些值可能没有帮助。我怀疑沿着这条路线我能做的最多就是将我正确大小的图像调整为我为 PrintableArea 获得的垃圾值。当显式设置 PaperSize 无法相应地修改 PrintableArea 时,我将假设这是与错误相关的行为。

令人沮丧的是,我似乎是唯一遇到这个问题的人。至少,到目前为止,我只观察到 MODIW 的这种行为。供任何人参考,因此有尽可能多的信息;我正在运行 32 位 Win7,在 VS2008 中开发。要复制问题,请执行以下步骤:

0 投票
1 回答
1770 浏览

c# - 如何查找发送打印作业的计算机?

我正在为 Windows 7 创建一个 postscript 打印机,它将接受打印作业并将它们转发到真正的打印机。它将在 LAN 中共享,并且可以接收来自 LAN 计算机的打印作业。我想在将打印作业转发到打印机之前找出打印作业来自哪台计算机。我怎样才能做到这一点?打印作业本身是否提供详细信息?谢谢

0 投票
0 回答
214 浏览

c# - 用“地址卡”打印两列

对于我作为我的第一个 c# 项目开发的应用程序,我希望能够以与 Outlook 中可用的“卡片样式”打印选项类似的样式从应用程序打印信息。

我创建了一个用户控件,该控件的布局方式与我想打印它的方式相同,并且能够根据需要将该控件添加到我想要的两列布局中的表单中,但到目前为止还没有找到一个工作教程/示例,解释如何打印包括视觉元素的表单内容(添加分页符,而不破坏用户控件的布局)。

任何正确方向的建议或指示将不胜感激。

0 投票
3 回答
35169 浏览

c# - Printing from ASP.NET to a network printer

I need to send documents to a network printer (\myserver\myprinter). I'm using the System.Printing classes to print, and it works fine when it's from a Windows Service, but from an ASP.NET app, it's only able to print to local printers, not network printers. The error I'm getting is "Printer Name is not valid" This is what I'm using to get the printer name:

What are my options here? Is this a permissions problem?

0 投票
3 回答
3424 浏览

c# - 在 C#.net 中调用 PrintQueue.Pause() 方法时访问被拒绝

我正在尝试使用 C#.NET Visual Studio 2008 暂停 Windows 7 打印队列。我拥有完整的管理员权限,但是当我运行以下代码暂停队列时,它显示访问被拒绝。请帮我。