[Acr XI] PDF Reference Таблица C.1 ("Architectural limits") - о чем там идет речь?

Mikky

Участник
Топикстартер
Сообщения
161
Реакции
13
К Акробату эта тема вообще не относится, так что версия XI в префиксе указана только потому, что без этого нельзя создать тему.

Периодически Preflight-проверка очередного PDF выдает фразы вроде "Maximum capacity of a dictionary (in entries) is 4095" ("Максимальная вместимость словаря (по записям) равна 4095"), "Absolute real value must be less than or equal to 32767.0" ("Абсолютное реальное значение должно быть меньше или равно 32767.0"), "Maximum length of a name (in bytes) is 127" ("Максимальная длина имени (в байтах) равна 127"). Или что-нибудь в этом же роде.
И каждый раз вопрос - о чем здесь идет речь, что в проверяемом PDF не так?

Накопал, что все эти сообщения говорят о каких-то нарушениях ограничений, перечисленных в таблице C.1 из PDF Reference - там их достаточно приличный список. Но без хорошего понимания архитектуры PDF вопрос остается тем же - что там не так пошло, что и как надо исправлять в PDF, чтобы убрать обнаруженную ошибку.
Что за словарь, о каких записях идет речь, значение чего должно быть меньше 32767.0, длина имени чего не должна превышать 127 байт? И так далее, и тому подобное - там этих ограничений хватает.

И самый главный вопрос - как понять откуда вообще в PDF возникают все эти превышения? Что и где напортачили при его создании?
Покопал в поиске (и на форуме, и в Сети), но пока что ничего на эту тему не нашел.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Плохо копали. Ибо именно эту проблему пару дней назад обсуждали в соседней теме про обязательный экземпляр. Я вам советую ее проштудировать от начала до конца, возможно, многие вопросы отпадут сами собой.
 

Mikky

Участник
Топикстартер
Сообщения
161
Реакции
13
Ибо именно эту проблему пару дней назад обсуждали в соседней теме про обязательный экземпляр.
Обсуждали. Но, к сожалению, там вопросы задавали только по двум сообщениям - "Максимальная вместимость словаря (по записям) равна 4095" и "Абсолютное реальное значение должно быть меньше или равно 32767.0".
По первому выяснилось хоть что-то, позволяющее избегать таких ошибок в дальнейшем - избыточное число объектов в словаре, по описанной в теме причине. По второму обсуждение похоже закончилось на "всё равно непонятно, что и у кого переполняется" (добавлю от себя "и по какой причине"). Плюс предложение передистиллировать проблемный PDF, которое то ли поможет, то ли нет.

А у меня подобных сообщений на разные темы уже штук шесть собралось. :( И с каждым первый и основной вопрос - о чем там речь, что там свихнулось? Вот и попытался разобраться - о чем же в этой хреновой таблице вообще речь идет, что там перечисляется.
Если в этом можно разобраться через чтение каких-нибудь материалов, то подскажите каких, покопаюсь.

P.S. Кстати передистиллировать (заново пропустить через Дистиллер?) уже готовый PDF - это как? Дистиллеру же обычно PS-файлы скармливают.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Очень печально, похоже, по предыдущему сообщению, из всего треда не поняли вы, увы, ничего. А раз так, предполагаю, что ссылки на всякие англоязычные референсы и спецификации вам постить бессмысленно, ибо мыслить как программисту вам таки не суждено. Значит попробую обьяснить на пальцах. Обе проблемы - чисто технические, связаны с внутренним синтаксическим анализом генерируемого кода и как то увязывать их с особенностями исходного изображения - все равно, что кормить коров пирожными, дабы они какали шоколадом. Соответственно и решение данных проблем лежит совершенно в иной плоскости и занимается ей не живой человек. Решаются они перегенерацией кода, которая происходит при экспорте изображения в другой формат (самое безболезненное - PS ) и последующая дистиляция обратно в PDF. Если очень повезет, то и простой оптимизацией PDF или даже фиксапом, что и было сказано в почему то возмутившем вас ответе. Теперь еще раз о сущности проблем. Несмотря на всю разницу с постскриптом, представляющим собой программу управления устройством, у них с PDF много общего. В частности то, что внутри бинарных упакованных блоков содержатся обычные текстовые (постскриптовские) морфемы - числовые константы, операторы, строки, процедуры и т.д. Так вот, по идее, константы могут быть любыми, хоть одна триллионная, хоть десять в стопицотой степени, теоретически написать можно все что угодно в зависимости от кипучего движения игристого ума. Был бы формат бинарным, константа ограничивалась бы своим размером, скажем, байт от 0 до 255 и в том же духе, но тут такого ограниченич нет. Но поскольку любая программа такие ограничения таки имеет и ее очень просто завалить подобными фокусами, было принято решение искусственно ограничить разброс числовых констант в архивном PDF. Исключительно исходя из размера буфера парсера. Но данное ограничение проверяет префлайт, а продюсер про него не знает ничего, поэтому запросто может сгенерировать такую не вписывающуюся константу. При передистилляции же велика вероятность, что несколько последовательных конвертаций нормализуют числа в нужные рамки. На то особый резон - буфера то в конвертерах тоже не резиновые и число длиннее определенного количества байт будет просто разбито на части. Я доходчиво излагаю? Про словарь дальше обьяснять или уже понятно?
 

Mikky

Участник
Топикстартер
Сообщения
161
Реакции
13
Очень печально, похоже, по предыдущему сообщению, из всего треда не поняли вы, увы, ничего.
Что-то понял, но в меру своих текущих возможностей. :)
Я уже писал (правда в другой теме), что по работе занимаюсь не версткой и PDF, а несколько другими делами. И многое из обсуждаемого в теме про PDF/A знаю по большей части эскизно, что называется, в общем и в целом. Соответственно, если специалист с опытом и квалификацией понимает сказанное там с полуфразы, то мне, условно говоря, перед этим часто надо пару глав мануала прочитать. :)
Сейчас, раз уж возникла такая необходимость, то срочно набиваю голову необходимой инфой. Но за прошедшие несколько месяцев с этим в необходимом объеме, увы, не справиться. Так что, к сожалению, еще некоторое время буду таким вот полупонимашкой — пока не выйду на сколь-либо адекватный уровень.

А раз так, предполагаю, что ссылки на всякие англоязычные референсы и спецификации вам постить бессмысленно
На те, через которые можно освоить что-то стоящее по теме разговора — вполне даже стоит. Главное, чтобы там объем материала не зашкаливал, как в PDF Reference. Десяток-другой страниц технического текста на английском IMHO вполне можно освоить — в меру свободного времени.
А если кто-нибудь знает книги на русском по внутреннему устройству PDF и по тому, как он создается (может быть где-нибудь и такое выходило), так совсем здорово будет.

ибо мыслить как программисту вам таки не суждено.
Здесь с вами соглашусь. Пока максимум, что приходилось делать - несложные скрипты на Visual Basic и AutoIt.

Я доходчиво излагаю?
Очень даже, спасибо. :)
Теперь похоже понятна моя основная ошибка. Я по своей работе привык, что если есть проблема, то у нее есть какая-то причина. Отыскиваем эту причину, в меру возможного убираем ее и тем самым убираем проблему.
А здесь, если я вас правильно понял, ошибка (слишком большое значение чего-то в коде PDF) образуется, условно говоря, стихийно-случайно, без явно выраженной причины (какой-то ошибки при создании макета). Соответственно мой привычный подход здесь не работает, а надо использовать ваш — пропускаем PDF через Дистиллер раз, через Дистиллер два, на энный раз скорее всего баговое место вычистится и проблема как бы сама собой пропадет.

то и было сказано в почему то возмутившем вас ответе
Не столько возмутившем, сколько озадачившем, вызвавшем некоторое недоумение — подход был не совсем привычный. Теперь более или менее понял смысл сказанного там, спасибо.

Про словарь дальше обьяснять или уже понятно?
Если я правильно понял предыдущее, то там будет действовать похожая логика — Дистиллер раз, Дистиллер два, через какое-то время само собой прочихается. :)

Решаются они перегенерацией кода, которая происходит при экспорте изображения в другой формат (самое безболезненное - PS ) и последующая дистиляция обратно в PDF.
Где-то в теме по PDF/A пробегала идея убирать обсуждаемые проблемы через Word. Открываем в нем проблемный PDF и пересохраняем его (можно перед этим сделать мелкое редактирование).
Стоит такое делать или если работать через Word, то может получиться по принципу «лекарство хуже болезни»?
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Я вангую, что предполагается сохранять как doc или rtf, а потом снова pdf делать? Ну чтож, у каждого из нас быть могут разные ходы, но, как я уже говорил, самое безболезненное - через ps. А ворд все таки сильно перпендикулярный идеологически формат к pdf
 

Mikky

Участник
Топикстартер
Сообщения
161
Реакции
13
Сколько я помню это место в теме, то предлагалось открыть PDF в Word и пересохранить его в PDF/A-1b. Я эту идею пока просто выписал себе до кучи, чтобы потом уточнить стоит ли подобное делать.

А ворд все таки сильно перпендикулярный идеологически формат к pdf
Я тоже о нем не очень высокого мнения (приходилось кое-что слышать о его PDF-возможностях :) ), поэтому просто принял эту идею к сведению. На случай совсем уж полной безнадежности попробовать можно, но не более того.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Тогда уж лучше в кореле! '))'