• 大小: 6.3MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-11-15
  • 语言: 其他
  • 标签:

资源简介

需要从公司文服直接展示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.xml
     文件        5820  2018-03-26 16:25  honso_springboot_test\.idea\artifacts\honso_springboot_demo_war_exploded.xml
     文件         561  2017-12-11 11:22  honso_springboot_test\.idea\checkstyle-idea.xml
     文件         654  2017-12-11 11:22  honso_springboot_test\.idea\compiler.xml
     文件         172  2017-12-11 11:22  honso_springboot_test\.idea\encodings.xml
     目录           0  2018-03-26 15:33  honso_springboot_test\.idea\inspectionProfiles\
     文件         262  2018-03-26 15:33  honso_springboot_test\.idea\inspectionProfiles\Project_Default.xml
     目录           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.xml
     文件         554  2017-12-11 11:22  honso_springboot_test\.idea\libraries\Maven__ch_qos_logback_logback_core_1_1_11.xml
     文件         594  2017-12-11 11:22  honso_springboot_test\.idea\libraries\Maven__commons_beanutils_commons_beanutils_1_9_3.xml
     文件         543  2017-12-11 11:22  honso_springboot_test\.idea\libraries\Maven__commons_codec_commons_codec_1_10.xml
     文件         616  2017-12-11 11:22  honso_springboot_test\.idea\libraries\Maven__commons_collections_commons_collections_3_2_2.xml
     文件         525  2017-12-11 11:22  honso_springboot_test\.idea\libraries\Maven__commons_dbcp_commons_dbcp_1_4.xml
     文件         503  2017-12-11 11:22  honso_springboot_test\.idea\libraries\Maven__commons_io_commons_io_2_6.xml
     文件         525  2017-12-11 11:22  honso_springboot_test\.idea\libraries\Maven__commons_pool_commons_pool_1_6.xml
     文件         514  2017-12-11 11:22  honso_springboot_test\.idea\libraries\Maven__com_alibaba_fastjson_1_2_20.xml
     文件         522  2017-12-11 11:22  honso_springboot_test\.idea\libraries\Maven__com_fasterxml_classmate_1_3_3.xml
     文件         644  2017-12-11 11:22  honso_springboot_test\.idea\libraries\Maven__com_fasterxml_jackson_core_jackson_annotations_2_8_0.xml
     文件         595  2017-12-11 11:22  honso_springboot_test\.idea\libraries\Maven__com_fasterxml_jackson_core_jackson_core_2_8_8.xml
     文件         623  2017-12-11 11:22  honso_springboot_test\.idea\libraries\Maven__com_fasterxml_jackson_core_jackson_databind_2_8_8.xml
     文件         511  2017-12-11 11:22  honso_springboot_test\.idea\libraries\Maven__com_itextpdf_itextpdf_5_5_7.xml
     文件         538  2017-12-11 11:22  honso_springboot_test\.idea\libraries\Maven__com_itextpdf_tool_xmlworker_5_5_7.xml
     文件         546  2017-12-11 11:22  honso_springboot_test\.idea\libraries\Maven__com_jayway_jsonpath_json_path_2_2_0.xml
     文件         700  2017-12-11 11:22  honso_springboot_test\.idea\libraries\Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml
     文件         593  2017-12-11 11:22  honso_springboot_test\.idea\libraries\Maven__it_sauronsoftware_jave_sauronsoftware_1_0_2.xml
     文件         611  2017-12-11 11:22  honso_springboot_test\.idea\libraries\Maven__javax_validation_validation_api_1_1_0_Final.xml
............此处省略1429个文件信息

评论

共有 条评论

相关资源