这是我对C#和Ghostscript.NET库的无提示PDF打印代码:
public bool Print(string inputFile, string printerName, int nrcopies)
{
if (nrcopies < 1)
nrcopies = 1;
if (!File.Exists(inputFile) || !inputFile.ToLower().EndsWith(".pdf"))
throw new ApplicationException("File not found or not valid");
bool defaultPrinter = String.IsNullOrWhiteSpace(printerName);
using (GhostscriptProcessor processor = new GhostscriptProcessor())
{
List<string> switches = new List<string>();
switches.Add("-empty");
switches.Add("-dPrinted");
switches.Add("-dBATCH");
switches.Add("-dNOPAUSE");
switches.Add("-dNOSAFER");
switches.Add("-dNumCopies=" + nrcopies);
switches.Add("-sDEVICE=mswinpr2");
if(defaultPrinter)
switches.Add("-dQueryUser=3");
else
switches.Add("-sOutputFile=%printer%" + printerName);
switches.Add("-f");
switches.Add(inputFile);
try
{
processor.StartProcessing(switches.ToArray(), null);
}
catch (Exception) { }
}
return true;
}
如果要多页打印多页,我想拼贴页面。 我曾尝试在许多设备上进行打印,例如在Windows的PDF打印机中进行打印,但我始终无法进行逐份打印。
这就是我想要的:
但这是我使用此参数得到的:
switches.Add("-dNumCopies=" + nrcopies);
这是等效的GS命令:
gswin64.exe -empty -dPrinted -dNOSAFER -dNumCopies=2 -sDEVICE=mswinpr2 -dQueryUser=3 -f "C:\Users\myuser\Desktop\TEST.pdf"