Для целей тестирования, подведем некоторые бессмысленные прямоугольники:Можно ли использовать EPS-файл (созданный с помощью eps2write) в процедуре EndPage?
gswin32c -q -o f.pdf -sDEVICE=pdfwrite -c "<</PageSize[595 842]>>setpagedevice 0 0 595 842 rectfill showpage"
+
gswin32c -q -o f.eps -sDEVICE=eps2write -f f.pdf
И ps.ps файл:
<<
/EndPage {
exch pop
2 ne dup {
1 dict begin
/showpage {} def
(f.eps) run
end
} if
}
>> setpagedevice
а затем
gswin32c -q -o out.pdf -sDEVICE=pdfwrite -f ps.ps -f f.pdf
выдает сообщение об ошибке:
%%[ Error handled by opdfread.ps : GPL Ghostscript 9.15: Unrecoverable error, exit code 1 Unrecoverable error: typecheck in if Operand stack: typecheck ebuf false false --nostringval--
С другой стороны, если я создаю EPS с другим инструментом, например, xpdf
«ы pdftops
:
pdftops -eps f.pdf f.eps
... тогда EPS могут быть размещены как, например, водяной знак или логотип с указанной команды:
gswin32c -q -o out.pdf -sDEVICE=pdfwrite -f ps.ps -f f.pdf
Таким образом, вопрос, можно ли использовать, может быть, я что-то отсутствует в программе Ghostscript eps2write
для этой цели.
Я попытался кронштейну (f.eps) run
с призывами BeginEPSF
и EndEPSF
, как определено в EPSF Формат спецификации компании Adobe, но это не помогло. И после декодирования пролога, который создает eps2write
(который сам по себе дает ту же ошибку, если он работает от EndPage
), мне кажется, что он нарушает раздел на Незаконные и ограниченные операторы упомянутой Спецификации.
Edit: Я думаю, что есть проблема с Сразу Оценивается Имена если код выполняется из EndPage
. В прологе, что создает eps2write
, есть фрагмент не очень далеко от начала:
//SetPageSize{
//RotatePages//FitPages or//CenterPages or{
mark(/RotatePages, /FitPages and CenterPages are not allowed with /SetPageSize)//error exec
}if
}
{
//FitPages//CenterPages and{
mark(CenterPages is not allowed with /FitPages)//error exec
}if
}
ifelse
Если я кадр так:
SetPageSize ==
//SetPageSize ==
{
//SetPageSize{
//RotatePages//FitPages or//CenterPages or{
mark(/RotatePages, /FitPages and CenterPages are not allowed with /SetPageSize)//error exec
}if
}
{
//FitPages//CenterPages and{
mark(CenterPages is not allowed with /FitPages)//error exec
}if
}
ifelse
} stopped { (***\n) print } if
И изменить ps.ps
немного:
<<
/EndPage {
exch pop
2 ne dup {
1 dict begin
/showpage {} def
(prologue.ps) run
end
} if
}
>> setpagedevice
Затем эту команду:
gswin32c -q -o out.pdf -sDEVICE=pdfwrite -f ps.ps -f f.pdf
... дает этот вывод:
false
/SetPageSize
***
%%[ Error handled by opdfread.ps : GPL Ghostscript 9.14: Unrecoverable error, exit code 1
И.Э. он терпит неудачу в вышеприведенном фрагменте (и по очевидной причине, я думаю), а затем сбой в другом месте ниже в пределах prologue.ps
.
Можете ли вы рассказать о том, что, по вашему мнению, нарушает ограниченные операторы, пожалуйста? т.е. какой оператор используется? – KenS
Хмм, мне придется немного подумать ... – KenS