У меня есть много важных файлов PDF. Единственный способ изменить их - добавить / удалить аннотации. Есть ли эффективный способ контроля версий для таких файлов. Я могу, возможно, использовать стандартные инструменты, такие как SVN / Git. Я слышал, что SVN хранит только дельты даже для двоичных файлов. В случае SVN / GIT, были бы огромные различия, если бы я только изменил аннотации в файле PDF? Я предполагаю, что они не будут огромными, но я не уверен, как аннотации хранятся в файлах PDF и насколько умны дельта-алгоритмы.
3 ответа
Вы можете распаковать PDF-файлы с помощью ряда инструментов (qpdf, pdftk, mutool, cpdf). Например:
pdftk original.pdf output uncompressed.pdf uncompress
Это должно дать вам PDF в формате, где вы можете видеть и показывать аннотации в виде открытого текста. Несжатый файл обычно будет состоять в основном из символов ASCII, но он все равно может содержать двоичные данные. Вам нужно проверить, как это работает с выбранным вами программным обеспечением для управления версиями и хорошо ли оно работает со "встроенными" двоичными данными.
Вопрос в том, что происходит, когда вы изменяете аннотации (я полагаю, с помощью графического редактора), сохраняете файл и распаковываете его. Если вам повезет, файл будет в основном таким же, за исключением аннотаций, но это не гарантируется. Вам придется выбирать свою комбинацию программного обеспечения с умом.
В активном проекте мы используем git для распространения и контроля версий. Некоторые из файлов в формате PDF, и это работает довольно хорошо. Как уже было сказано, нет возможности делать дельты.
Однако одной из возможностей, которая может работать с дельтами, будет экспорт комментариев, которые выдаются как FDF, и затем контроль версий с этими файлами экспорта. FDF может, если комментарии не слишком большие, представлять собой простые текстовые файлы; однако вам придется запускать тесты.
Я не знаю ни одной версии с PDF-файлами (как и мой поиск в Google). PDF-файлы (согласно википедии) являются двоичными. Дельта-хранилище работает только с текстовыми файлами (такими как файлы исходного кода и файлы readme).
У меня есть опыт использования SVN и Git. Я рекомендую использовать Git, так как он обладает превосходными возможностями сжатия и является распределенной системой контроля версий. Subversion - это централизованная система контроля версий, что означает, что вам нужен сервер для его запуска. Вы можете установить программное обеспечение сервера SVN на свой компьютер, но это, вероятно, не стоит накладных расходов. Распределенные системы контроля версий работают через локальные репозитории (т. Е. Сервер не требуется).