我使用GhostPrint打印一个非常简单的PDF文件。只有一页有两个字,有两种不同的背景色。PDF文件为86 is。当我尝试使用GhostScript打印它时,它会根据我的BitsPerPixel在17.5MB或95 my上创建一个打印作业。由于我希望它是彩色的,我已经尝试了4 BitsPerPixel和24 BitsPerPixel。如果我使用Adobe打印相同的文件,打印作业大约是200 in,并且我看到打印的质量没有差别。我正在使用以下代码通过C#控制台应用程序进行打印:
string printerName = "Konica Minolta PS Color Laser Class Driver";
string ghostScriptPath = "C:\\Program Files (x86)\\gs\\gs9.19\\bin\\gswin32c.exe";
string pdfFilePath = "C:\\Users\\TestUser\\Documents\\ColorTest.pdf";
arguments += " -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -BitsPerPixel=24 -dNumCopies=1 -sDEVICE=mswinpr2 -sOutputFile=\"\\\\spool\\" + printerName + "\" \"" + pdfFilePath + "\" ";
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.Arguments = arguments;
startInfo.FileName = ghostScriptPath;
startInfo.UseShellExecute = false;
startInfo.RedirectStandardError = true;
startInfo.RedirectStandardOutput = true;
Process process = Process.Start(startInfo);
Console.WriteLine(process.StandardError.ReadToEnd() + process.StandardOutput.ReadToEnd());
process.WaitForExit(30000);
if (process.HasExited == false)
{
process.Kill();
}
Console.WriteLine("Exitcode: " + process.ExitCode);
Console.ReadLine();
如何在不损失太多质量的情况下缩小文件大小?我希望这是可能的,因为Adobe可以做到这一点。
PS。我知道如何使用Adobe与窗口隐藏等,但这将不能在我的用例,因为我需要能够指定使用哪台打印机,双工/单纯形,颜色/灰色和拷贝数。
发布于 2016-04-26 00:28:28
mswinpr2设备通过在选定打印机的分辨率和颜色深度上将输入呈现给位图来工作。当然,PDF是(至少是潜在的)向量格式,因此可以保持更紧凑的表示形式。
在一般情况下,没有方式可以从Ghostscript打印到Windows打印机,并且没有呈现内容,因此无法创建更小的文件。当然,由于要打印到PostScript打印机(从打印机名称猜测),所以可以使用ps2write设备而不是mswinpr2。因为PostScript也是向量格式,所以它更紧凑。但是这样您就不用使用mswinpr2设备了,您必须自己将生成的PostScript文件分派给打印机。
我有点惊讶于您发现中间假脱机文件的大小是一个问题。您可以始终将输出直接发送到打印机,而不是使用%打印机%语法对其进行后台处理。
https://stackoverflow.com/questions/36858858
复制相似问题