java 图片base64 转 pdf

java 图片base64 转 pdf思路 base64 gt multipartFil gt pdfbase64 gt multipartFil 将图片 base64 gt MultipartFil parambase64 return publicstatic Stringbase64 try String baseStr base64 spli

思路:base64 -> multipartFile – > pdf

base64 -> multipartFile

/ * 将 图片base64 - > MultipartFile * @param base64 * @return */ public static MultipartFile base64MultipartFile(String base64) { 
    try { 
    String[] baseStr = base64.split(","); BASE64Decoder base64Decoder = new BASE64Decoder(); byte[] b; b = base64Decoder.decodeBuffer(baseStr[1]); for (int i = 0; i < b.length; ++i) { 
    if (b[i] < 0) { 
    b[i] += 256; } } return new BASE64DecodedMultipartFile(b, baseStr[0]); } catch (Exception e) { 
    e.printStackTrace(); return null; } } 

multipartFile – > pdf

/ * 将图片转换为PDF文件 * * @param file SpringMVC获取的图片文件 * @return PDF文件 * @throws IOException IO异常 * @throws DocumentException PDF文档异常 */ private static File generatePdfFile(MultipartFile file) throws IOException, DocumentException { 
    String fileName = file.getOriginalFilename(); String pdfFileName; if (fileName != null) { 
    pdfFileName = fileName.substring(0, fileName.lastIndexOf(".")) + ".pdf"; } else { 
    return null; } Document doc = new Document(PageSize.A4, 100, 100, 20, 30); PdfWriter.getInstance(doc, new FileOutputStream(pdfFileName)); doc.open(); doc.newPage(); Image image = Image.getInstance(file.getBytes()); float height = image.getHeight(); float width = image.getWidth(); int percent = getPercent(height, width); image.setAlignment(Image.MIDDLE); image.scalePercent(percent); doc.add(image); doc.close(); return new File(pdfFileName); } / * 等比压缩,获取压缩百分比 * @param height 图片的高度 * @param weight 图片的宽度 * @return 压缩百分比 */ private static int getPercent(float height, float weight) { 
    float percent; if (height > weight) { 
    percent = PageSize.A4.getHeight() / height * 100; } else { 
    percent = PageSize.A4.getWidth() / weight * 100; } // -5 多缩放一点 不影响内容 percent -= 5; return Math.round(percent); } 

如果还需要转成multipartFile方便调用api上传的话

pdf file – > multipartFile

FileInputStream input = new FileInputStream(file); MultipartFile multipartFilePDF = new MockMultipartFile("file", file.getName(), "text/plain", IOUtils.toByteArray(input)); 

pom 依赖 itextpdf

 <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.10</version> </dependency> 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233742.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 腾讯云SSL证书_nginx反向代理配置证书

    腾讯云SSL证书_nginx反向代理配置证书申请SSL证书下载证书下载完证书之后解压,因为腾讯云选择的是nginx服务器,所以我们只需要下载nginx并解压。配置Nginx服务器我们需要把刚才解压的nginx证书文件拷贝到nginx的conf路径下面—也就是服务器中/etc/nginx/conf路径下面的。ssl_certificate1_bundle.crt;//如果文件不在conf路径下,就需要写绝对路径ssl_certificate_key1_mykey.key;重启nginx访问systemctlresta

    2025年10月10日
    7
  • intelli idea2021激活码【在线注册码/序列号/破解码】

    intelli idea2021激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    50
  • MATLAB调用Origin绘图官方案例学习

    MATLAB调用Origin绘图官方案例学习这里写目录标题作为一个化工狗,日常处理实验数据绘图用的都是origin,origin自带的模板和调色板比matlab好看太多(origin9以上,古老版本的origin配色也很丑)。平常都是把数据导出后转至origin处理,偶然看到origin存在COM接口,可以让matlab调用,于是试用了一下。这里把首次使用的全过程po上来,欢迎学习交流~软件版本:MatlabR2019b,Origin2…

    2022年5月6日
    52
  • clion 激活码 下载(最新序列号破解)

    clion 激活码 下载(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    48
  • 《SiamFC++:Towards Robust and Accurate Visual Tracking with Target Estimation Guidelines》论文笔记

    《SiamFC++:Towards Robust and Accurate Visual Tracking with Target Estimation Guidelines》论文笔记参考代码:video_analyst1.概述导读:这篇文章指出之前的一些跟踪算法没有深入讨论针对跟踪任务的实质,很多时候只是在某些点上进行突破,因而最后方法的性能总是有局限性的。对此文章深入分析了跟踪网络的特性,因而对跟踪网络的设计提出了4点建议:G1(目标位置估计和目标判别需要接耦,分别具有各自的分支)/G2(目标判别置信度不能与实际相模糊)/G3(不能依赖数据分布等先验知识,否则导致泛化性鲁棒性不强)/G4(目标位置的估计应该准确)。正是基于上的4点设计指导,文章设计了SiamFC++网络,在5

    2022年9月27日
    3
  • 【翻译】.NET 5中的性能改进

    【翻译】.NET 5中的性能改进在.NETCore之前的版本中,其实已经在博客中介绍了在该版本中发现的重大性能改进。从.NETCore2.0到.NETCore2.1到.NETCore3.0的每一篇文章,发…

    2022年7月20日
    12

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号