Я пытаюсь разработать скрипт python для блендера для вывода обработанной последовательности изображений в PDF. Я использую Imagemagick для преобразования в PDF, эта часть работает нормально. Однако я хочу, чтобы предварительный просмотр миниатюр также включался в PDF.Редактирование атрибутов PDF с использованием sed
Формат PDF немного сбивает с толку, но я нашел теги /PageMode
и /UseThumbs
и как их правильно вставить в файл. Я могу сделать это вручную, и он работает очень хорошо. Но я пытаюсь получить аналогичный результат без необходимости делать это вручную, я пишу сценарий в конце концов. Вот пример фрагмента данных заголовка в формате PDF, с добавленными тегами:
%PDF-1.3
1 0 obj
<<
/Pages 2 0 R
/PageMode
/UseThumbs
/Type /Catalog
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [ 3 0 R 17 0 R 31 0 R ]
/Count 3
>>
Я пытаюсь использовать СЭД, чтобы вставить теги по мере необходимости на 4-й и 5-й линии, который также работает, но когда я открываю PDF, изображения повреждаются. загадочно, когда я сравниваю отредактированный вручную PDF (который не поврежден) в sed, отредактированном PDF (который поврежден) в блокноте ++, нет никакой разницы в файлах, которые я могу найти. Существует другой счетчик символов, но я не могу найти местоположение разницы
Я понимаю, что в PDF-файлах есть таблица смежных перекрестных ссылок, но мне кажется странным, что делать это вручную не повредит ничего, но делает он с sed создает коррупцию
Что я делаю неправильно?
Можете ли вы разместить два файла где-нибудь, чтобы мы могли взглянуть на оба? – janos
Это говорит о наличии проблемы с CR/LF, если счетчик байтов выключен, но вы не можете визуально подтвердить разницу. Образец PDF действительно поможет. – usr2564301
* Выполнение этого вручную не испортило ничего * - некоторые читатели в формате PDF, а именно Adobe Reader, имеют тенденцию игнорировать определенные типы повреждений, которые, как они знают, обрабатывают, и только жалуются, если файл PDF поврежден так, как они не может справиться. Скорее всего, поэтому ваше ручное изменение повредило файл просто * по-разному *. Если предположение @ Jongware о том, что разница в разделителях строк, истинно (возможно, sed читает файл * строка за строкой *, а при записи всегда использует свою предпочтительную строку), помните, что изменение разделителей строк в сжатом потоке действительно делает сломать это. – mkl