java 生成证书图片_java生成自定义证书图片4 - 将pdf转成证书图图片

本文介绍了如何使用Java的PDFBox库将PDF转换为自定义证书图片。通过提供的工具类`PdfConverter`,展示了一个转换示例,包括设置转换页面和图片清晰度的步骤。在实践中,为了平衡程序速度、文件大小和清晰度,将图片的scale参数设置为2。转换后的图片质量较高,但过大,因此需要根据需求调整参数。
摘要由CSDN通过智能技术生成

终于到了生成自定义证书图片的最后一步,pdf转图片我选择使用pdfbox库,以下是工具类:

packagecom.x.certificate.pdf;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.IOException;importjavax.imageio.ImageIO;importorg.apache.pdfbox.pdmodel.PDDocument;importorg.apache.pdfbox.rendering.PDFRenderer;/*** 用于pdf文件的格式转换

*@authorxuhaojin

*@version[版本号, 2020年3月22日]*/

public classPdfConverter {public staticFile toImageUsingPdfbox(String pdfPath, String imagePath, String imageExt) {

File out= null;try (PDDocument document = PDDocument.load(newFile(pdfPath));) {

File imagePathFile= newFile(getPath(imagePath));if (!imagePathFile.exists()) {

imagePathFile.mkdirs();

}

PDFRenderer pdfRender= newPDFRenderer(document);

BufferedImage image= pdfRender.renderImage(0, 2);

out= newFile(imagePath);

ImageIO.write(image, imageExt, out);

document.close();

}catch(Exception e) {

e.printStackTrace();

}returnout;

}public staticString getPath(String pathName) {if (pathName.endsWith("\\") || pathName.endsWith("/")) {returnpathName;

}if (pathName.contains("\\")) {return pathName.substring(0, pathName.lastIndexOf('\\') + 1);

}return pathName.substring(0, pathName.lastIndexOf('/') + 1);

}public static void main(String[] args) throwsIOException {long startTime =System.currentTimeMillis();

String pdfPath= "C:\\Users\\a1579\\Desktop\\custom.pdf";

String imagePath= "C:\\Users\\a1579\\Desktop\\custom.jpg";

toImageUsingPdfbox(pdfPath, imagePath,"jpg");

System.out.println("所用时间:" + (System.currentTimeMillis() - startTime) + "ms");

}

}

其中使用了pdfbox 2.0.15版本,在BufferedImage image = pdfRender.renderImage(0, 2);这句设置了两个关键参数,第一个是要转换pdf的页数,因为我的证书只有一页,所以只设置0就可以了;第二个参数是设置图片的scale(规模,清晰度),单位浮点型float,默认值为1(1=72DPI),值设置的越大越清晰,我们希望生成的图片越清晰越好,但是当我将这个值设置为20时,生成图片用了10秒左右!,jpg图片达到了2点多Mb,比原图还要大,我不得不把清晰度改小一点,即要满足程序速度和文件大小,还要满足清晰度,我最终设置为了2。

最终生成图片效果custom.jpg:

5672b9b9256e996c5b6698ef784924c6.png

这个图片只是为了演示,如果实际使用,还需要调节文字位置(docx模板文本框大小、位置),和每一块的文字大小、字体等内容细节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值