巧借PDF输出实现cpt的PDF预览

我是社区第55902位番薯,欢迎点我头像关注我哦~
先上效果图
效果图.png
测试了 IE11 chrome firefox 都阔以
上核心代码
  1. public class Server extends NoSessionIDService {
  2.        
  3.         @Override
  4.         public String actionOP() {
  5.                 return "pdf";
  6.         }
  7.        
  8.         @Override
  9.         public void process(HttpServletRequest req, HttpServletResponse res, String op) throws Exception {
  10.                 String sid = WebUtils.getHTTPRequestParameter(req, "sid");
  11.                 HttpSession session = req.getSession(true);
  12.                 //将同一个前端的预览请求任务缓存在一起
  13.                 Map<String,ViewTask> vtsk = (Map) session.getAttribute("PDFSID");
  14.                 if( null == vtsk ){
  15.                         vtsk = new HashMap<String,ViewTask>();
  16.                         session.setAttribute("PDFSID",vtsk);
  17.                 }
  18.                 if( StringUtils.isEmpty(sid) ){
  19.                         //获取要预览的模板
  20.                         String cpt = getCptPath(req);
  21.                         //生成计算模板用的参数表
  22.                         Map parameters = getParameters(req);
  23.                         //注册任务,生成sid
  24.                         sid = registerTask( vtsk, cpt,parameters);
  25.                         //得到最终预览的URL
  26.                         String url = getURL(sid);
  27.                         //得到网页的标题
  28.                         String title = getWebTitle(cpt,parameters);
  29.                         //转换成网页输出
  30.                         String html = "<!doctype html><html lang=\"en\"><head><meta charset=\"UTF-8\"><title>"
  31.                                         + title
  32.                                         + "</title></head><body style=\"position: absolute;overflow: hidden;padding: 0;margin: 0;width: 100%;height: 100%;\">"
  33.                                         + "<iframe style=\"width: 100%;height: 100%;position: absolute;border: none;\" src=\""
  34.                                         + url
  35.                                         + "\"></iframe></body></html>";
  36.                         PrintWriter write = res.getWriter();
  37.                         write.print(html);
  38.                         write.flush();
  39.                         write.close();
  40.                         return;
  41.                 }
  42.                 ViewTask tsk = vtsk.get(sid);
  43.                 //初始化pdf页面数据
  44.                 PageSetProvider pages = initOutPages(res,tsk) ;
  45.                 //借助PDF导出输出内容
  46.         PDFExporterProcessor exporter = PDFExporterFactory.getPDFExporter(true);
  47.         OutputStream out = res.getOutputStream();
  48.         exporter.export(out, pages);
  49.         out.flush();
  50.         out.close();
  51.         }
  52. }
复制代码
都配有注释~就不多说了~核心就是转换成pdf输出到前端~

发表于 2018-4-19 18:08:11
师傅好厉害
发表于 2018-4-21 15:22:15
发表于 2018-4-22 09:21:38
大神的新作品,必须点赞支持
发表于 2018-4-26 22:41:14
来自手机
菜鸟报道学习
发表于 2019-6-3 17:36:45
你厉害到让人气愤。。。。。。。。。。。。。。。。
发表于 2019-8-8 10:55:33
这个怎么用啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

6回帖数 1关注人数 9405浏览人数
最后回复于:2019-8-8 10:55

返回顶部 返回列表