[О блоге] [наверх] [пред] [2020-10-13 19:51:04+03:00] [04391b1ba45ef2d64c059afec495be3704019f7a]

PDF формат с точки зрения программиста

https://habr.com/ru/post/523288/
https://habr.com/ru/company/abbyy/blog/108459/
Я не силён в деталях PDF, ни PostScript, ни DVI, ни других, но если о
PDF что и можно услышать от понимающих людей, то только сильно не лестное.
В основном, в качестве более suckless решения предлагают PostScript. А
ещё очень много пишут о недостатках PDF как формата для возможного
редактирования. Ну это сразу я считаю глупостью -- он никогда и не
предназначался для редактирования или чего-то такого, поэтому не нужно
от него хотеть странного. Он для конечного представления, для печати и
отображения, точка.

С одной стороны, очевидно, читая хотя бы просто даже Wikipedia, что PDF
это дико сложный и переусложнённый формат. PostScript явно лучше.
Хочется сразу PDF в топку выбросить. С другой стороны: PS является
полноценным языком программирования и это означает что добавляет вектор
атаки на компьютер, ибо PS это просто программа. Хочется сразу PS в
топку. Тогда как ограниченность PDF делает его, как бы, более
безопасным.

DVI не умеет хранить в себе изображения и шрифты -- поэтому не может
являться portable форматом, который бы открывался везде одинаково. Хотя,
а если сделать tarball с шрифтами, DVI и EPS?

Некоторые почему то упорно хотят сравнивать PDF с DjVu. Опять же, я не
сведущ, но... первый поддерживает полностью векторные примитивы, а
второй это чисто растровый -- как их вообще можно сравнивать? Они для
совершенно разных задач. Сравнивать их можно только если вопрос хранения
сканированных документов -- DjVu безусловно лучше (для lossy). Или
сторонники DjVu считают что вообще документы должны быть
сканированными/отрендеренными -- мол простота и эффективность? Что-то в
этом есть, но high-quality то вектор тоже хочется, особенно когда речь
про просто текст.

В комментариях в первые увидел упоминание XPS формата от Microsoft.
Вообще не слышал о нём. Но... раз Microsoft, то наверное гиблое дело, не
стоящее рассмотрения. Буквально на днях секретариат отправлял Word файл,
который надо распечатать и заполнить. Пошёл к ним, чтобы они же мне его
и распечатали -- в итоге на Windows/Microsoft Office он открылся как-то
криво и при мне его руками чуть переформатировали. То есть, даже в своей
экосистеме Microsoft не в состоянии сделать формат который бы одинаково
везде отобразился (речь только про отображение).

Во всяких сравнениях, если я вижу что PDF is more advanced, more
powerful и всякое такое прочее чем PostScript, то сразу закрываю этот
бред. Как можно говорить о более продвинутом формате, когда на другой
чаше весов буквально язык программирования?

Насколько понимаю, изначально первые версии PDF были типа урезанной
версией PostScript -- где нет полноценного языка, но достаточно
возможностей для текста, картинок, разбиения на страницы (с нужными
размерами). В PDF первой версии (1993!) сразу же была даже поддержка
гиперссылок и закладок. Все последующие нафиг уже нужны.

В итоге, среди всего разнообразия форматов для гарантированного
отображения/чтения/печати есть только PostScript и PDF. И оба всё равно
зависят от того, есть ли встроенные шрифты, как минимум. Первый ужасен с
точки зрения безопасности. Второй с точки зрения сложности, но тут я не
силён и не знаю -- может быть речь идёт о всех последующих модификациях
формата? PostScript на всяких проприетарных системах не откроется, ибо
из коробки ничего нет. PDF всё же поддерживается для отображения везде
(из коробки в Windows, насколько помню, конечно же, не было). Пусть он и
кака, но пока это вроде меньшее из зол. Ну и я бегло посмотрел на
объяснения и примеры PDF документов (только базовый функционал, 1.0) --
не тривиальный, но вроде и не архисложный формат, с точки зрения
программиста (если считать что рендеринг шрифтов это отдельная и не
связанная задача).

    [оставить комментарий]
    комментарий 0:
    From: kmeaw
    Date: 2020-10-13 18:52:39Z
    
    С PDF всё ещё хуже — туда можно вставлять код на JavaScript.
    
    Пример: http://www.acrotex.net/blog/wp-content/uploads/2011/07/pdfblog_21.pdf
    
    На странице 9 есть пример 14.2 с формой, которая складывает два числа,
    которые вводит пользователь, а в случае ввода чего-то, не похожего на
    число, показывает сообщение об ошибке.
    
    API:
    https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_developer_guide.pdf
    
    Почти любой формат данных позволяет манипулировать состоянием читателя
    этого формата. Некоторые форматы данных достаточно продвинуты, чтобы на
    их читателе можно было эмулировать ограниченную машину Тьюринга.
    
    Где находится граница, определяющая приемлимость использования
    формата и/или реализации читателя для обработки данных, полученных
    из внешних источников?
    
    комментарий 1:
    From: Sergey Matveev
    Date: 2020-10-13 19:07:35Z
    
    *** kmeaw [2020-10-13 21:48]:
    >С PDF всё ещё хуже — туда можно вставлять код на JavaScript.
    
    Это я всё отношу к новомодным поделкам и я даже проверяю чтобы
    PDF-reader не имел никаких JS-возможностей. Это malware, misfeature,
    security hole. Знаю что такие бывают, но на практике не встречал (или не
    знал что там JS и я что-то не увидел при просмотре). То что в PDF можно
    вставлять JS, не означает что это нужно делать и, благо, вроде этого
    массово не делают.
    
    >Где находится граница, определяющая приемлимость использования
    >формата и/или реализации читателя для обработки данных, полученных
    >из внешних источников?
    
    Кто бы знал :-)! Но PDF, конечно без JS который, вроде вполне себе
    подходит всем (возможно кроме сложности самого формата, но это уже
    отдельная тема). Открытый формат, свободные реализации, справляется с
    задачей (хотя смотря как сделать документ (например не встроить
    нестандартные шрифты)). Но он не управляет компьютером -- это главное.
    
    комментарий 2:
    From: kmeaw
    Date: 2020-10-13 19:26:43Z
    
    О, теперь ответы приходят ещё и на почту. Отлично!
    Или это изменение не в блоге, а в настройках MUA?
    
    Только как правлиьно отвечать на такие письма? Если я сделаю reply, то
    письмо уйдёт на stargrave@, а если group-reply, то ещё и на comment@. В
    последнем случае, я полагаю, придёт два письма. Может быть отправлять
    заголовок Reply-To: с comment@, а Cc: не проставлять?
    
    On Tue, Oct 13, 2020 at 10:07:29PM +0300, Sergey Matveev wrote:
    > Но он не управляет компьютером -- это главное.
    А что значит "управляет"?
    
    комментарий 3:
    From: Sergey Matveev
    Date: 2020-10-13 19:37:45Z
    
    *** kmeaw [2020-10-13 22:22]:
    >О, теперь ответы приходят ещё и на почту. Отлично!
    >Или это изменение не в блоге, а в настройках MUA?
    
    Это я нажал group reply в MUA и забыл заменить Cc: на To: :-)
    Чисто моя ошибка, прошу прощения. В блоге всё без изменений.
    
    >А что значит "управляет"?
    
    Запускает программы :-). Полноценные Тьюринг полные программы.
    
    комментарий 4:
    From: Алексей
    Date: 2020-10-13 19:51:19Z
    
    Вот за что я как пользователь ненавижу PDF, так это за его тормознутость. Уж не знаю, что там за архитектура такая дурацкая, что он способен заставить призадуматься даже самый современный комп.
    Вот скачаешь какие-нибудь красочно оформленные DnD-модули, или там пособие по раскраске миниатюр WH40K, так каждая страница на современном восьмиядернике по 10 секунд рендерится! Это вообще что за издевательство? Иные 3D-сцены в каком-нибудь Blender быстрее рендерятся.
    
    комментарий 5:
    From: Sergey Matveev
    Date: 2020-10-13 19:59:36Z
    
    *** Алексей [2020-10-13 22:51]:
    >Вот за что я как пользователь ненавижу PDF, так это за его тормознутость.
    
    Согласен, есть такое. Но мне казалось что это только из-за über high-res
    картинок. Возможно только пару раз встречал что точно и из-за
    нагромождения плотной векторной графики. Я бы тут не PDF винил, а
    авторов документов, считающих что без их high-dpi картинки всё будет
    насмарку :-).
    
    Разжать (JPEG, JPEG2000, DjVu, и т.д.) картинку в очень большом
    разрешении -- в любом случае много времени займёт. Так то на практике
    DjVu самый медленный формат у меня, но потому что в нём 100% вещей это
    сплошные сканы. У меня Core i5 в ноутбуке, но на нём иногда и десятки
    секунд приходится ждать отображения lossless JPEG200 пожатых
    отсканированных фотографий.