Как хранить текст с картинками?

 Публичный пост

На первый взгляд вопрос звучит глупо. Но я действительно уже который год пытаюсь найти надежный и универсальный формат текстовых файлов, который еще и картинки бы поддерживал.

Мои основные требования:

  • текст и изображения должны быть в одном файле или в чем-то им притворяющемся (веб-сервисы вроде Notion мимо)
  • возможность создать, открыть и отредактировать на любой ОС: Windows, Android, iOS, Linux, macOS
  • в первую очередь цифровой формат (не для печати)

Остальное - разметка, стили, метаданные - это все необязательно, хотя открытость формата была бы кстати. Пройдемся по некоторым известным опциям:

RTF - Rich Text Document

Я долгое время ошибочно воспринимал этот формат открытым, потому что встречал его на разных системах, и даже на macOS TextEdit использует его по-умолчанию. И если TextEdit'а мало, то как еще один пример "дефолтности": в Xcode стандартный способ добавления своего текста в About window macOS приложения - это прикрепить к ресурсам приложения файл Credits.rtf. Ну не верилось мне, что Apple будет использовать чужой проприетарный формат в своих инструментах для разработчиков. Хотя, как же я мог забыть про векторные иконки, которые iOS/macOS изначально поддерживал только в формате PDF? В общем, да, RTF - это закрытый формат текстовых документов, принадлежащий Microsoft.

Поначалу казалось, что с RTF все хорошо: формат распространенный, изображения поддерживает. Но с последним возникла загвоздка: эта фича по-разному реализована Microsoft и Apple. На macOS и TextEdit, и Pages игнорируют картинки в RTF и вместо этого предлагают использовать свой собственный формат RTFD.

DOC/DOCX

Если уж начали говорить про проприетарщину, то нельзя не упомянуть DOC/DOCX от тех же Microsoft. Этот формат настолько распространен, что найти редактор/просмотрщик можно практически на любой системе.

Основная проблема в том, что он разрабатывался для создания документов под печать. Отсюда избыточные для моих задач разделение на страницы, поля, отступы, шрифты и т.д. Чтению с экрана это не помогает, а скорее даже мешает.

Вторая проблема заключается в приложениях, которые позволяют работать с DOC. Даже если редактор и умеет открывать DOC, он, скорее всего, требует конвертации в свой собственный формат для внесения изменений. А после придется экспортировать полученный документ обратно в DOC. Конечно же, полная сохранность контента при этом никак не гарантируется.

Ну и все-таки это проприетарный формат, т.е. Microsoft может вносить в него любые изменения в любой момент. Это, конечно, не совсем справедливое замечание в сторону Microsoft. С их степенью поддержки legacy мало кто может сравниться. И все же мне не дает покоя мысль, что файл можно запросто повредить, открыв его каким-то сторонним редактором, которые не успел поддержать изменения.

ODT - OpenDocument Text

В качестве открытой альтернативы DOC существует ODT. Я бы, наверное, даже им пользовался. Поставил везде OpenOffice/LibreOffice и не знал бед. Но, к сожалению, ни тот, ни другой, практически не представлены на iOS (о ситуации на андроиде я просто не в курсе). И, несмотря на открытость формата, нет ни одной внятной сторонней альтернативы. Все-таки сегодня поддержка на мобильных системах почти также важна, как и на десктопных. Ну и это по-прежнему формат для печатных текстов, что не совсем мне подходит.

Markdown

Чудесный формат, который я открыл для себя в первые университетские годы. Идеально подходит для написания текстов с простенькой разметкой. Да, есть проблема с тем, что с момента релиза было придумано множество вариаций Markdown: GFM, Pandoc, ExtraMark и прочие. Для частичного исправления ситуации был создан CommonMark, но все же такое ощущение, что GFM пользуется наибольшей популярностью. Видимо, ванильного Markdown всем нехватает.

И все же каким бы чудесным ни был этот формат, он не поддерживает вложения. Картинки можно добавлять, но их нельзя физически привязать к файлу документа. Можно, конечно, для хранения и передачи заворачивать документ вместе со всеми его вложениями в zip архив или же tarball, но все это дополнительные неудобства. Особенно на мобильных устройствах.

TextBundle

Похоже, не я один грустил из-за проблемы с вложениями. TextBundle был создан уже тогда, когда я только открыл для себя ванильный Markdown. Идея очень простая: TextBundle - это папка, в которой лежит .md файл с текстом, .json с небольшим количеством метаданных и папка assets со всеми вложениями. Благодаря File Packages - фишке эпловских файловых систем - эта папка воспринимается как единый файл.

Я открыл для себя этот формат не так давно, но с тех пор он стал моим основным спобом ведения записей. И случайные черновики, и заметки, которые раньше хранились в Notes - все теперь лежит в облачных хранилищах в виде .textbundle документов (пользуюсь FSNotes и One Markdown).

Все бы ничего, но как раз из-за того, что формат построен вокруг возможностей файловых систем Apple, я не могу его использовать нормально где-либо еще, кроме macOS и iOS. И даже то, что сам по себе TextBundle полностью открыт, никак исправляет ситуацию.

Была попытка ввести TextPack, который представляет из себя ту же папку, но собранную в zip архив. Тем не менее, т.к. изначальный формат не был популярен где-либо еще кроме экосистемы Apple, то и TextPack был просто проигнорирован. На сайте TextBundle указывается несколько Linux и Windows приложений, которые, по идее, должны переваривать TextPack. Однако, либо эта информация устарела, либо поддержка ограничивается только импортом или экспортом.

В итоге для меня TextBundle пока что работает лишь по причине того, что я практически не пользуюсь Linux, Android или Windows. Но недавно мне захотелось попробовать временно пересесть на андроид смартфон (любопытно, как много всего поменялось со времен Gingerbread). Эксперимент пришлось свернуть, т.к. я не смог найти удобный способ создавать, открывать и редактировать TextBundle документы на нем. Это не невозможно, но приятного в процессе мало.


TextBundle я открыл для себя совсем недавно. А до этого вообще ничего не слышал о нем, пусть он и существует уже десяток лет. Стало любопытно, вдруг есть еще какой-то формат, который бы соответствовал моим требованиям, а мне просто не повезло с ним познакомиться.

41 комментарий 👇

А почему именно один файл? Мне нравилась идея текст бандла в FSNotes, но потом я перешел на Obsidian, где картинки просто лежат в одной папке и проблем от этого не почувствовал.

  Развернуть 1 комментарий

@slonoed, плюсую обсидиан. Синхронизируется с айфоном через айклауд, всё остаётся внутри экосистемы, без участия левых облаков.

  Развернуть 1 комментарий

@slonoed, я тоже периодически посматриваю на Obsidian, но пока не решился перейти. В основном напрягает то, что эта папка с вложениями становится общей зависимостью для всех заметок. Например, сейчас я не все храню в FSNotes, часть файлов вообще просто лежит где-то на диске, не синхронизируясь с облаком. Я могу перекинуть их через AirDrop на другой мак, закинуть в Dropbox или pCloud. Или добавить в FSNotes, просто скопировав в нужную папку.

В целом, без Zettelkasten, кажется, гораздо удобнее воспринимать свои заметки как отдельные независимые сущности.

  Развернуть 1 комментарий

@leonspok, в Obsidian можно настроить чтобы вложения для каждой папки хранились отдельно

  Развернуть 1 комментарий

@AndreyAnokhin, для каждой папки, но не каждого документа. Переносить в другое место отдельный документ все так же неудобно

  Развернуть 1 комментарий

@leonspok, возможно есть плагин для textBundle в обс. Вот это реально было бы убийством двух зайцев! Если такого нет, кажется имеет смысл пингануть там дев комьюнити на форумах. Оно там достаточно активное.

Ps.
Спасибо за пост! Вот это офигенный пример вопроса с dyor.

  Развернуть 1 комментарий

@skywinder, есть один для экспорта. В принципе, можно и свой запилить, чтобы и импорт был. Посмотрю доступное апи как-нибудь на выходных.

  Развернуть 1 комментарий
Anton Zhornikov , Metal 3d print, Wi-Fi, LTE developer 8 ноября в 22:57

Ошибка заключается в объединении doc и docx в один пункт. Это абсолютно 2 разных формата.
Docx это открытый стандарт в виде XML формата и поэтому он практически одинаково открывается любым редактором.
И на мой взгляд именно он сейчас является реально самым универсальным форматом.
Просто для твоей задачи нужно найти максимально простой редактор (я очень люблю юесплатный мультифплатформенный минималистичный Onlyoffice), выключить отображение полей, разрывов страниц и фигачить по бесконечному белому листу)

  Развернуть 1 комментарий

@st0rm21110, интересно, не знал! Почему-то всегда "x" воспринимал как "eXtended". Посмотрю, что можно сварить из docx.

  Развернуть 1 комментарий
Egor Suvorov , Программист/преподаватель C++ 8 ноября в 15:28

Jupyter Notebook с какими-нибудь аддонами, может?

  Развернуть 1 комментарий

может просто html?

одна папка на один документ, в ней index.html и картинки

получается тот же текст бандл, но можно открывать где угодно

  Развернуть 1 комментарий

@ngalaiko, раньше, кажется, в фаерфоксе была возможность сохранить страницу в "веб-архив". Страница с картинками. Но выглядит троху геморно.
У меня тащемта есть такой же запрос: хочу делать свою "базу знаний" как обсидиан, но чтобы любую страницу с картиночками можно было удобно скопировать и отправить кому-нибудь и чтобы это был один файл. В итоге пользуюсь костылём в виде ноушена (там есть экспорт в pdf, корявенький троху, но есть).

  Развернуть 1 комментарий

@dmrlx, нет, я имею в виду вот что:

делаешь папку «моя заметка»
в ней картинка image1.jpeg
и файл index.html с таким контентом:

<p> привет мир </p>

<img src=“image1.jpeg”/>

затем открываешь этот html любым браузером, готово

можешь экспортнуть браузером как pdf, работает отлично

  Развернуть 1 комментарий

@ngalaiko, в итоге две версии, грубо говоря. Внёс изменения в оригинальную — переэкспортни. Костыльные костыли всё ещё. А хочется чтобы страница с картинками и без лишних телодвижений.

  Развернуть 1 комментарий

@dmrlx, можешь папку закинуть на fly.io какой нибудь + nginx + syncthting = получается онлайн синxронизация и ссылка

  Развернуть 1 комментарий

@ngalaiko, тогда уж имеет смысл вместо html использовать markdown. Хотя бы удобнее будет писать текст.

  Развернуть 1 комментарий

@leonspok, но тогда открываться будет не везде)

  Развернуть 1 комментарий

раржпег

  Развернуть 1 комментарий

Из менее ебанутого предложу хтмл+картинка в бейс64

  Развернуть 1 комментарий

@zrzst, генерировал так файлы отчётов с графиками, по-моему отличный вариант для описанной задачи. Всё в одном текстовом документе, браузеры есть везде, текстовые редакторы есть везде

  Развернуть 1 комментарий

ну и напоследок exif

  Развернуть 1 комментарий

Но я действительно уже который год пытаюсь найти надежный и универсальный формат текстовых файлов, который еще и картинки бы поддерживал.

а как планируете использовать эти файлы? Требования которые идут дальше понятны, но не ясно почему они именно такие. Возможно, полезно будет пересмотреть изначальную задачу.

Может быть, например, проблему можно решить с помощью MD + git или сходных технологий.

  Развернуть 1 комментарий

@ksur, хороший вопрос. Сейчас часть файлов используется для заметок в FSNotes, часть - в виде рандомных временных файлов, которые редактируются в One Markdown и синхронизируются через iCloud, часть хранится локально и разве что бэкапится в Time Machine.

В целом, мне кажется, файл как базовая единица хранения информации - это довольно гибкая штука. Если нужны связи, то поверх набора файлов можно организовать индексацию (что и делает FSNotes). В ином случае каждый файл самодостаточен, соответственно способ их организации можно менять как угодно много раз, если задача меняется.

  Развернуть 1 комментарий

@leonspok, А почему не сервис типа workflowy.com ?
он древовидный (считай те же папки), поддерживает вставку картинок, хэштеги, синхронизируется по разным устройствам и даже работает оффлайн.

  Развернуть 1 комментарий

@Rastishka, спасибо! Выглядит интересно. Я посмотрю, но, в целом, не очень доверяю сервисам.

  Развернуть 1 комментарий

@leonspok, На платном тарифе есть бекап в Dropbox. =)

  Развернуть 1 комментарий

А нельзя запихнуть в markdown картинку base64 ?

  Развернуть 1 комментарий

@ben_yazi, можно, вставив html тег. Но с мобильного муторно конвертировать картинки в base64. Да и сам файл получается не очень читаемый.

  Развернуть 1 комментарий
Maxim Kоbetz , JavaScript Software Engineer 8 ноября в 11:06

Если нужно в 1 файл - как вариант можно хранить в .mht формате.

Хром в него уже умеет. Как раз сохранит html страничку со всем форматированием и картинками в 1 файл.
Но учтите что картинки с lazy load или под катом надо сначала загрузить (проскролить и убедиться что видны), а потом сохранять

  Развернуть 1 комментарий

@MaximmV, получается, это по большей части формат для архивирования?

Но, может быть, когда-нибудь сделают удобный редактор для .mht.

  Развернуть 1 комментарий

@leonspok, Да скорее так. Есть редакторы для mht, его даже word открывает. Но по сохранению обычно получается ерунда

  Развернуть 1 комментарий

Google Docs от корпорации добра.

  • есть режим документа без разбивания на страницы
  • очень юзерфрендли вообще, особенно для работы с текстом + картинки в любом месте
  • кроссплатформенность)
  • все можно скачать/экспортировать

После Joplin и мучением в маркдаун остановился на нем.

  Развернуть 1 комментарий

@MichaelD, в целом, с последними апдейтами Google Docs действительно довольно близок к моим требованиям. По крайней мере, по работе meeting notes почти всегда ведутся в нем.

  Развернуть 1 комментарий
Николай Елисеев , Разработчик/архитектор 1С 8 ноября в 05:22

Confluence + Postgres. Плюсы: кросплатформенно. Минусы: немного сложнее разворачивать, чёт теекстовые файлы.

  Развернуть 1 комментарий

@d1823244, по-моему, не немного :)

  Развернуть 1 комментарий
Сергей Игнашев , Леттеринг | Техническое писательство 8 ноября в 06:45

А пробовал Eagle?
https://ru.eagle.cool/
Не прям то, что тебе нужно, но хранит кучу разных форматов и текст, синхронизирует с облачками. Для каких-то медиаштук (видео, картинки, рефы) это одна из лучших штук, мне кажется

  Развернуть 1 комментарий

@Sio, тут, как я понимаю, поддерживается только десктоп

  Развернуть 1 комментарий

@leonspok, Да, но есть расширения на браузеры

  Развернуть 1 комментарий

побуду немного ослом из Шрека, но чем не вариант telegra.ph, а ссылки на страницы хранить в избранном телеги.

  Развернуть 1 комментарий

@burivuh26, привязывает к онлайну и все-таки когда-нибудь telegra.ph умрет (как и большинство других сервисов). А файлы они тут, на диске, и в облаке, и в домашнем бэкапе.

  Развернуть 1 комментарий
Nikita Baranov , Программирую на питоне, пью кофе, долго гуляю 9 ноября в 16:43

Может посмотреть в стороне obsidian.md?
Понимаю, что сейчас на волне Цетелькастена он стал популярен, но вроде все что надо в нем есть. Верстка, картинки вставляются в текст, как ссылки, хранятся рядом. В режиме просмотра открываются нормально. Плюс синхронизация через гит бесплатная.

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб