Java写的二维码

//1.合成后的文件
String uploadNewFilePath = getDesktop() + “\” + System.currentTimeMillis() + “.pdf”;
FileOutputStream outputStream = new FileOutputStream(uploadNewFilePath);
// 2、得到PDF文档对象
PDDocument pdDocument = PDDocument.load(new FileInputStream(newFile));
//先看有多少页
int pages = pdDocument.getNumberOfPages();
PdfReader reader = new PdfReader(new FileInputStream(newFile));
PdfStamper stamper = new PdfStamper(reader, outputStream);
//3.获取二维码图片
Image rCCode = this.createRC0deSn(pdFileParam.getQCCodeDesc());
//4.设置要存放的页数
if (pages > 0) {
for (int i = 0; i < pages; i++) {
this.addImagePosition(stamper, rCCode, positionMap, i + 1);
}
}
// else {
// this.addImagePosition(stamper, rCCode, positionMap, 1);
// }
//关闭流 最好放在最后执行
stamper.close();
reader.close();
outputStream.close();
//把文件写到指定位置
File uploadFile = new File(uploadNewFilePath);
backStr = this.uploadFile(uploadFile, pdFileParam.getToken(), servletName);
if (!backStr.contains(ResultCodeEnum.RESULT_SUCCESS.toString())) {
actionResult.setCode(FAIL_CODE);
actionResult.setMsg(backStr);
return actionResult;
}
} catch (IOException | DocumentException e) {
throw new RuntimeException(“二维码添加失败”);
}
actionResult.setData(JSONObject.parseObject(backStr));
actionResult.setCode(SUCCESS_CODE);
actionResult.setMsg(“pdf文件添加二维码成功并且已上传”);

//生成二维码的方法
public Image createRC0deSn(String qCCodeDesc) {
    Image qrCodeImage = null;
    //解决中文乱码
    HashMap<EncodeHintType, Object> hints = new HashMap<>();
    hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
    try {
        //生成的二维码
        BarcodeQRCode barcodeQRCode = new BarcodeQRCode(qCCodeDesc, 100, 100, hints);
        qrCodeImage = barcodeQRCode.getImage();
    } catch (Exception e) {
        throw new RuntimeException("二维码生成失败");
    }
    return qrCodeImage;
}

public void addImagePosition(PdfStamper stamper, Image rCCode, Map<String, Integer> positionMap, int page) {
try {
PdfContentByte over = stamper.getOverContent(page);
over.saveState();
//5.设置图片位置和样式
PdfGState pdfGState = new PdfGState();
pdfGState.setFillOpacity(0.8F); //给图片设置透明度
over.setGState(pdfGState);
rCCode.setAbsolutePosition(positionMap.get(“absoluteX”), positionMap.get(“absoluteY”)); //设置图片位置
rCCode.scaleAbsolute(80, 60); //设置图片大小
over.addImage(rCCode); //将图片添加到pdf文件
over.restoreState();
stamper.setFormFlattening(true);
} catch (DocumentException e) {
throw new RuntimeException(“pdf二维码添加失败”);
}
}

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值