Эта ошибка произошла из-за этой строки в файле конфигурации /conf/httpd.conf
:
AddOutputFilterByType SUBSTITUTE application/pdf
Вот что пытается сделать Apache: всякий раз, когда выполняется GET и GET возвращает файл PDF, он пытается прочитать файл и заменить определенные строки текста.
Эти замены определены в этой строке:
Substitute "s|http://localhost:8081|https://example.com|in"
Когда apache получает GET и видит, что мы запрашиваем PDF-файл, он пытается прочитать и заменить эти строки, однако, поскольку файл поврежден, apache не может его прочитать.
Затем он выводит все содержимое PDF в одну строку внутри тела ответа, которая оказывается (в нашем конкретном случае) больше максимальной длины строки по умолчанию (измеряется в МБ).
Это приводит к обрезанию ответа, и в итоге мы получили пустой ответ.
У нас также была эта строка:
SubstituteMaxLineLength 5M
Он изменяет максимальную длину строки по умолчанию, однако наш файл весил 20 МБ, и здесь мы устанавливаем максимальную длину 5 МБ, таким образом, не охватывая этот конкретный случай.
Нашим решением проблемы было просто удалить первую строку, поскольку нам не нужно было изменять содержимое PDF:
AddOutputFilterByType SUBSTITUTE application/pdf
Однако вы можете изменить максимальную длину, используя эту строку:
SubstituteMaxLineLength LENGTH
Я бы не советовал это делать, поскольку по соображениям безопасности ограничение по умолчанию ниже.