1

I have one Rest API which is returning ResponseEntity<byte[]>(IOUtils.toByteArray(bpStream), headers, HttpStatus.OK); and it is exposed using http get. I am facing issue in chrome, safari and mozilla to display the PDF however it is working fine in IE. Below is my API

@ResponseBody
    @RequestMapping(value = "/blueprint/csd/{projectId}/report/{requestId}", method = RequestMethod.GET)
    public ResponseEntity<byte[]> getBlueprint(@PathVariable("requestId") long requestId, @PathVariable("projectId") long projectId, final HttpServletRequest request) throws Exception {
        String fileName = "report.pdf";
        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Type", "\"application/pdf\",\"pdf\"");


        LOG.debug("Inline BP Content");
        headers.add("Content-Disposition", new StringBuilder("inline; filename=\"").append(fileName).append("\"").toString());

        String outputFileName = "ps_" + requestId + ".pdf";
        String fileLocation = System.getProperty("java.io.tmpdir") + File.separator + outputFileName;
        InputStream bpStream = new FileInputStream(fileLocation);

        return new ResponseEntity<byte[]>(IOUtils.toByteArray(bpStream), headers, HttpStatus.OK);
    } 

I am calling the above URL using $window.open(), bit the browser displays string of PDF in place of actual PDF like

%PDF-1.5 %âãÏÓ 3 0 obj <>stream xœ+äî| endstream endobj 4 0 obj <>stream xœmޱ‚0E÷~Åu¶ ›&CI7C´@    Z|ÿÉ¿´q É}ËÎy%{¸à.¹ƒº1ÿd$‡ªÙŠo}w’‹qÄ(òµêX¦Xù‹!—EÕh°5‚eN†KØŸŸYž"µ4Xª&cïö}2M; =jzê«7{¿¬wÖèoÙN_¦G2ãypmfßIAˆ endstream endobj 5 0 obj <>stream xœ+äî| endstream endobj 6 0 obj <>stream xœmޱ‚0E÷~Åu¾"(lJ˜    $ÜÑ%h±ÿÉ¿´q É}ËÎy%{¸$#p†Cì oÌ?iqÈš­øÖw'8…ÅI£Èײc™då/N$–EÕ(˜Á2'Â%ì…ÏÏ,O‘;[MÚÜ=ìûV7í4ªQÙ§ºz³÷ËqgþÆXÓ©Ë”àhõx\›Ù7F2Aƒ endstream endobj 7 0 obj <>stream xœ+äî| endstream endobj 8 0 obj <>stream xœmޱ‚0E÷~Åu¶ ›&CI7C´@  Z,Äò/}q É}ËÍË9ï¡dÊA1NØpÈÔù'CCÕlÅ·>ä"Dœ1Š|­:–)VþâBÈ%AQ5š¶¶F°ÌÉp    {ás3ËS¤Ö ÖU“±wû¾‡3M;pzÔÞìý²Fœ¬Ñß3Îvú2%8:3žj3ûCNA~ endstream endobj 9 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<>/XObject<>>>/Length 2752/BBox[0 0 1224 792]>>stream xœÕ\mœºþ¾¿Â7R–`° \©òrSݪU›ìJ­ÔTË0;t˜³{÷ß÷ØÆÆÃðâ¦Ò4‘âÃpìçøøØ<ìü¼ùôpã3P†V7¿>Ü|»ñПø¯¹ð—ÿDzØÞ|øŠvÑÃúæöÝøn§â¢dkVò –GꊘWtÅíêéæöoUù’­ÒÅh•¦»´BqçouV£r’¼Ü¯P½Ïšø1Ë³æ ­Ë 5›Å»]ž%q“•Ê ø9Ù×ú­€›PµÞ¤ió^(Öûí6®Þxkqž´×uZ×Û´hjUwÒ ŠQ¿)wïÑë&ËSô˜æåëA£q•Šë*­÷y#L—ûzTí?ÅYQ7ÜO.z:pv€r·tÎàu“MY§ÅAÿxŸÓ8Ù@G“|Ïmû,zñ5kÐç¸IŸÊêÍA¿r ŽÌ{'I¹ÝÅEÊoÚ¨ÖPè@öºFc•ÖiUƒ'¤ZÓTÙã¾îkh>+tózà‹y÷[õ*{Ú4Žp‹˜áCgä™°¼1)-|ÝÄÇ}x‰ó=¿c¤£F7ä(+ŽÃ÷Ÿÿ‚r%Ââþ‚5íoÓN¨v3$<t߉h;n÷Fô}I›8Ëë_Ðs•Õ›"þ÷ÇÝc+ã~†lߣ0!=‚˜ÁÉ}ȶO})Ñ7ÓB­ÊŠ0Ñï´491ö=Ç !h=‡õ®‹?nïù¼ýrméÞqÀÏ !ÿÇ»³Ñu¨€Ëú%h¸”¯¢–úþGÝ’"âùœç†óN<’ö&ÁZ`t,$²e¡¦¤~™hô\Ký2¹YÿØxßͤWpñ€›]D¨ïPÞÏ%íEÞUœŽŸ‡ø´ëI9:nå,|xÛ¥£”ËÀ>¢‘¼ÃíÖi¾J}†%¹¬³&E/«ç¼Œ—‚3¦É…JߦQˆ`~QtS¿JoÖ}e˜íàÈjÝà¨Ú[!QŸñ'›©*W‚µìó   Æ/¦kbÄ%ÈjX˜9Ü>â:-}\¯³jë|€îŸ³/?æiÕØ-¾|ùÕxÐ'ꉥ÷ëvåýÆÀË\…ÑXž½£åY)ðÕYT«³’&WgFÇóú®¿Ë¢k8šŸ,ˆ&U{+$«h |¿‹¦DvÑŠ-—N&þX?%šÂ…ÑJMÞ`4™:ƒÑ¤Îˆ¦¶¿ÓÑôi_gÐfXÓŠèr%(×Eƒ+ÜÁ¥jo…d\!‹ºàŠBj\ ØqéÔà C<\n\ÞÂà ƒÀ.0¸LÁàR gWäzŽÌ.UÛò©Šw›,¹ìz…]—-ˆ)]}+E«¨Mڅƶ‹+®©À¸xjda'…ÖÒu}#¶È`l( —Ö8#º Åñy 6^i²) IÌÑ×4®[öµ   R‚?šáŠõ-ÄbÄã¹ä<Ö:/_DZÚ\Gð‘ŒÈ$dD°ü­”Ë·}~˜øÁŒ¹_â&F‰‹ø)åob.duQ#­Ò)Vsr1; “ž26¬5VH§Qâ„sYÏ__à)çè>)«ý¸ýÏggС4:±ùP2øÌdв#âòì”ÁçR®¥~™È;žÖñÚ{F™È…Ž’úe¢Qs-õKž9_¯m÷Ëœ®Œn'®SR¿LŒÉ­¤~i×y'®¯Ø¶…N«è˜˜ÊLIý21¦»’úeb¬_Jê—‰F͵Ô/¹Ó¯×¶…NW‘²µ³1Ú&âl"w}ŶÝpæ‰1ÐoõB‚î¼–D›oÅ|¾v…ü‰4úÑ'{‰›‰·o想7Ì<äBõš–IGOùûéj¢×ÞÊÈD ÙjÍ5ÑÜY´v‰—hr-×hãOô  Ÿ«Ù†ÜùÜÞi¦Óøk]K¯µ°²rU°ñš‚sàæÝ¦^LKÀ‘Á›*Ã/Z…3àCþJ\ÇCð¦Êðë…Va~4 ‹|'"bíÏþX¸4ýŠÈ< õ¢µè‹Ý‡Â‰,‡wC èB”(€q‰æúB 'Á?Þ¡;ô)­í^?èHœÉ:üP1{.åZê—väІµ+Ô\KýRe×i›Aæ]¬L”<^6­¤~iÇJl“°9—­¯Ø¶“\̉Ÿì ˦•Ô/+foKD%–’ú¥Ê(®Ó¶“\¬¢`kÕ´‰¶Yí\T®¯Ø¶±ü¡—øád>°Ì³dQ:p"A—€‘øá   逊Mzh>ptÀ@‚žNïOåÛíŒëè½...

If I save the above string with .pdf extention and open it using Adobe pdf reader it comes properly. So how I make the browser to display actual pdf in place of string.

I tried content-Type as application/pdf and content-disposition as attachment as well. Any idea what I am doing wrong the above code works fine in IE.

Krishna
  • 179
  • 3
  • 17

0 Answers0