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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 3分钟理解np.meshgrid()[通俗易懂]

    3分钟理解np.meshgrid()[通俗易懂]欢迎光临我的个人主页官方解释:np.meshgrid(*xi,**kwargs)Returncoordinatematricesfromcoordinatevectors.从坐标向量中返回坐标矩阵不够直观直观的例子二维坐标系中,X轴可以取三个值1,2,3,Y轴可以取三个值7,8,请问可以获得多少个点的坐标?显而易见是6个:(1,7)(2,7)(3,7)(1,8…

    2022年4月28日
    49
  • 二小姐对群环域的理解

    二小姐对群环域的理解从本质上来看,群=非空集合+二元运算,群的定义主要包括四个方面:封闭性:二元运算的定义就可以满足这个性质 结合律:可以确保多个元素运算时得到唯一的结果,不受运算先后的影响,从而有(或na)的表达式 单位元:唯一 逆元:任意元素均有且唯一特殊的群为循环群;群举例:Z(加法);Zn(加法)明确了群的定义后,我们接着了解群的各类特殊子群的定义和性质:子群H=群G的子集合+二元运算…

    2022年6月21日
    19
  • 一篇文章让你了解Hive和HBase的区别

    相信做大数据开发的朋友对hive和HBase一定不会陌生。HBASE想了解更多大数据相关知识可以点击“了解更多”Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。HBase是Hadoop的数据库,一个分布式、可扩展、大数据的存储。单个的从字面意思上或许很难看出二者…

    2022年4月9日
    54
  • 百度地图API开发

    百度地图API开发1,申请密钥:自己的秘钥2,初始化头文件3,创建一个盛放地图的div:4,初始化地图:5,丰富地图功能:*添加地图控件:map2.addControl(newBMap.Navigatio

    2022年7月1日
    26
  • 用c语言编写贪吃蛇要会什么_c语言贪吃蛇原理

    用c语言编写贪吃蛇要会什么_c语言贪吃蛇原理贪吃蛇(单人版):实现过程:本人先来介绍一个函数——bioskey函数:intbioskey(intcmd)参数(cmd)基本功能0返回下一个从键盘键入的值(若不键入任何值,则将等下一个键入)它返回一个16位的二进制数,包括两个不同的值:1.当按下一个普通键时,它的低8位数存放该字符的ASCII码,高8位存放该键的扫描码;2.对于特殊键(如方向键、F1~F12等等),低8位为0,高8…

    2022年9月4日
    2
  • 二叉树层序遍历(C语言)[通俗易懂]

    二叉树层序遍历(C语言)[通俗易懂]二叉树的层序遍历即从上到下,在每一层从左到右依次打印数据。如下:层序遍历结果:ABCDEFG基本思路即将根节点入队后,之后每次都将队首元素出队,打印队首元素数据,并将队首元素左右子树入队,一直重复上述过程。自然,本题还可以用数组来实现。代码:#include<stdio.h>#include<stdlib.h>#defineQueueMax100typedefstructNode{chardata;structNode*

    2022年5月22日
    42

发表回复

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

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