Доставка файла из сервлета, а не из JSP, - гораздо более простой подход.
Получите ваш PDF в байтовый массив, и тогда вы можете сделать что-то вроде этого:
Код сервлета:
byte[] pdf = PDFObject.getBytes(); // You may need to use a ByteArrayOutputstream or similar depending on the PDF Object
out.write(pdf, 0, pdf.length);
Вы можете добавить свои выходные заголовки в HttpServletResponse как обычно.
Но вы уверены, что ваш объект представляет собой PDF-файл в виде листа Excel / CSV, а не PDF-файла? содержимое читается в Excel?