springboot 富文本 导出word 、pdf


1.导出word

添加依赖


      org.apache.poi
       poi
       3.14

实现层代码

private void downloadWord(HttpServletResponse response, Resource resource) {
        String title = resource.getTitle();
        String text = resource.getContent();
        try {
            //word内容
            String content="" +
                    "

" + title + "

" + text + ""; byte b[] = content.getBytes("GBK"); //这里是必须要设置编码的,不然导出中文就会乱码。 ByteArrayInputStream bais = new ByteArrayInputStream(b);//将字节数组包装到流中 /* * 关键地方 * 生成word格式 */ POIFSFileSystem poifs = new POIFSFileSystem(); DirectoryEntry directory = poifs.getRoot(); DocumentEntry documentEntry = directory.createDocument("WordDocument", bais); //输出文件 // request.setCharacterEncoding("utf-8"); response.setContentType("application/msword");//导出word格式 response.addHeader("Content-Disposition", "attachment;filename=" + new String(title.getBytes("GB2312"),"iso8859-1") + ".doc"); ServletOutputStream ostream = response.getOutputStream(); poifs.writeFilesystem(ostream); bais.close(); ostream.close(); poifs.close(); }catch(Exception e){ e.printStackTrace(); } }

2.导出pdf

添加依赖


      com.itextpdf
      itextpdf
            5.5.11
 

        
            com.itextpdf
            itext-asian
            5.2.0
        

        
            com.itextpdf.tool
            xmlworker
            5.5.8
        

压缩并导出实现代码

private void downloadPdf(HttpServletResponse response, Resource resource) {
        String content = resource.getContent();
        content = MyUtil.handleConvertPdfContent(content);
        String rootDir = System.getProperty("user.dir")+"/";
        String pdfDir = rootDir+"temp/pdf/";
        String pdfFileName = resource.getTitle()+".pdf";
        try {
            String path = pdfDir + pdfFileName;
            File pdfFileDir = new File(pdfDir);
            if (!pdfFileDir.exists()) {
                pdfFileDir.mkdirs();
            }

            FileOutputStream pdfOut = new FileOutputStream(path);

            // 第一步 创建文档实例 文章pdf导出+压缩包下载
            Document document = new Document();
            // 第二步 获取PdfWriter实例 写入文件到目录 pdfDir + responseFileName
            PdfWriter writer = PdfWriter.getInstance(document, pdfOut);
            // 第三步 打开文档
            document.open();
            //获取 XMLWorkerHelper实例
            XMLWorkerHelper work = XMLWorkerHelper.getInstance();
            //解析html文件,创建pdf文档
            work.parseXHtml(writer, document, new ByteArrayInputStream(content.getBytes()));
            // 第五部 操作完成后必须执行文档关闭操作。
            document.close();
            writer.close();
            pdfOut.close();

            // 压缩pdf文件
            String zipDir = rootDir + "temp/zip/";
            String zipPath = zipDir + resource.getTitle() + ".zip";
            File zipFile = new File(zipPath);
            File pdfFile1 = new File(path);
            ZipUtil.zip(zipFile, false, pdfFile1);

            // 将zip file写入response流
            //设置response内容
            String zipFileName = resource.getTitle() + ".zip";
            // 这里中文名字导致了下载报错 暂不解决
            String responseFileName = new String("download.zip".getBytes(), "utf-8");
            response.reset(); // 非常重要
            ServletOutputStream responseOutputStream = response.getOutputStream();
            response.setContentType("application/octet-stream; charset=utf-8");
            response.setHeader("Content-Disposition", "attachment; filename=" + responseFileName);
            InputStream in = new FileInputStream(zipPath);
            int len = 0;
            byte[] buffer = new byte[1024];
            while ((len = in.read(buffer)) > 0) {
                responseOutputStream.write(buffer, 0, len);
            }
            in.close();
            responseOutputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            FileUtil.delAllFile(rootDir + "/temp");
        }
    }

 只做保存

源地址:https://www.cnblogs.com/guanxiaohe/p/14596592.html