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


相关推荐

  • 酒店管理系统-详细设计说明书

    酒店管理系统-详细设计说明书
    详细设计说明书1引言1.1编写目的
    本文档为**酒店管理系统详细设计说明书,为**酒店管理系统编码的主要依据。1.2背景
    本软件全称为**酒店管理系统。
    软件适用于普通二星级酒店、宾馆。 2界面功能描述2.0主界面
    系统运行主框架,实时显示房态信息。

     2.1散客开单
    完成对散客的开单任务。最多能追加五个相同类型的房间。

     2.2团体开单
    完成对团体宾客的开单任务。房间数没有限制,可同时追加不

    2022年5月12日
    44
  • windows vista模拟器_windows vista旗舰版

    windows vista模拟器_windows vista旗舰版由于科技的进步,微软当然不示落后,让很多市面上的笔记本电脑预装了WindowsVista操作系统,而使没有安装这一

    2022年8月31日
    4
  • LINUX上NIS服务配置

    LINUX上NIS服务配置

    2021年8月27日
    57
  • shell 循环变量传递问题

    shell 循环变量传递问题如例子中:#!/bin/bashfile=”/etc/passwd”letnum=0cat$file|whilereadlinedoecho-e”hello,`echo$line|cut-d”:”-f1`\c”echoyourUIDis`echo$line|cut-d”:”-f3`nu

    2022年7月24日
    15
  • ConnectionString属性「建议收藏」

    ConnectionString属性「建议收藏」ConnectionString类似于OLEDB连接字符串,但并不相同。与OLEDB或ADO不同,如果“PersistSecurityInfo”值设置为false(默认值),则返回的连接字符串与用户设置的ConnectionString相同但去除了安全

    2022年7月12日
    19
  • 【目标检测】Fast RCNN算法详解

    【目标检测】Fast RCNN算法详解继2014年的RCNN之后,RossGirshick在15年推出FastRCNN,构思精巧,流程更为紧凑,大幅提升了目标检测的速度。

    2022年5月6日
    56

发表回复

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

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