Почему при скачивании PDF файлов больших размеров они становятся битые?
Ты получаешь бинарник как текст в кодировке utf8, я правильно тебя понял?
Ничего не кажется тебе в этом деле странным?)

Полагаю файл бьётся на этапе преобразования - прочитать бинарник как utf8 - закодировать получившийся текст как из utf8 как бинарник.

Что у тебя скрывается под api? Axios? Сделай так:
api.get(`files/${id}`, {
  responseType: 'blob'
}).then((r) => {
  const url = URL.createObjectURL(r.data);
  // ...
Я бы сказал что на этой границе стоит какой то лимит. Либо запроса либо ответа. 
Открывайте в бинарном редакторе и смотрите. Скорее всего либо мусор либо еще что то. 

Для определения используйте что то типа KDiff3