Ответ, отправленный @duskwuff, является правильным - Firefox прекращает передачу первых запросов, как только ему становится достаточно для обработки PDF.
Ниже приведены лишь некоторые подробности, которые я обнаружил.Firefox прекратит работу, если ваши скрипты вернут следующие заголовки:
Accept-Ranges: bytes
Content-Length: 29293315
Вы также можете (но не обязаны) возвращать этот заголовок:
header("Content-Range: bytes 0-29293314/29293315");
Однако по умолчанию Apache пытается сжатьчто бы PHP ни возвращал, а затем добавляет этот заголовок:
Transfer-Encoding: chunked
И когда Firefox (и Chrome) увидят это, они не закроют соединение.Поэтому я просто отключил сжатие Apache, и все работает.Теперь Firefox просто выполняет несколько запросов, получает биты PDF вместо всего файла и прекрасно отображает первую страницу (потому что ему не нужен был весь PDF для отображения только первой страницы).