Ghostscript -sPageList выдает ошибку stackunderflow и завершает работу - PullRequest
0 голосов
/ 22 марта 2019

Я хочу напечатать определенные страницы в другом порядке с помощью файла -sPageList input.pdf с ghostscript

> "gswin64c.exe" -dFIXEDMEDIA -dPDFFitPage -sPAPERSIZE=a4 -dMaxBitmap=300 -dCompatibilityLevel=1.7 -dPDFSETTINGS=/ebook -dAutoRotatePages=/None -sFONTPATH="C:\Windows\Fonts" -sDEVICE=pdfwrite -sPageList=2,4,9-11,12-13,5-8 -o out.pdf in.pdf

Я выдаю ошибку:

**** Ошибка: rangecheck processing PageList **** Невозможно открыть исходное устройство, выход.Неустранимая ошибка: stackunderflow в стеке операндов .quit: 1

Несмотря на то, что он вызывается с помощью следующего кода, все работает хорошо.

"gswin64c.exe" -dFIXEDMEDIA -dPDFFitPage -sPAPERSIZE=a4 -dMaxBitmap=300 -dCompatibilityLevel=1.7 -dPDFSETTINGS=/ebook -dAutoRotatePages=/None -sFONTPATH="C:\Windows\Fonts" -sDEVICE=pdfwrite -dFirstPage=2 -dLastPage=2 in.pdf -dFirstPage=4 -dLastPage=4 in.pdf -dFirstPage=9 -dLastPage=11 in.pdf -dFirstPage=12 -dLastPage=13 in.pdf -dFirstPage=5 -dLastPage=8 in.pdf -o out.pdf in.pdf 

Может кто-нибудь сказать причину, по которой

-sPageList = 2,4,9-11,12-13,5-8

или

-sPageList = "2,4,9-11,12-13,5-8"

не работает?

1 Ответ

1 голос
/ 22 марта 2019

Вы не можете использовать PageList для изменения порядка, номера страниц должны увеличиваться.

Это потому, что один и тот же синтаксис используется для ввода PostScript и PCL, и эти форматы не являются произвольным доступом, они передаются в потоковом режиме, поэтому, пройдя страницу 5, мы не можем перемотать поток назад и вернуться к нему.

Во втором случае вы запускаете входной файл несколько раз, каждый раз читая подмножество страниц. Конечно, вы можете делать это и с PostScript и другими языками ввода, но, естественно, это медленнее.

...