2013-06-03 3 views
2

У меня есть WebService, который возвращает URL-адрес PDF. Проблема в том, что CMS ужасна, ошибочна, и этот документ может даже не существовать. (Или не может быть сетевое соединение с сервером CMS)Вставить PDF в modelAndView

Я использую Spring 3.2 MVC и мой контроллер достаточно прост:

modelAndView.addObject("documentURL", service.getCmswsGetDocumentUrl()); 

и вид:

<object data="${documentURL}" width="600" height="800" type='application/pdf' > 

Этот все работает нормально, если документ существует.

Однако, я хочу, чтобы иметь возможность сделать, скажем, предупреждение javascript() или что-то, если документа там нет.

Есть ли способ, чтобы встроить PDF в ModelAndView как

modleAndVIew.addObject("pdf",file); 

Или каким-то образом, что я могу добавить данные в объект HTML с помощью JQuery?

Я просто не хочу делать 2 вызова, один из них, чтобы получить документ, чтобы узнать, могу ли я, а затем на самом деле получить документ в теге объекта html.

Любые идеи?

Adendum Edit:

Могу ли я сделать что-то вроде этого ?: Is it possible to put binary image data into html markup and then get the image displayed as usual in any browser?

где я base64 кодирования PDF в контроллере и передать, что к виду?

ответ

0

Комбинация бинарного изображения и тега объекта. Вот контроллер:

InputStream is = (new URL(service.getCmswsGetDocumentUrl())).openStream(); 
    byte[] pdfBytes = IOUtils.toByteArray(is); 
    modelAndView.addObject("pdf",new String(Base64.encodeBase64(pdfBytes))); 

и вид:

<object data="data:application/pdf;base64,${pdf}" width="600" height="800" type='application/pdf' > 
    </object> 

Это работает в FF и Chrome, но не IE.
Сколько я ненавижу IE? Я не могу подсчитать пути даже с while (1) {waysIHateIE ++; }

Глядя на инструменты разработчика в IE, данные = "" любая идея почему?

Смежные вопросы