Ghostscript PDF 多页多份打印无法逐份打印

问题描述 投票:0回答:1

这是我的 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"
printing ghostscript ghostscript.net
1个回答
0
投票

使用如下所示的 shell 脚本会有所帮助 只需添加请求的后记文件作为参数...

TMPFILE=`mktemp` || exit 1
#echo $@
gs -dNOPAUSE -sDEVICE=ps2write -sOUTPUTFILE=$TMPFILE -dBATCH $@ 
echo "enter copies"
read copies
a=0
while [ $a -lt  $copies ]
do
  a=`expr $a + 1`
  lpr $TMPFILE

done
rm -f $TMPFILE
© www.soinside.com 2019 - 2024. All rights reserved.