資源簡介
需要從公司文服直接展示pdf,折騰了大半天,網上查了各種資料,都比較坑,自己看官方demo寫了一個springboot的demo,下載后修改pdf的地址可以直接運行,完美實現pdf跨域顯示

代碼片段和文件信息
package?com.honso.files.controller;
import?lombok.extern.slf4j.Slf4j;
import?org.springframework.stereotype.Controller;
import?org.springframework.web.bind.annotation.RequestMapping;
import?org.springframework.web.bind.annotation.RequestMethod;
import?org.springframework.web.bind.annotation.ResponseBody;
import?sun.misc.base64Encoder;
import?javax.servlet.http.HttpServletRequest;
import?javax.servlet.http.HttpServletResponse;
import?java.io.BufferedInputStream;
import?java.io.BufferedOutputStream;
import?java.io.ByteArrayOutputStream;
import?java.io.IOException;
import?java.io.InputStream;
import?java.net.HttpURLConnection;
import?java.net.URL;
import?java.net.URLConnection;
/**
?*?@Depict?描述?前端跳轉的Controller類
?*?@Author?lizhen
?*/
@Controller
@Slf4j
public?class?StartupController?{
????/**
?????*?跳到默認頁面
?????*/
????@RequestMapping(“/“)
????public?String?index(HttpServletRequest?request?HttpServletResponse?response)?{
????????return?“index“;
????}
????/**
?????*?獲取pdf數據,從遠程端獲取InputStream并轉換成base64字符串
?????*/
????@RequestMapping(value?=?“/getData“?method?=?RequestMethod.GET)
????@ResponseBody
????public?String?getData(String?param)?{
????????InputStream?inputStream?=?null;
????????try?{
????????????String?strUrl?=?param.trim();
????????????URL?url?=?new?URL(strUrl);
????????????//打開請求連接
????????????URLConnection?connection?=?url.openConnection();
????????????HttpURLConnection?httpURLConnection?=?(HttpURLConnection)?connection;
????????????httpURLConnection.setRequestProperty(“User-Agent“?“Mozilla/4.0?(compatible;?MSIE?5.0;?Windows?NT;?DigExt)“);
????????????//?取得輸入流,并使用Reader讀取
????????????inputStream?=?httpURLConnection.getInputStream();
????????}?catch?(IOException?e)?{
????????????log.error(““?e);
????????}
????????return?pdfToBinary(inputStream);
????}
????base64Encoder?encoder?=?new?sun.misc.base64Encoder();
????/**
?????*?將PDF轉換成base64編碼
?????*?1.使用BufferedInputStream和FileInputStream從File指定的文件中讀取內容;
?????*?2.然后建立寫入到ByteArrayOutputStream底層輸出流對象的緩沖輸出流BufferedOutputStream
?????*?3.底層輸出流轉換成字節數組,然后由base64Encoder的對象對流進行編碼
?????*/
????private?String?pdfToBinary(InputStream?fin)?{
????????BufferedInputStream?bin?=?null;
????????ByteArrayOutputStream?baos?=?null;
????????BufferedOutputStream?bout?=?null;
????????try?{
????????????//在文件輸出流上安裝節點流(更大效率讀取)
????????????bin?=?new?BufferedInputStream(fin);
????????????//?創建一個新的?byte?數組輸出流,它具有指定大小的緩沖區容量
????????????baos?=?new?ByteArrayOutputStream();
????????????//創建一個新的緩沖輸出流,以將數據寫入指定的底層輸出流
????????????bout?=?new?BufferedOutputStream(baos);
????????????byte[]?buffer?=?new?byte[1024];
????????????int?len?=?bin.read(buffer);
????????????while?(len?!=?-1)?{
????????????????bout.write(buffer?0?len);
????????????????len?=?bin.read(buffer);
????????????}
????????????//刷新此輸出流并強制寫出所有緩沖的輸出字節,必須這行代碼,否則有可能有問題
????????????bout.flush();
????????????byte[]?bytes?=?baos.toByteArray();
????????????//sun公司的API
????????????ret
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-03-26?16:36??honso_springboot_test\
?????文件??????????15??2017-09-12?14:38??honso_springboot_test\.gitignore
?????目錄???????????0??2018-03-26?16:41??honso_springboot_test\.idea\
?????目錄???????????0??2018-03-26?16:25??honso_springboot_test\.idea\artifacts\
?????文件?????????329??2017-12-11?11:22??honso_springboot_test\.idea\artifacts\honso_springboot_demo_war.xm
?????文件????????5820??2018-03-26?16:25??honso_springboot_test\.idea\artifacts\honso_springboot_demo_war_exploded.xm
?????文件?????????561??2017-12-11?11:22??honso_springboot_test\.idea\checkst
?????文件?????????654??2017-12-11?11:22??honso_springboot_test\.idea\compiler.xm
?????文件?????????172??2017-12-11?11:22??honso_springboot_test\.idea\encodings.xm
?????目錄???????????0??2018-03-26?15:33??honso_springboot_test\.idea\inspectionProfiles\
?????文件?????????262??2018-03-26?15:33??honso_springboot_test\.idea\inspectionProfiles\Project_Default.xm
?????目錄???????????0??2018-03-26?16:25??honso_springboot_test\.idea\libraries\
?????文件?????????575??2017-12-11?11:22??honso_springboot_test\.idea\libraries\Maven__ch_qos_logback_logback_classic_1_1_11.xm
?????文件?????????554??2017-12-11?11:22??honso_springboot_test\.idea\libraries\Maven__ch_qos_logback_logback_core_1_1_11.xm
?????文件?????????594??2017-12-11?11:22??honso_springboot_test\.idea\libraries\Maven__commons_beanutils_commons_beanutils_1_9_3.xm
?????文件?????????543??2017-12-11?11:22??honso_springboot_test\.idea\libraries\Maven__commons_codec_commons_codec_1_10.xm
?????文件?????????616??2017-12-11?11:22??honso_springboot_test\.idea\libraries\Maven__commons_collections_commons_collections_3_2_2.xm
?????文件?????????525??2017-12-11?11:22??honso_springboot_test\.idea\libraries\Maven__commons_dbcp_commons_dbcp_1_4.xm
?????文件?????????503??2017-12-11?11:22??honso_springboot_test\.idea\libraries\Maven__commons_io_commons_io_2_6.xm
?????文件?????????525??2017-12-11?11:22??honso_springboot_test\.idea\libraries\Maven__commons_pool_commons_pool_1_6.xm
?????文件?????????514??2017-12-11?11:22??honso_springboot_test\.idea\libraries\Maven__com_alibaba_fastjson_1_2_20.xm
?????文件?????????522??2017-12-11?11:22??honso_springboot_test\.idea\libraries\Maven__com_fasterxm
?????文件?????????644??2017-12-11?11:22??honso_springboot_test\.idea\libraries\Maven__com_fasterxm
?????文件?????????595??2017-12-11?11:22??honso_springboot_test\.idea\libraries\Maven__com_fasterxm
?????文件?????????623??2017-12-11?11:22??honso_springboot_test\.idea\libraries\Maven__com_fasterxm
?????文件?????????511??2017-12-11?11:22??honso_springboot_test\.idea\libraries\Maven__com_itextpdf_itextpdf_5_5_7.xm
?????文件?????????538??2017-12-11?11:22??honso_springboot_test\.idea\libraries\Maven__com_itextpdf_tool_xm
?????文件?????????546??2017-12-11?11:22??honso_springboot_test\.idea\libraries\Maven__com_jayway_jsonpath_json_path_2_2_0.xm
?????文件?????????700??2017-12-11?11:22??honso_springboot_test\.idea\libraries\Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xm
?????文件?????????593??2017-12-11?11:22??honso_springboot_test\.idea\libraries\Maven__it_sauronsoftware_jave_sauronsoftware_1_0_2.xm
?????文件?????????611??2017-12-11?11:22??honso_springboot_test\.idea\libraries\Maven__javax_validation_validation_api_1_1_0_Final.xm
............此處省略1429個文件信息
評論
共有 條評論