打印PDF文件生成压缩包上传至oss

打印PDF文件生成压缩包上传至oss
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try{
	ZipOutputStream zip;
	ByteArrayInputStream input;
	Document doc;
	List<String,byte[]> maps = new ArrayList<>();
	byte[] data;
		try{
			for(Long id:ids){
			doc = new Document(PageSize.A4.rotate(),5,5,180,15);
			PdfWriter.getInstance(doc,bos);
			doc.open();
			//生成PDF代码 使用itext的pdfpTable
			//generatePdf();
			doc.close();
			map = new LinkHashMap<>();
			data = bos.toByteArray();
			map.put(user.getName(),data);
			map.put("code",user.getCode().getBytes());
			maps.add(map);
			}
		}catch(Exception e){
		e.printStackTrace();
		}finally{
		zip = new ZipOutputStream(bos);
		for(int i=0;i<maps.size();i++){
		map=maps.get(i);
		String name = map.keySet().iterator().next();
		input = new ByteArrayInputStream(map.get(name));
		byte[] codeByte = map.get("code");
		String code = new String(codeByte);
		zip.putNextEntry(new ZipEntry(name+code+".pdf"));
		int temp=0;
		while((temp=input.read()) != -1){
			zip.write(temp);
		}
		input.close();
		}
		zip.flush();
		zip.close();
		bos.close();
		//上传至oss返回地址 在上传oss之前必须关闭流
		uploadToOSS(new ByteArrayInputStream(bos).toByteArray()),""," oss address");
		}
}

上传Zip至oss

String prefixKey = fileAdress;
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String name = fileName+user.getName()+sdf.format(new DSate());
OSS oss = new OSSClientBuilder().build(endPoint,accessKeyId,accessKeySecret);
boolean exist = oss.doesObjectExist(bucketName,prefixKey);
if (exist) {
  oss.deleteObject(bucketName, prefixKey);
 }
Date ex = new Date(System.currentTimeMillis()+Long.valueOf("1800000"));
Url url = oss.generatePresignedUrl(bucketName,prefixKey,ex);
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("application/zip");
try{
oss.putObject(new PutObjectRequest(bucketName,prefixKey,inputStream,metaData));
}finally{
oss.shutdown();
}
return url.toString();

可扩展为当选中单条记录直接打印为PDF格式,需要判断再设置metadata.setContentType(“application/pdf”),当选中多条记录把多个PDF文件打成Zip,然后再上传至oss。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值