Я задавался вопросом, где Google Chrome сохраняет документы PDF, которые он открывает в самом браузере. Я знаю, что они удалены, если мы не сохраняем их и закрываем браузер.
Я изучил хром временная папка в ~/.cache/google-chrome, но не мог найти PDF там.
Это находится в том каталоге, хорошо. Просто использует случайную строку для имен файлов. Проверьте его:
find ~/.cache/google-chrome -type f -exec file {} + | grep PDF
, Например:
$ find .cache/google-chrome/ -type f -exec file {} + | grep PDF
.cache/google-chrome/Default/Cache/f_004bf0: PDF document, version 1.5
.cache/google-chrome/Default/Cache/f_004c01: PDF document, version 1.4
Каталог кеша Google Chrome $HOME/.cache/google-chrome/Default/Cache
в Linux содержит один файл для каждой записи кеша с именем <16 шестнадцатеричных символов>_0
в "простой формат записи":
Поэтому вы не можете просто использовать файл
для определения типа файла (он просто обнаружит данные
) , но должен искать заголовок PDF. Это перечислит все PDF-файлы в каталоге кэша:
grep -Rl '%PDF' $HOME/.cache/google-chrome/Default/Cache
Примечание: Это может привести к ложным срабатываниям, если строка %PDF
появится где-то в файле, который не является PDF
. Примечание. Если вы не используете профиль Chrome по умолчанию, замените По умолчанию
именем профиля, например Профиль 1
.
evince
с удовольствием прочитает кэш-файл напрямую, без необходимости удалять заголовок.
Если вы хотите извлечь исходный PDF-файл, сохраните следующий скрипт как extractpdf.py
:
def main(cachefile):
with open(cachefile, 'rb') as f:
s = f.read()
with open(cachefile + '.pdf', 'wb') as f:
f.write(s[s.find(b'%PDF'):s.rfind(b'%%EOF')+5])
if __name__ == '__main__':
import sys
main(sys.argv[1])
И назовите его как python3 Extractpdf.py <кэш-файл>