Java处理PDF文件,转成二进制文件流存入数据库并在前端实现下载

Java处理PDF文件,转成二进制文件流存入数据库并在前端实现下载



前端下载

function down(id, name) f
var xhr a new XMLHttpRequest();
xhr . open( ' post ' , "front/yysd/ download?xh=" + id, true);
xhr . setRequestHeader( "Content -Type" , " application/x-www-from-urlencoded; charset=utf-8");
xhr. responseType = "blob";
xhr onload . function () {
if(this. status === 200) (
var blob = this . response;
if (blob.type == "text/html") {
tip("错误");
return false;
}
var filrName = name + '.pdf' ;
if (window. navigator .msSave0r0penBlob) {
navigator -msSaveBlob(blob, filrName);
}else {
var link = document.createElenent('a');
1ink.href = window.URL.create0bjectURL(blob);
link. download = filrName;
link. click();
$(link) remove();
sindoN.URL.revokeObjectURL(link ,href);
}
}else {
fiframe.tip("请求错误!");
	}
};
xhr. send();
}

后台下载


@RequestMapping(value = "/download" , method = RequestMethod.POST)
@ResponseBody()
public void downloadpdffile(String xh, HttpServletResponse response) {
XxfbJcjb xxfbJcjb = xxfbJcjbService .findXxfbJcjb(xh);
try{
response. addHeader Access-Control- Allow-Origin", "*");
response. addHeader( "Access-Control-Allow-Headers" , "Origin, X-Requested-With, Content - type , Accept");
response. addHeader("Access-Control- Allow-Methods", "GET, POST, PUT, DELETE");
response.reset();
OutputStream outputStream = new BufferingOutputStream(response getoutputStream());
response setContentType(" application/octet- stream");
response. setHeader ("Content -Disposition","attachment;filename="+xxfbJcjb.getJbbt() + ".pdf");
outputStream.write(xxfbJcjb. getJbnr(), 0, xxfbJcjb.getJbnr().length);
outputStream. close();
catch (Exception e){
e. printStackTrace();
	}
}

pdf文件转成二进制流存入数据库

public void pdf() throws Exception{
try {
XxfbJcjb xxfbJcjb = new XxfbJcjb();

File file = new File("C:\\Users\Administrator\Desktopl\pdf\\系统使用说明.pdf");
xfbJcjb.setJbnr(getBytesFromFile(file));
//getBytesFromFile(file)
xxfbJcjbMapper . insertSelective(xxfbJcjb);
} catch (Exception e) {
LogUtil error(getClass(), ”操作出错",e);
	}
}

public static byte[] getBytesFromFile(File f ){
if (f = nul1){
return nul1;
}

try{
FileInputStream stream = new FileInputStream(f);
ByteArrayutputstreom out = new
ByteArrayOutputstrean();
byte[] b = nen byte[1000];
int n;
while ((n = stream.read(b) != -1){
out.write(b,0,n);
}
stream.close();
out.close;
return out.toByteArray();
}catch(IOException e){

}
return null ;
	}
}

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你可以通过以下步骤实现: 1. 在后台接收到pdf二进制文件后,将其保存为byte[]数组。 2. 将byte[]数组转换为InputStream对象。 3. 使用PdfBox库(或其他pdf处理库)将InputStream对象转换为PDF文档对象(PDDocument)。 4. 根据需要,对PDF文档进行修改(例如添加水印、修改内容等)。 5. 将修改后的PDF文档保存到本地文件系统。 下面是一个简单的Java代码示例,演示如何将接收到的pdf二进制文件保存到本地: ```java import org.apache.pdfbox.pdmodel.PDDocument; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; public class PdfFileHandler { public void savePdf(byte[] pdfBytes, String savePath) throws IOException { // 将byte[]数组转换为InputStream对象 InputStream inputStream = new ByteArrayInputStream(pdfBytes); // 使用PdfBox库将InputStream对象转换为PDDocument对象 PDDocument document = PDDocument.load(inputStream); // 将PDDocument对象保存为本地文件 document.save(new File(savePath)); // 关闭PDDocument对象 document.close(); } public static void main(String[] args) throws IOException { byte[] pdfBytes = // 从请求中获取pdf二进制文件 String savePath = "C:/temp/test.pdf"; // 保存路径 PdfFileHandler handler = new PdfFileHandler(); handler.savePdf(pdfBytes, savePath); } } ``` 请注意,本示例仅演示了最基本的保存操作。在实际使用中,您可能需要根据具体的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值