我有一个文件,我发送使用下面的c#代码打印
p.StartInfo = new ProcessStartInfo()
{
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden,
Verb = "print",
FileName = FileToPrintPath//put the correct path here
};
p.Start();
现在,我有一个条件,而不是打印整个文件,我想从页码2
到5
打印juts。我怎样才能做到这一点?
我不知道您的问题的直接答案,但您可以使用下面的代码轻松解决这个问题。显示一个对话框并选择页码,份数等,并查看它在printDialog1.PrinterSettings
中的显示方式。一旦知道格式,删除对话框代码并将其硬编码到Arguments
:
using (PrintDialog printDialog1 = new PrintDialog())
{
if (printDialog1.ShowDialog() == DialogResult.OK)
{
var info = new ProcessStartInfo(**FILENAME**);
info.Arguments = "\"" + printDialog1.PrinterSettings.PrinterName + "\"";
// Use the debugger a message dialog to see
// contents of printDialog1.PrinterSettings
}
}
我写了一个快速测试,这是存储在PrinterSettings
中的内容:
[PrinterSettings Microsoft XPS Document Writer Copies = 1 Collate = False Duplex = Simplex FromPage = 0 LandscapeAngle = 270 MaximumCopies = 1 OutputPort = PORTPROMPT:ToPage = 0]
所以你需要通过FromPage
和ToPage
:
info.Arguments = "\"" + printDialog1.PrinterSettings.PrinterName + "\"" + "FromPage=2 ToPage=5";
在你的代码中:
p.StartInfo = new ProcessStartInfo()
{
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden,
Verb = "print",
FileName = FileToPrintPath,//put the correct path here,
Arguments = "\"Printer Name Goes Here\" FromPage=2 ToPage=5";
};
请注意,它们不是以空格分隔的参数,如果您的打印机名称有空格,则需要将打印机名称放在引号内。