Отправить PDF как байт [] / JSON проблема - PullRequest
0 голосов
/ 05 сентября 2011

Я пытаюсь отправить сгенерированный файл PDF (Apache FOP) клиенту. Я знаю, что это можно сделать, записав массив в поток ответов и установив правильный тип содержимого, длину и т. Д. В сервлете. Моя проблема в том, что все приложение было построено на основе идеи, что оно будет только получать / отправлять JSON. В методе service () сервлета у меня есть это:

  response.setContentType("application/json");
  reqBroker.process(request, response);

RequestBroker - это класс, который обрабатывает JSON (процессор Джексона), все является общим, и я не могу его изменить. Кроме того, мне нужно правильно получить JSON из запроса, получить доступ к данным и сгенерировать мой pdf. Так что эти две строки необходимы. Но когда я отправляю ответ, мне нужен другой тип контента, чтобы PDF-файл правильно отображался в браузере. Пока что я могу отправить байтовый массив как часть JSON, но тогда я не знаю, как отобразить массив в формате PDF на клиенте (если что-то подобное возможно). Я хотел бы получить несколько советов о том, как я могу отправить свой PDF и установить правильный заголовок, не связываясь с JSON. Спасибо.

Ответы [ 2 ]

1 голос
/ 05 сентября 2011

JSON и байтовые массивы не смешиваются.

Вместо этого вы должны создать <iframe> и указать его на URL, который возвращает необработанный PDF.

0 голосов
/ 01 июня 2015

Посмотрите здесь: Как отправить PDF в json , в нем перечислены несколько подходов, которые вы можете рассмотреть. Самый простой способ - преобразовать двоичные данные в строку с помощью сжатия Base64. В C # это будет означать вызов Convert.FromBase64String. Однако это приводит к нехватке места, поскольку сжатие Base64 означает увеличение памяти примерно на + 33%. Если вам это сойдет с рук, это наименее сложное решение. если проблема в дополнительном размере, вы можете подумать о том, чтобы его сжать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...