资源简介
需要从公司文服直接展示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个文件信息
评论
共有 条评论