java读取pdf输出的两种方式

@RequestMapping("PDF/{pdfFile}")
    public void getPdf(@PathVariable("pdfFile")String pdfFile,HttpServletResponse response){
        String pdfFile1 = getFileSrcByJsonFile();
        downloadPDF(response,pdfFile1);
    }

    @RequestMapping("PDF1/{pdfFile}")
    public void getPdf1(@PathVariable("pdfFile")String pdfFile,HttpServletResponse response){
        String pdfFile1 = getFileSrcByJsonFile();
        //遍历删除,除去损坏,文件不存在,抛异常就是空白页
            //创建文档容器
        com.lowagie.text.Document document = new com.lowagie.text.Document(PageSize.A4,0,0,0,0);
        PdfCopy copy = null;
        try {
            PdfReader reader = new PdfReader(pdfFile1);
            document = new Document(new com.lowagie.text.pdf.PdfReader(reader).getPageSize(1));
            copy = new PdfCopy(document,response.getOutputStream());
            document.open();
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            //判断是否加水印
            //复制合并pdf
            copyToPdf(null,document, copy, reader);
            try {
                bos.flush();
                bos.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(null != copy){
                copy.close();
            }
            if(null != document){
                document.close();
            }
        }
    }
    
    private void copyToPdf(Integer pageNum,Document document, PdfCopy copy, PdfReader reader) throws IOException, BadPdfFormatException {
        int n = reader.getNumberOfPages();
        for (int j = 1; j <= n; j++) {
            document.newPage();
            PdfImportedPage page = null;
            if(pageNum == null) {
                page = copy.getImportedPage(reader, j);
            }else{
                if(pageNum == j){
                    page = copy.getImportedPage(reader, j);
                }
            }
            if(null != page) {
                copy.addPage(page);
            }
        }
        reader.close();
    }
    private String getFileSrcByJsonFile() {
        String fileSrc = "D:/dataConfig.json";
        String jsonStr = readJsonFile(fileSrc);
        JSONObject jo = JSONObject.parseObject(new String(jsonStr));
        return (String) jo.get("fileSrc");
    }


  private void downloadPDF(HttpServletResponse res, String fileSrc) {
      try {
          File file = new File(fileSrc);
          BufferedInputStream bis = null;
          OutputStream os = null;
          FileInputStream fileInputStream = null;
          res.setCharacterEncoding("utf-8");
          res.setContentType("application/pdf"); // word格式
          try {
              fileInputStream = new FileInputStream(file);
              byte[] buff = new byte[1024];
              bis = new BufferedInputStream(fileInputStream);
              os = res.getOutputStream();

              int i = bis.read(buff);
              while (i != -1) {
                  os.write(buff, 0, buff.length);
                  i = bis.read(buff);
                  os.flush();
              }
              os.flush();
              os.close();
          } catch (IOException e) {
              e.printStackTrace();
          } finally {
              if (bis != null) {
                  try {
                      bis.close();
                      fileInputStream.close();
                  } catch (IOException e) {
                      e.printStackTrace();
                  }
              }
          }
      } catch (Exception e) {
      }
  }
    //读取json文件
    private static String readJsonFile(String fileName) {
        String jsonStr = "";
        try {
            File jsonFile = new File(fileName);
            FileReader fileReader = new FileReader(jsonFile);
            Reader reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8");
            int ch = 0;
            StringBuffer sb = new StringBuffer();
            while ((ch = reader.read()) != -1) {
                sb.append((char) ch);
            }
            fileReader.close();
            reader.close();
            jsonStr = sb.toString();
            return jsonStr;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

 dataConfig.json:

{
  "fileSrc": "D:\\docusPdfFile\\pdfs\\EMR\\1282371\\1483848190236411602.pdf"
}

依赖:

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.200</version>
        </dependency>
        <!--pdf生成工具类-->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.4.2</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf.tool</groupId>
            <artifactId>xmlworker</artifactId>
            <version>5.4.1</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.xhtmlrenderer</groupId>
            <artifactId>flying-saucer-pdf</artifactId>
            <version>9.0.3</version>
        </dependency>

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值