Масштабируйте изображение на странице, добавляя поля в PDF с помощью Ghostscript - PullRequest
0 голосов
/ 05 января 2019

Мой клиент хочет, чтобы я добавил дополнительную информацию в правую и верхнюю границу на их одной странице PDF. Файл содержит изображение товара с мерами и другую информацию. Мне нужно масштабировать содержимое страницы так, чтобы было видно, что справа / вверху поля будут добавлены дополнительные данные. Я поиграл с Ghostscript в Windows, но пока либо изображение обрезается, либо ничего не происходит: gswin32c -sOutputFile = scaled2.pdf -dBATCH -dNOPAUSE -dDEVICEHEIGHTPOINTS = 312 -dDEVICEWIDTHPOINTS = 421 -dFIXEDMEDIA -dPDFFitPage -sDEVICE = pdfwrite -c "<> setpagedevice" -f 255x195x175mm_EB_Fefco0427_FSN1013.pdf

Так как я обычно не работаю с PDF-файлами, то я здесь вне себя. After scaling Print preview for A4 landscape

Мне нужно, чтобы изображение в формате PDF было уменьшено и расположено в правом нижнем углу. Размер PDF должен быть одинаковым.

Любое другое решение, которое работает в Windows и может обрабатываться из командной строки, также в порядке.

1 Ответ

0 голосов
/ 05 января 2019

Вы можете посмотреть код, представленный в моем ответе здесь . Здесь показано, как изменить масштаб содержимого файла PDF с другим размером носителя и как переместить масштабированное содержимое на номинальный выходной носитель.

Я довольно удивлен, что -c "<>setpagedevice" -f не просто выдает ошибку, поскольку это недопустимый PostScript.

[править]

ОК, так что вам нужно сделать два прохода или самостоятельно рассчитать масштаб.

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

Чтобы выполнить масштабирование самостоятельно, вам нужно добавить масштаб в команду BeginPage вместо того, чтобы Ghostscript делал это за вас. Это означает, что вам придется самостоятельно рассчитывать коэффициенты масштабирования.

Параметр для оператора setpagedevice будет выглядеть примерно так:

<</BeginPage {0.5 0.5 scale 200 0 translate}>> setpagedevice

Это уменьшит содержимое на 50% в каждом направлении и сместит начало координат на 100 пунктов вправо. Очевидно, что значения перевода будут зависеть от масштабного коэффициента и размера исходного и масштабированного носителя. Я бы попробовал это проверить, но вы не предоставили пример файла PDF для тестирования.

...