pdfjs跨域展示远程pdf文件


需要从公司文服直接展示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.ideaartifacts
     文件         329  2017-12-11 11:22  honso_springboot_test.ideaartifactshonso_springboot_demo_war.xml
     文件        5820  2018-03-26 16:25  honso_springboot_test.ideaartifactshonso_springboot_demo_war_exploded.xml
     文件         561  2017-12-11 11:22  honso_springboot_test.ideacheckstyle-idea.xml
     文件         654  2017-12-11 11:22  honso_springboot_test.ideacompiler.xml
     文件         172  2017-12-11 11:22  honso_springboot_test.ideaencodings.xml
     目录           0  2018-03-26 15:33  honso_springboot_test.ideainspectionProfiles
     文件         262  2018-03-26 15:33  honso_springboot_test.ideainspectionProfilesProject_Default.xml
     目录           0  2018-03-26 16:25  honso_springboot_test.idealibraries
     文件         575  2017-12-11 11:22  honso_springboot_test.idealibrariesMaven__ch_qos_logback_logback_classic_1_1_11.xml
     文件         554  2017-12-11 11:22  honso_springboot_test.idealibrariesMaven__ch_qos_logback_logback_core_1_1_11.xml
     文件         594  2017-12-11 11:22  honso_springboot_test.idealibrariesMaven__commons_beanutils_commons_beanutils_1_9_3.xml
     文件         543  2017-12-11 11:22  honso_springboot_test.idealibrariesMaven__commons_codec_commons_codec_1_10.xml
     文件         616  2017-12-11 11:22  honso_springboot_test.idealibrariesMaven__commons_collections_commons_collections_3_2_2.xml
     文件         525  2017-12-11 11:22  honso_springboot_test.idealibrariesMaven__commons_dbcp_commons_dbcp_1_4.xml
     文件         503  2017-12-11 11:22  honso_springboot_test.idealibrariesMaven__commons_io_commons_io_2_6.xml
     文件         525  2017-12-11 11:22  honso_springboot_test.idealibrariesMaven__commons_pool_commons_pool_1_6.xml
     文件         514  2017-12-11 11:22  honso_springboot_test.idealibrariesMaven__com_alibaba_fastjson_1_2_20.xml
     文件         522  2017-12-11 11:22  honso_springboot_test.idealibrariesMaven__com_fasterxml_classmate_1_3_3.xml
     文件         644  2017-12-11 11:22  honso_springboot_test.idealibrariesMaven__com_fasterxml_jackson_core_jackson_annotations_2_8_0.xml
     文件         595  2017-12-11 11:22  honso_springboot_test.idealibrariesMaven__com_fasterxml_jackson_core_jackson_core_2_8_8.xml
     文件         623  2017-12-11 11:22  honso_springboot_test.idealibrariesMaven__com_fasterxml_jackson_core_jackson_databind_2_8_8.xml
     文件         511  2017-12-11 11:22  honso_springboot_test.idealibrariesMaven__com_itextpdf_itextpdf_5_5_7.xml
     文件         538  2017-12-11 11:22  honso_springboot_test.idealibrariesMaven__com_itextpdf_tool_xmlworker_5_5_7.xml
     文件         546  2017-12-11 11:22  honso_springboot_test.idealibrariesMaven__com_jayway_jsonpath_json_path_2_2_0.xml
     文件         700  2017-12-11 11:22  honso_springboot_test.idealibrariesMaven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml
     文件         593  2017-12-11 11:22  honso_springboot_test.idealibrariesMaven__it_sauronsoftware_jave_sauronsoftware_1_0_2.xml
     文件         611  2017-12-11 11:22  honso_springboot_test.idealibrariesMaven__javax_validation_validation_api_1_1_0_Final.xml
............此处省略1429个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)