PDF не скачивается после обработки
Готовый файл отдаётся ссылкой на объект в памяти вкладки: скрипт создаёт её, подставляет имя и нажимает за вас. Сорваться это может в трёх местах. Браузер придержал автоматическую загрузку и ждёт разрешения в углу адресной строки. Передача отменилась на старте, и вы видите сетевую ошибку без единой подробности. Или результата попросту нет: обработка оборвалась раньше, чем файл собрался.
Коротко о цифрах
- Как отдаётся результат
- ссылкой на объект в памяти вкладки, имя задаётся атрибутом download
- Отзыв ссылки
- отложен на следующий такт — иначе Safari отменяет начатую передачу
- Один файл против многих
- один отдаётся напрямую, несколько — одним ZIP
- Имя результата
- имя первого исходника плюс суффикс операции
- Что нам недоступно
- список загрузок, права на папку, расширения
Три места, где обрывается путь
- Разрешение. Страница, которая запускает подряд несколько загрузок, попадает под защиту браузера: первый файл уходит, остальные ждут вашего согласия в панели адресной строки.
- Отзыв ссылки. Ссылка на объект в памяти живёт ровно до отзыва, и если отозвать её в тот же момент, Safari отменяет уже начатую передачу. Мы переносим отзыв на следующий такт именно поэтому.
- Пустой результат. Обработка не дошла до конца — файла, на который нажимает скрипт, не существует, и нажатие уходит в никуда.
- Внешний запрет. Расширение-блокировщик или политика рабочего компьютера могут запрещать сохранение объектов из памяти страницы; тогда не работает ни один сайт с обработкой в браузере, а не только этот.
- Место и права. Папка загрузок переполнена, недоступна или переехала — браузер сообщает об этом только в своём списке загрузок, а на странице ничего не меняется.
Проверка по порядку
- Откройте список загрузок браузера. Строка с отменой означает, что передача началась и была прервана; пустой список — что она не начиналась.
- Посмотрите на панель адресной строки: значок с перечёркнутой стрелкой и есть придержанное разрешение.
- Убедитесь, что рядом с файлом показан итоговый размер. Нет размера — обработка не завершилась, и скачивать пока нечего.
- Проверьте загрузку с любого другого сайта: если не работает и она, дело в браузере или в политике устройства.
- Повторите операцию в другом браузере. Один и тот же результат в двух движках снимает вопрос о настройках.
- Разделите документ на части, если он большой: короткая обработка доходит до конца заметно чаще.
Что зависит от нас, а что нет
От нас зависит форма отдачи. Один результат отдаётся как есть, несколько — одним архивом, чтобы не запускать подряд десяток загрузок и не упираться в защиту браузера. Имя собирается из имени первого исходника и суффикса операции: так система не приписывает к нему номер в скобках при повторном сохранении. Отзыв ссылки на объект отложен на такт — без этой отсрочки Safari обрывает передачу и показывает сетевую ошибку на ровном месте.
От нас не зависит всё остальное. Мы не видим вашу папку загрузок, не знаем прав на неё, не управляем расширениями и не можем обойти корпоративную политику. Ни одно из этих ограничений не сообщает о себе странице — браузер справедливо не даёт сайту читать состояние своих загрузок, поэтому единственный источник правды здесь его собственный список.
Частые вопросы
Почему браузер спрашивает разрешение на скачивание нескольких файлов?
Это защита от страниц, которые сбрасывают на устройство пачку файлов без спроса. Она срабатывает на вторую загрузку подряд, поэтому результат из нескольких документов мы упаковываем в один архив и запускаем ровно одно сохранение.
Скачалось имя вида отчёт (1).pdf. Это другой файл?
Нет, это тот же самый файл. Номер в скобках дописывает операционная система, когда в папке уже лежит файл с таким именем, и на содержимое документа это никак не влияет.
Можно ли скачать результат второй раз, не обрабатывая заново?
Пока вкладка открыта и файл в ней не сброшен — да, повторное нажатие отдаёт тот же самый результат. После перезагрузки страницы память вкладки очищается, и операцию придётся выполнить заново.
Скачивание не идёт только на рабочем компьютере. Что это значит?
Почти наверняка политика организации или расширение, запрещающее сохранять объекты из памяти страницы. Проверьте на личном устройстве: если там всё скачивается, вопрос решается только с вашим системным администратором.