Удаление битов CPCA из файла PostScript - PullRequest
0 голосов
/ 31 марта 2019

В настоящее время я пишу код для удаления битов Canon CPCA из сохраненного файла PostScript «печать в файл», чтобы полученный файл был просто чистым файлом PostScript.

Я написал код для удаления всехбиты в начале файла перед строкой заголовка «%! PS-Adobe-3.0», а также код для удаления всех конечных битов после строки «%% EOF».Но в некоторых больших файлах я вижу некоторый двоичный код в середине файла, который, я полагаю, мне нужно будет найти и уничтожить.

Вот пример того, о чем я говорю ... обратите внимание набит перед заголовком и после нижнего колонтитула: enter image description here enter image description here Есть слух, что есть документ спецификации для протокола CPCA, но я не могу найти, даже вПортал разработчиков Canon.Может ли кто-нибудь предоставить какие-либо подробности о спецификации, чтобы я мог удалить ВСЕ данные CPCA, которые, как говорится в спецификации, могут быть включены?

Заранее благодарен за любую помощь.

1 Ответ

1 голос
/ 02 апреля 2019

Итак, глядя на файл, перед%! PS есть куча вещей, которые, как я полагаю (как вы отметили в своем вопросе), являются частью материала Canon CPCA.

Тогда есть обычная структура комментариев.для DSC-соответствующей программы PostScript.Интересно, что за этим следует некий специфичный для Canon ProcSet.Кажется, что драйвер Canon не использует обычную Windows PostScript-генерирующую DLL 'PScrip5.dll', а вместо этого использует некую специфичную для Canon версию CNS30M.DLL 2.40.

За этим следует огромное количество настроек документа,затем пара довольно обычных вызовов устройства setpagedevice:

%%BeginFeature: 
%%+ *PageSize Letter
<</DeferredMediaSelection false
/PageSize [612 792] /ImagingBBox null /Policies << /PageSize 2 >>>> setpagedevice
%%EndFeature 
} stopped cleartomark
[{
%%BeginFeature: 
%%+ *InputSlot Auto
<</InputAttributes <</Priority []>> >> setpagedevice
%%EndFeature 

Затем мы наконец переходим к содержимому страницы.Первое, что делает программа, это создает CIDFont и загружает в него некоторые описания глифов.Я подозреваю, что это тот двоичный файл, который вас беспокоит.Это законно для PostScript и не входит в Cananon CPCA.

Затем программа рисует 4 глифа из этого (подмножества) шрифта и извлекает страницу.

После этого у нас снова есть обычный котел DSCматериал пластины, и %% EOF, который (опять же, как вы заметили), сопровождается некоторыми случайными двоичными данными.

Учитывая описание спецификации Canon CPCA, я сомневаюсь, что вы когда-либо найдете ее в программе PostScript, я считаю, что она всегда должна оборачиваться вокруг программы, поэтому, если вы удалите все до%! PS и после %% EOF, все будет в порядке.Обратите внимание, что некоторые рабочие процессы могут объединять программы PostScript, что является плохой идеей, но, как правило, работает, вам, возможно, придется остерегаться этого.

Я попытался удалить двоичный файл до и после программы PostScript и запустил результат.произвел страницу с надписью «Тест».

...