【问题标题】:Ghostscript is increasing file size after compressingGhostscript在压缩后增加文件大小
【发布时间】:2021-09-04 07:36:30
【问题描述】:

我使用以下方法压缩pdf:

private bool CompressPDF(string Input, string Output, string CompressValue)
        {
            try
            {
                Process proc = new Process();
                ProcessStartInfo psi = new ProcessStartInfo();
                psi.CreateNoWindow = true;
                psi.ErrorDialog = false;
                psi.UseShellExecute = false;
                psi.WindowStyle = ProcessWindowStyle.Hidden;
                psi.FileName = string.Concat(Path.GetDirectoryName(Application.ExecutablePath), "\\ghost.exe");


                string args = "-sDEVICE=pdfwrite -dCompatibilityLevel=1.4" + " -dPDFSETTINGS=/" + CompressValue + " -dNOPAUSE  -dQUIET -dBATCH" + " -sOutputFile=\"" + Output + "\" " + "\"" + Input + "\"";


                psi.Arguments = args;


                //start the execution
                proc.StartInfo = psi;

                proc.Start();
                proc.WaitForExit();


                return true;
            }
            catch
            {
                return false;
            }
        }

默认情况下,我将 pdf 设置放在“打印机”上。我无法弄清楚为什么我的 pdf 文件的文件大小有时会增加。

【问题讨论】:

  • 请添加一个或多个pdf示例,以便您获得更好的帮助

标签: c# winforms compression ghostscript


【解决方案1】:

Ghostscript(更准确地说是它的 pdfwrite 设备)不会“压缩”文件。

通过明智地使用设置(例如下采样图像以换取文件大小来换取质量),可以生成更小的文件,但绝对不能保证会出现这种情况。

如果没有看到输入文件,就无法评论文件大小增加的原因,但是(例如)PDF 1.5 文件可以使用压缩流和外部参照,而 pdfwrite 设备从不使用这些,因此可能是原因之一。

预设的“PDFSETTINGS”涵盖了许多不同的控件,您应该阅读这些控件并了解实际发生的情况。如果您的原始文件碰巧已经以质量换取大小,那么打印机设置(相当保守)很可能实际上根本不会做任何事情。

【讨论】:

  • 谢谢,这是有道理的。有没有什么替代方法可以用来减小文件大小而不必过多地放弃质量?
  • PDFSETTINGS 组中的每个控件都可以单独使用。它们记录在这里ghostscript.com/doc/9.54.0/VectorDevices.htm#PDFWRITE 因为我不知道在质量方面你可以接受什么,也不知道你准备在哪里接受质量妥协,也不知道你的文件内容是什么,我只能建议您尝试这些设置。