|
|
|
@ -9,11 +9,10 @@ import com.itextpdf.text.pdf.PdfWriter;
|
|
|
|
|
import org.apache.commons.net.ftp.FTPClient;
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
import sun.misc.BASE64Decoder;
|
|
|
|
|
import sun.net.ftp.FtpClient;
|
|
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
|
import java.io.FileOutputStream;
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
import java.io.*;
|
|
|
|
|
import java.time.LocalDate;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -115,5 +114,51 @@ public class PdfUtils {
|
|
|
|
|
return fileName;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 将base64编码转换成PDF
|
|
|
|
|
* @param base64String
|
|
|
|
|
* 1.使用BASE64Decoder对编码的字符串解码成字节数组
|
|
|
|
|
* 2.使用底层输入流ByteArrayInputStream对象从字节数组中获取数据;
|
|
|
|
|
* 3.建立从底层输入流中读取数据的BufferedInputStream缓冲输出流对象;
|
|
|
|
|
* 4.使用BufferedOutputStream和FileOutputSteam输出数据到指定的文件中
|
|
|
|
|
*/
|
|
|
|
|
public static void base64StringToPDF(String base64String, String pdfPath/*File file*/){
|
|
|
|
|
File file = new File(pdfPath);// 将原来参数修改为字符串
|
|
|
|
|
BASE64Decoder decoder = new BASE64Decoder();
|
|
|
|
|
BufferedInputStream bin = null;
|
|
|
|
|
FileOutputStream fout = null;
|
|
|
|
|
BufferedOutputStream bout = null;
|
|
|
|
|
try {
|
|
|
|
|
//将base64编码的字符串解码成字节数组
|
|
|
|
|
byte[] bytes = decoder.decodeBuffer(base64String);
|
|
|
|
|
//创建一个将bytes作为其缓冲区的ByteArrayInputStream对象
|
|
|
|
|
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
|
|
|
|
|
//创建从底层输入流中读取数据的缓冲输入流对象
|
|
|
|
|
bin = new BufferedInputStream(bais);
|
|
|
|
|
//创建到指定文件的输出流
|
|
|
|
|
fout = new FileOutputStream(file);
|
|
|
|
|
//为文件输出流对接缓冲输出流对象
|
|
|
|
|
bout = new BufferedOutputStream(fout);
|
|
|
|
|
|
|
|
|
|
byte[] buffers = new byte[1024];
|
|
|
|
|
int len = bin.read(buffers);
|
|
|
|
|
while(len != -1){
|
|
|
|
|
bout.write(buffers, 0, len);
|
|
|
|
|
len = bin.read(buffers);
|
|
|
|
|
}
|
|
|
|
|
//刷新此输出流并强制写出所有缓冲的输出字节,必须这行代码,否则有可能有问题
|
|
|
|
|
bout.flush();
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
} finally {
|
|
|
|
|
try {
|
|
|
|
|
bout.close();
|
|
|
|
|
fout.close();
|
|
|
|
|
bin.close();
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|