jpg к PDF без потери данных

Каждый раз, когда возможно, правила make-файла должны сначала создать свою цель под временным именем, затем переместить его в место. Тем путем, если процесс сборки прерван по какой-либо причине, не будет полузаписанный конечный файл, который нельзя отличить из полностью записанного файла.

out.txt: foo.sh input.txt
        ./foo.sh -i input.txt >$@.tmp
        mv -f $@.tmp $@

mv -f $@.tmp $@ общая идиома make-файла.

Ответ Juliano показывает вариант, где название временного файла сгенерировано динамично. Динамическое поколение имени требуется, если может быть больше чем один процесс, генерирующий ту же цель или если каталог может быть записан в другими пользователями. Это очень редко имеет место для дерева сборки (если бы они были проблемами, большим количеством из того, что продолжается в типичном make-файле, то повредился бы), таким образом, дополнительная сложность обычно не необходима.

4
14.03.2012, 12:27
2 ответа

Один путь состоит в том, чтобы использовать pdflatex вместо convert.

Вам нужно в дополнительном файле, который здесь называют image.tex:

\documentclass{article}
\usepackage[active,tightpage]{preview}
\usepackage{graphicx}
\PreviewMacro[{*[][]{}}]{\includegraphics}
\begin{document}
   \includegraphics{img.jpg}
\end{document}

Затем выполненный pdflatex image.tex генерировать image.pdf.

10
27.01.2020, 20:47

Вы уверены, что существует весь JPEG - метаданные и данные изображения в формате JFIF/JPEG в PDF? В противном случае затем, даже если данные изображения извлечены дословно, pdfimages должен будет восстановить контейнер, и это не может соответствовать.

Можно получить аналогичную ситуацию со звуковыми файлами и тегами и т.д. - Вы не можете сделать сравнений суммы при изменении метаданных.

В той ситуации необходимо вычислить хеши для просто части данных, а не целый файл.

3
27.01.2020, 20:47
  • 1
    Подход с convert действительно возвращает другое изображение. Сравнение изображений с gimp выставочные незначительные различия. С pdflatex как описано в моем ответе, Вы получаете точно то же изображение назад - включая исходные метаданные. –  jofel 14.03.2012, 14:24

Теги

Похожие вопросы