У меня есть следующий фрагмент кода PostScript. Что он делает, так это считывает имя файла PDF из массива ConvertItem, получает информацию о странице для этого через getfirstpagesize и сохраняет полученные значения обратно в массиве ConvertItem (8 - 9). Раньше это прекрасно работало до ghostscript 9.27. В этой версии pdfdict устарела.
/ConvertItems
[
[ (...) (...) <...> (...) (...) () 0 0 0 0 0 0 ]
] def
/getfirstpagesize
{
1 1 1
{
pdfgetpage /MediaBox pget dup pop
{
/MediaBox exch def
/PageWidth MediaBox 2 get def
/PageHeight MediaBox 3 get def
} if
(First page - width [) print PageWidth 10 string cvs print
(], height [) print PageHeight 10 string cvs print
(]\n) print
} for
} bind def
------- snip -------
ConvertItem 0 get (r) file"
pdfdict begin"
pdfopen begin"
getfirstpagesize"
ConvertItem 8 PageWidth put"
ConvertItem 9 PageHeight put"
currentdict pdfclose"
end % temporary dict"
end % pdfdict"
------- snip -------
Я попытался решить эту проблему, используя pdfrunbegin и pdfrunend, как это
------- snip -------
ConvertItem 0 get (r) file
runpdfbegin
getfirstpagesize
ConvertItem 8 PageWidth put
ConvertItem 9 PageHeight put
runpdfend
(*First page - width [) print ConvertItem 8 get 10 string cvs print
(], height [) print ConvertItem 9 get 10 string cvs print
(]\n) print
------- snip -------
Но когда я пытаюсь напечатать значения ConvertItem 8 и 9, они всегда равны 0, поэтому кажется, что runpdfend очищает память, которая используется совместно с этими значениями. Поэтому мой вопрос: есть ли способ обойти это?