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


相关推荐

  • Hadoop里的Partitioner

    Hadoop里的Partitioner

    2022年1月19日
    195
  • 量化投资资源

    量化投资资源有些国外的平台、社区、博客如果连接无法打开,那说明可能需要“科学”上网1、量化交易平台国内在线量化平台:BigQuant-你的人工智能量化平台-可以无门槛地使用机器学习、人工智能开发量化策略,基于python,提供策略自动生成器镭矿-基于量化回测平台果仁网-回测量化平台京东量化-算法交易和量化回测平台聚宽-量化回测平台优矿-通联量化实验室Ricequ…

    2022年7月21日
    31
  • push master was rejected by remote(airpush)

    idea中,发布项目到OSChina的Git中,当时按照这样的流程添加Git,然后push,提示:pushtoorigin/masterwarrejected”。大概原因是:初始化项目时,远程仓库我建了README.md文件,而本地仓库与远程仓库尚未进行文件关联,因此需要将两个仓库的文件进行关联后提交。解决方案如下:1.切换到自己项目所在的目录,右键选择GITB…

    2022年4月13日
    209
  • 微信小程序 弹出框_如何设置小程序弹窗公告

    微信小程序 弹出框_如何设置小程序弹窗公告消息提示框 模态弹窗 操作菜单1.消息提示——wx.showToast(OBJECT)//show.js//获取应用实例varapp=getApp()Page({ showok:function(){ wx.showToast({ title:’成功’, icon:’success’, duration:

    2025年7月3日
    3
  • 死链处理的详细步骤[通俗易懂]

    死链处理的详细步骤[通俗易懂]死链处理:查找死链;收集死链;提交处理  一:查找死链  1.工具检测,在360极速浏览器的拓展中心下载安装检查网页死链的插件,可以查找当前网页的死链  2.直接点击页面查找死链  3.网站日志分析查找死链,去空间商后台下载IIS。  4.百度站长平台里面有个链接分析,也可以查看  二:收集死链  1.建一个TXT文

    2022年7月22日
    15
  • Python基本数据类型「建议收藏」

    Python基本数据类型「建议收藏」一、简介Python基本数据类型一般分为:数字、字符串、列表、元组、字典、集合这六种基本数据类型。其中数字又包含整型(整型又包括标准整型、长整型(Python2.7及之前版本有))、浮点型、复数类

    2022年7月5日
    22

发表回复

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

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