前言
当今时代,PDF 文件已经成为了常用的文档格式。然而,在某些情况下,我们可能需要将 PDF 文件转换为图片格式,以便更方便地分享和使用。这时,我们可以使用 Java 编程语言来实现这个功能。Java 提供了许多库和工具,可以帮助我们将 PDF 文件转换为图片格式并进行后续处理。
引入依赖
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.24</version>
</dependency>
转换方法
/**
* PDF转图片
* @param inputStream:文件输入流
* @return
*/
public static List<String> pdfToImageBuInput(InputStream inputStream){
List<String> imageList = new ArrayList<>();
PDDocument document = null;
try {
// 加载PDF文档
document = PDDocument.load(inputStream);
// 创建PDFRenderer对象
PDFRenderer renderer = new PDFRenderer(document);
List<BufferedImage> images = new ArrayList<>();
for (int i = 0; i < document.getNumberOfPages(); i++) {
/**
* 《 72 》 此处设置得越大像素越高,生成得时候也会越久
* DPI 的设置一般根据具体的需求和使用场景来决定。DPI 越高,生成的图片分辨率越大,图像质量也越高,
* 但同时文件大小也会变得更大。通常情况下,如果需要对生成的图片进行放大、裁剪等操作,建议将 DPI 设置得较高,
* 以保证图像质量和细节的清晰度;如果只是需要简单地浏览或共享图片,可以适当降低 DPI 以减小文件大小。在实际开发中,
* 可以根据不同的应用场景进行调整。一般来说,72 DPI 是一个比较常见的默认值,可以作为参考。
*/
BufferedImage image = renderer.renderImageWithDPI(i, 72, ImageType.RGB);
images.add(image);
}
for (int i = 0; i < images.size(); i++) {
String name = System.currentTimeMillis() + i + 1 + ".png"; // 时间戳生成名称并+1
String imagesPath = RuoYiConfig.getProfileImages() + "/" + name;
// 保存图片到文件
ImageIO.write(images.get(i), "PNG", new File(imagesPath));
String webPath = FileUploadUtils.getPathFileName(RuoYiConfig.getProfileImages(), name);
imageList.add(webPath);
}
return imageList;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
// 关闭文档
try {
if (document != null) {
document.close();
}
if (inputStream != null) {
inputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
测试方法
@PostMapping("/uploadNews")
public AjaxResult uploadNews(MultipartFile file)
{
try
{
//返回文件路径地址结果集
List<String> list = PdfToImageUtils.pdfToImageBuInput(file.getInputStream());
AjaxResult ajax = AjaxResult.success();
ajax.put("list", list);//上传文件名称
return ajax;
}
catch (Exception e)
{
e.printStackTrace();
return AjaxResult.error(e.getMessage());
}
}
测试请求
PDF内容如下
最终结果
原文地址:https://blog.csdn.net/SmallCat0912/article/details/134644407
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_34358.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。