Редактировать байты в pdf файле - PullRequest
1 голос
/ 15 февраля 2012

Мне нужно конвертировать из полутонового PDF в RGB в CMYK.Поэтому я просто создаю несжатый PDF-файл в iText, а затем заменяю все записи, такие как «0,7 0,7 0,7 RB» на «0,0 0,0 0,0 0,7 К».

Это работает нормально, но когда я открываю pdf в Acrobat Reader, я вижусообщение типа «PDF поврежден, но может быть открыт».Тогда PDF выглядит нормально.Я полагаю, что в PDF-формате есть некоторый безопасный механизм, такой как хэш.Могу ли я как-то избежать этого сообщения?

PS Создать pdf напрямую в CMYK не вариант, потому что я использую PdfGraphics2D для рисования моих компонентов AWT, а PdfGraphics2D может только RGB.

Ответы [ 2 ]

2 голосов
/ 16 февраля 2012

PDF-файлы содержат таблицы перекрестных ссылок и / или один или несколько потоков перекрестных ссылок. По сути, такая таблица / поток содержит информацию о смещениях объектов PDF с самого начала файла.

Когда вы заменяете 0.7 0.7 0.7 RB на 0.0 0.0 0.0 0.7 K, вы меняете размер байтов потоков страниц и неверно отображаете значения, хранящиеся в потоке перекрестных ссылок.

Многие PDF-процессоры используются для обработки PDF-файлов, разбитых таким образом, но вы наверняка пытаетесь вписать квадраты в круглые отверстия :-)

Пожалуйста, используйте инструмент, который может выполнить задачу правильно. Я думаю, Acrobat Professional должен делать то, что вам нужно, просто отлично. Или хотя бы обновить таблицу перекрестных ссылок (это может быть непростой задачей).

Другой вариант - взломать несколько испорченных PDF-файлов, а затем открыть их в Acrobat и сохранить . Acrobat обновит таблицу перекрестных ссылок для вас.

Но, пожалуйста, пожалуйста, не пускайте такие сломанные PDF-файлы в дикую природу.

0 голосов
/ 15 февраля 2012

Предполагая, что вы работаете со значениями в градациях серого, просто попробуйте преобразовать RGB в CMYK другим способом:

RGB (0,7, 0,7, 0,7) -> CMYK (0,7, 0,7, 0,7, 0,0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...