Я нахожусь в процессе написания Ruby-скрипта / приложения, которое помогает мне компилировать LaTeX в (как минимум) PDF.Одна особенность, которую я хочу иметь, состоит в том, что он должен запускаться pdflatex
итеративно, пока PDF не сойдется (как и следовало ожидать, я думаю).
Идея состоит в том, чтобы сравнить PDF-файл, созданный за одну итерацию, с файлом из предыдущей итерации, используя их отпечатки пальцев.В частности, в настоящее время я использую Digest::MD5.file(.)
.
. Проблема в том, что это никогда не сходится.(Надеюсь) виновник - это временная метка PDF, которая установлена в секундах как минимум на pdflatex
.Поскольку прогоны pdflatex
обычно занимают больше одной секунды, результат постоянно меняется.То есть, я ожидаю, что PDF будут равны отметке времени после некоторой точки.Это предположение может быть неверным;Подсказки приветствуются.
Что я могу с этим сделать?Мои основные идеи на данный момент:
- Использовать библиотеку, способную выполнять эту работу
- Удалять метаданные и извлекать только хеш-содержимое PDF
- Перезаписывать временные метки фиксированным значениемперед сравнением
У вас есть больше идей или даже решений?Решения должны использовать только бесплатное программное обеспечение, работающее на Linux.Такие, которые используют только Ruby, предпочтительнее, но использование внешнего программного обеспечения вполне приемлемо.
Кстати, я точно не знаю, как кодируется PDF, но я подозреваю, что простое сравнение содержимого текста не будет работать для менятак как только более поздние итерации могут изменить только графику или ссылки.
Возможно, связано: