2

我有一个返回 PDF URL 的 WebService。问题是 CMS 很糟糕,很脆弱,而且该文档甚至可能不存在。(或者可能没有到 CMS 服务器的网络连接)

我正在使用 Spring 3.2 MVC,我的控制器很简单:

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

和观点:

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

如果文档存在,这一切都可以正常工作。

但是,如果文档不存在,我希望能够做一个 javascript alert() 或其他操作。

有没有办法将pdf嵌入modelAndView中

modleAndVIew.addObject("pdf",file);

或者我可以通过 jQuery 将数据添加到 html 对象的某种方式?

我只是不想进行 2 次调用,一次是检索文档以查看是否可以,然后一次是实际检索 html 对象标记中的文档。

有任何想法吗?

附录编辑:

我可以这样做吗?: 是否可以将二进制图像数据放入 html 标记中,然后在任何浏览器中照常显示图像?

我在哪里对控制器中的 PDF 进行 base64 编码并将其传递给视图?

4

1 回答 1

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 中的开发人员工具,data="" 有什么想法吗?

于 2013-06-03T19:41:30.397 回答