Я просмотрел свою заднюю коллекцию PDF-файлов и получил 2, которые содержат PS XObjects (это действительно устарело). К сожалению, я не могу поделиться ими, поскольку они являются файлами данных клиентов: - (
Однако вот выдержка из одного из них:
74 0 obj
<<
/Type /XObject
/Subtype /PS
/Filter /FlateDecode
/Length 77 0 R
/Name /Ps1
>>
stream
....endstream
Примечание 1: между концом данных и токеном «конечный поток» нет EOL.
77 0 obj
4480
endobj
Смещение 0x0A после токена 'stream' равно 0xdab15, смещение 'e' в конечном потоке составляет 0xdbc96. Это 4481 байт. Поэтому мне кажется, что / Длина должна содержать все байты после EOL для токена 'stream' 'вплоть до последнего байта перед' e 'в токене конечного потока.
Я думаю, что было бы хорошо вставить 0x0A после данных потока и перед конечным потоком. Это может привести к появлению пробела после потоковых данных перед токеном, и предполагается, что PDF допускает пробелы.
Это согласуется с описанием записи / Length для потоковых словарей в Таблице 3.4 (p62 из ссылки 1.7 PDF):
Количество байтов от начала строки, следующей за потоком ключевых слов, до последнего байта непосредственно перед конечным потоком ключевого слова. (Может существовать дополнительный маркер EOL, предшествующий конечному потоку, который не включен в счетчик и не является логически частью данных потока.) См. «Объем потока» выше для дальнейшего обсуждения.
Я думаю (если я правильно посчитал), что / Длина в вашем примере должна быть 87, при условии, что в фрагменте PostScript используется один конец строки байтов.