Ghostscript 正在生成巨大的文件
Posted
技术标签:
【中文标题】Ghostscript 正在生成巨大的文件【英文标题】:Ghostscript is producing huge files 【发布时间】:2016-04-26 08:02:46 【问题描述】:我正在使用 GhostPrint 打印一个非常简单的 PDF 文件。它只是一页,有 2 个单词,有两种不同的背景颜色。 PDF 文件为 86KB。 当我尝试使用 GhostScript 打印它时,它会在 17.5MB 或 95MB 上创建一个打印作业,具体取决于我的 BitsPerPixel。因为我希望它是彩色的,所以我尝试了 4 BitsPerPixel 和 24 BitsPerPixel。如果我使用 Adobe Reader 打印相同的文件,打印作业大约为 200KB,并且我发现打印质量没有差异。 我正在使用以下代码通过 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 Reader 可以做到。
PS。我知道在隐藏窗口等情况下使用 Adobe Reader,但这在我的用例中不起作用,因为我需要能够指定要使用的打印机、双面/单面、颜色/灰色和份数。
【问题讨论】:
【参考方案1】:mswinpr2 设备通过以所选打印机的分辨率和颜色深度将输入渲染为位图来工作。 PDF 当然(至少可能)是一种矢量格式,因此可以拥有更紧凑的表示形式。
在一般情况下,没有方法可以从 Ghostscript 打印到 Windows 打印机并且不呈现内容,因此无法创建更小的文件。当然,由于您要打印到 PostScript 打印机(根据您的打印机名称猜测),您可以使用 ps2write 设备而不是 mswinpr2。由于 PostScript 也是一种矢量格式,因此更加紧凑。但是您将不会使用 mswinpr2 设备,您必须自己将生成的 PostScript 文件发送到打印机。
您发现中间假脱机文件的大小是个问题,对此我感到有些惊讶。您始终可以将输出直接发送到打印机,而不是使用 %printer% 语法假脱机。
【讨论】:
感谢您的回复。文件大小的问题是打印需要很长时间,尤其是在 PDF 较大的情况下。我将如何在 C# 中将 Postscript 文件发送到打印机? 从命令行 "copy /b以上是关于Ghostscript 正在生成巨大的文件的主要内容,如果未能解决你的问题,请参考以下文章
嗨,我正在寻找在 solaris 环境中将 docx 文件集转换为 pdf 的解决方案
如何使用 Ghostscript 和 Ghostscript .NET 通过嵌入 IIC 配置文件生成正确的 PDF/A
Ghostscript 创建巨大的图像,比预期的像素多一个数量级