#c# #winforms #compression #ghostscript
Вопрос:
Я использую следующий метод для сжатия 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-файлов иногда увеличивается.
Комментарии:
1. Пожалуйста, добавьте один или несколько примеров pdf, чтобы вы могли получить лучшую помощь
Ответ №1:
Ghostscript (точнее, его устройство pdfwrite) не «сжимает» файлы.
При разумном использовании настроек, которые будут выполнять такие действия, как уменьшение размера изображений, чтобы обменять качество на размер файла, можно получить файл меньшего размера, но нет абсолютно никакой гарантии, что это так.
Не видя входного файла, невозможно прокомментировать, почему ваш файл увеличивается в размере, но (например) файл PDF 1.5 может использовать сжатые потоки и внешние ссылки, а устройство pdfwrite никогда их не использует, так что это может быть одной из причин.
Консервированные «PDFSETTINGS» охватывают множество различных элементов управления, вы должны прочитать их и понять, что на самом деле происходит. Если ваш исходный файл уже поменял качество на размер, то вполне вероятно, что настройки принтера (которые достаточно консервативны) на самом деле вообще ничего не сделают.
Комментарии:
1. Спасибо, в этом есть смысл. Есть ли какие-либо альтернативы этому, которые я могу использовать для уменьшения размера файла, не слишком отказываясь от качества?
2. Каждый из элементов управления в группах PDFSETTINGS доступен индивидуально. Они задокументированы здесь ghostscript.com/doc/9.54.0/VectorDevices.htm#PDFWRITE Поскольку я не могу знать, что приемлемо для вас с точки зрения качества, и где вы готовы пойти на компромиссы по качеству, и не знаю, каково содержание ваших файлов, все, что я могу предложить, — это поэкспериментировать с этими настройками.