打印机设置到 PostScript 或 PCL 文件
Printer settings into PostScript or PCL file
我需要:
在特定输出打印机进纸器上双面打印大量 PDF
我有:
使用 'mswinpr2' 设备
的 ghostscript 进行打印
using (GhostscriptProcessor processor = new GhostscriptProcessor(new GhostscriptVersionInfo("gsdll32.dll")))
{
List<string> switches = new List<string>();
switches.Add("-dPrinted");
switches.Add("-dBATCH");
switches.Add("-dNOPAUSE");
switches.Add("-dNumCopies=1");
switches.Add("-dPDFFitPage");
switches.Add("-dFIXEDMEDIA");
switches.Add("-dNoCancel");
switches.Add("-sFONTPATH = C:\Windows\Fonts");
switches.Add("-sDEVICE=mswinpr2");
switches.Add($"-sOutputFile=%printer%{settings.PrinterName}");
switches.Add("D:\11.pdf");
processor.StartProcessing(switches.ToArray(), null);
}
问题:
由 2 页组成的打印队列中的一项作业需要超过 50mb,而我有超过 1500 个 PDF,1 000 000 页
我想做什么:
将 PDF 转换为 PCL 或 PS,编辑这些文件并以某种方式传递设置(双面打印和特定进纸器)。然后将编辑后的 PCL 或 PS 文件作为 RAW 数据发送到打印机
问题:
如何将设置传递给 PCL 或 PS?
由于 PDF 文件不能包含特定于设备的信息,您显然不需要从输入中挑选此类信息,这让事情变得更简单。
Ghostscript 的 ps2write 设备能够将文档范围或页面特定的 PostScript 插入其输出。所以你可以'pass the settings'使用它。
对于 PCL,您(可能)需要编写一些特定于设备的 PJL 并将其插入到 PCL 输出中。但是,PCL 远不及 PostScritp 统一,您需要找出文件中需要添加的前缀。
[编辑]
您没有使用 -sPSDocOptions,PSDocOptions 是一个蒸馏器参数,因此您需要:
gswin64c.exe -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=ps2write -sOutputFile=D:\out.ps -c "<</PSDocOptions (<</Duplex true /NumCopies 10>> setpagedevice)>> setdistillerparams" -f D:[=10=].pdf
请注意您不需要 -f(就像您在命令行中那样)除非您首先设置了 -c。 -f 开关用作 -c 的终止符。
我需要: 在特定输出打印机进纸器上双面打印大量 PDF
我有: 使用 'mswinpr2' 设备
的 ghostscript 进行打印using (GhostscriptProcessor processor = new GhostscriptProcessor(new GhostscriptVersionInfo("gsdll32.dll")))
{
List<string> switches = new List<string>();
switches.Add("-dPrinted");
switches.Add("-dBATCH");
switches.Add("-dNOPAUSE");
switches.Add("-dNumCopies=1");
switches.Add("-dPDFFitPage");
switches.Add("-dFIXEDMEDIA");
switches.Add("-dNoCancel");
switches.Add("-sFONTPATH = C:\Windows\Fonts");
switches.Add("-sDEVICE=mswinpr2");
switches.Add($"-sOutputFile=%printer%{settings.PrinterName}");
switches.Add("D:\11.pdf");
processor.StartProcessing(switches.ToArray(), null);
}
问题: 由 2 页组成的打印队列中的一项作业需要超过 50mb,而我有超过 1500 个 PDF,1 000 000 页
我想做什么: 将 PDF 转换为 PCL 或 PS,编辑这些文件并以某种方式传递设置(双面打印和特定进纸器)。然后将编辑后的 PCL 或 PS 文件作为 RAW 数据发送到打印机
问题: 如何将设置传递给 PCL 或 PS?
由于 PDF 文件不能包含特定于设备的信息,您显然不需要从输入中挑选此类信息,这让事情变得更简单。
Ghostscript 的 ps2write 设备能够将文档范围或页面特定的 PostScript 插入其输出。所以你可以'pass the settings'使用它。
对于 PCL,您(可能)需要编写一些特定于设备的 PJL 并将其插入到 PCL 输出中。但是,PCL 远不及 PostScritp 统一,您需要找出文件中需要添加的前缀。
[编辑]
您没有使用 -sPSDocOptions,PSDocOptions 是一个蒸馏器参数,因此您需要:
gswin64c.exe -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=ps2write -sOutputFile=D:\out.ps -c "<</PSDocOptions (<</Duplex true /NumCopies 10>> setpagedevice)>> setdistillerparams" -f D:[=10=].pdf
请注意您不需要 -f(就像您在命令行中那样)除非您首先设置了 -c。 -f 开关用作 -c 的终止符。