Вы можете посмотреть код, представленный в моем ответе здесь . Здесь показано, как изменить масштаб содержимого файла PDF с другим размером носителя и как переместить масштабированное содержимое на номинальный выходной носитель.
Я довольно удивлен, что -c "<>setpagedevice" -f
не просто выдает ошибку, поскольку это недопустимый PostScript.
[править]
ОК, так что вам нужно сделать два прохода или самостоятельно рассчитать масштаб.
В двухпроходной модели вы сначала применяете масштабирование, в результате чего вы получите PDF-файл, содержимое которого по-прежнему заполняет страницу, но размер страницы был изменен до меньших размеров. Затем вы запускаете его с переводом и желаемым конечным размером носителя, но не устанавливает FitPage.
Чтобы выполнить масштабирование самостоятельно, вам нужно добавить масштаб в команду BeginPage вместо того, чтобы Ghostscript делал это за вас. Это означает, что вам придется самостоятельно рассчитывать коэффициенты масштабирования.
Параметр для оператора setpagedevice будет выглядеть примерно так:
<</BeginPage {0.5 0.5 scale 200 0 translate}>> setpagedevice
Это уменьшит содержимое на 50% в каждом направлении и сместит начало координат на 100 пунктов вправо. Очевидно, что значения перевода будут зависеть от масштабного коэффициента и размера исходного и масштабированного носителя. Я бы попробовал это проверить, но вы не предоставили пример файла PDF для тестирования.