Ghostscript: Всего страниц в формате PDF

Я использую API библиотеки Ghostscript (обертывание из С#) для печати PDF-документов из своего приложения.
С параметрами '-dFirstPage' и '-dLastPage' я могу выбрать диапазон страниц для печати, но как насчет общего количества страниц PDF?

Не очень приятно разрешить пользователю выбирать интервал страницы от 2 до 10, если, скажем так, документ PDF имеет только 4 страницы.

Учтите, что я использую библиотеку Ghostscript через вызов библиотеки API gsapi_init_with_args.

Ответы

Ответ 1

Ghostscript может подсчитывать и отображать количество страниц PDF на stdout. Командная строка

gswin32c ^
  -q ^
  -dNODISPLAY ^
  -c "(input.pdf) (r) file runpdfbegin pdfpagecount = quit" 

Здесь весь материал -c "..." - это фрагмент командной строки PostScript (с использованием внутренних внутренних расширений GS). И input.pdf - это имя файла PDF (также может быть полным путем, как (c:/path/to/my.pdf)).

Однако лучшим и быстрым инструментом для этого задания должно быть использование pdfinfo (часть утилит XPDF, также доступных в Windows).


Update:

@ebyrob хочет знать, можно ли изменить мою командную строку примера, чтобы он также отображал PDF в одной операции. Попробуйте следующее:

gswin32c ^
  -q ^
  -c "(input.pdf) (r) file runpdfbegin pdfpagecount =" ^
  -f input.pdf

Ну, это не одна операция - это всего две разные операции в одной командной строке.

Ответ 2

Я попытался сделать это script:

gswin32c ^
  -q ^
  -c "(input.pdf) (r) file runpdfbegin pdfpagecount =" ^
  -f input.pdf

работает в С# wrapped решении и продолжает получать ошибку /undefinedfilename. В этом случае убедитесь, что ваш путь к файлу имеет слэши "/" как "DirectorySeperator", а не "Backsclas" "\". Я знаю, что Курт Пфайфл уже написал это, но это случилось со мной, я просто забыл об этом.