public static String PDFToBase64(File file) { BASE64Encoder encoder = new BASE64Encoder(); FileInputStream fin = null; BufferedInputStream bin = null; ByteArrayOutputStream baos = null; BufferedOutputStream bout = null; try { fin = new FileInputStream(file); bin = new BufferedInputStream(fin); 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(); return encoder.encodeBuffer(bytes).trim(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { // closeISStream(fin); closeISStream(bin); closeOSStream(bout); } return null; } public static void closeISStream(InputStream is) { if (is != null) { try { is.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void closeOSStream(OutputStream os) { if (os != null) { try { os.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void base64StringToPdf(String base64Content, String filePath) { BASE64Decoder decoder = new BASE64Decoder(); BufferedInputStream bis = null; FileOutputStream fos = null; BufferedOutputStream bos = null; try { byte[] bytes = decoder.decodeBuffer(base64Content);// base64編碼內容轉換為位元組陣列 ByteArrayInputStream byteInputStream = new ByteArrayInputStream(bytes); bis = new BufferedInputStream(byteInputStream); File file = new File(filePath); File path = file.getParentFile(); if (!path.exists()) { path.mkdirs(); } fos = new FileOutputStream(file); bos = new BufferedOutputStream(fos); byte[] buffer = new byte[1024]; int length = bis.read(buffer); while (length != -1) { bos.write(buffer, 0, length); length = bis.read(buffer); } } catch (Exception e) { e.printStackTrace(); } finally { // closeStream(bis, fos, bos); closeISStream(bis); closeOSStream(bos); } }