Печать PDF с использованием GhostScript

Я нуждаюсь в вашей поддержке по следующему вопросу, так как он тянет меня на некоторое время. У нас есть маленькийc# утилита, которая печатает данныеPDF с помощьюGhostScript, Эта печать, как и ожидалось, но не сохраняет форматирование страницы. Тем не менее, страницы печатаются, как и ожидалось, когда я переключаюсьAdobe Acrobat на местеGhostScript, Итак, я полагаю, я делаю очевидную ошибку в аргументах командной строки GhostScript.

Фон

Ниже приводится основная логика c #, которая печатает данный файл PDF с различным стилем на каждой странице. Данный файл PDF имеет страницы;

с несовместимым стилем и цветом шрифтанекоторые страницы имеют нормальный размер шрифта, тогда как другие напечатаны очень маленьким шрифтомна некоторых страницах рекомендовано поле, а на других - очень небольшое поленекоторые страницы в цвете, а остальные в сером.некоторые страницы выполнены в ландшафтном стиле, а другие - в портретном

Вкратце, PDF-файл, который я пытаюсь напечатать, представляет собой не что иное, как консолидацию (объединение отдельных PDF-файлов в один большой PDF-файл) множества небольших PDF-документов небольшого размера с различными стилями шрифтов, размерами и полями.

вопрос

Следующее использование логикиGhostScript(v9.02) распечатать файл PDF. Хотя следующая логика печатает любой заданный PDF, он не может сохранить форматирование страницы, включаяверхний колонтитул, нижний колонтитул, размер шрифта, поля, ориентация (В моем файле PDF есть страницы, как альбомные, так и книжные).

Интересно, что если я использую Acrobat Reader для печати того же PDF-файла, он будет печататься, как ожидается, вместе со всеми форматами на уровне страницы.

Образец PDF:Первый раздел, Второй раздел

  void PrintDocument()
    {
         var psInfo = new ProcessStartInfo();
                psInfo.Arguments =
                    String.Format(
                        " -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dNumCopies=1 -sDEVICE=ljet4 -sOutputFile=\"\\\\spool\\{0}\" \"{1}\"",
                        GetDefaultPrinter(), @"C:\PDFOutput\test.pdf");
                psInfo.FileName = @"C:\Program Files\gs\gs9.10\bin\gswin64c.exe";
                psInfo.UseShellExecute = false;

        using (var process= Process.Start(psInfo))
        {
            process.WaitForExit();
        }
    }

Ответы на вопрос(3)

Ваш ответ на вопрос