首页 > 其他分享 >PDF 和 base64 的转换

PDF 和 base64 的转换

时间:2024-08-29 19:36:19浏览次数:10  
标签:转换 buffer base64 new catch PDF byte null bis

public static String PDFToBase64(File file) {
        BASE64Encoder encoder = new BASE64Encoder();
        FileInputStream fin = null;
        BufferedInputStream bin = null;
        ByteArrayOutputStream baos = null;
        BufferedOutputStream bout = null;
        try {
            fin = new FileInputStream(file);
            bin = new BufferedInputStream(fin);
            baos = new ByteArrayOutputStream();
            bout = new BufferedOutputStream(baos);
            byte[] buffer = new byte[1024];
            int len = bin.read(buffer);
            while (len != -1) {
                bout.write(buffer, 0, len);
                len = bin.read(buffer);
            }
            // 刷新此输出流并强制写出所有缓冲的输出字节
            bout.flush();
            byte[] bytes = baos.toByteArray();
            return encoder.encodeBuffer(bytes).trim();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // closeISStream(fin);
            closeISStream(bin);
            closeOSStream(bout);
        }
        return null;
    }

    public static void closeISStream(InputStream is) {
        if (is != null) {
            try {
                is.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }

    public static void closeOSStream(OutputStream os) {
        if (os != null) {
            try {
                os.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    public static void base64StringToPdf(String base64Content, String filePath) {
        BASE64Decoder decoder = new BASE64Decoder();
        BufferedInputStream bis = null;
        FileOutputStream fos = null;
        BufferedOutputStream bos = null;

        try {
            byte[] bytes = decoder.decodeBuffer(base64Content);// base64编码内容转换为字节数组
            ByteArrayInputStream byteInputStream = new ByteArrayInputStream(bytes);
            bis = new BufferedInputStream(byteInputStream);
            File file = new File(filePath);
            File path = file.getParentFile();
            if (!path.exists()) {
                path.mkdirs();
            }
            fos = new FileOutputStream(file);
            bos = new BufferedOutputStream(fos);

            byte[] buffer = new byte[1024];
            int length = bis.read(buffer);
            while (length != -1) {
                bos.write(buffer, 0, length);
                length = bis.read(buffer);
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // closeStream(bis, fos, bos);
            closeISStream(bis);
            closeOSStream(bos);
        }
    }

 

标签:转换,buffer,base64,new,catch,PDF,byte,null,bis
From: https://www.cnblogs.com/pengweiqiang/p/18387454

相关文章

  • 时间相减和时间转换
    1.现在时间到开始时间的时间差(两个时间变成时间戳然后转化成时间)consttransformTime=(date)=>{vardate1=newDate();//开始时间vardate2=newDate('2024-08-2917:11:12');//结束时间vardate3=date2.getTime()-date1.getTime()//时间差的毫秒数//计算出相......
  • Java Excel转PDF(免费)
    目前市面上Excel转PDF的组件较多:收费:aspose、GcExcel、spire开源:jacob、itextpdf其中收费的组件封装得比较好,代码简洁,转换的效果也很好,但收费也高得离谱:为了成本考虑,就需要考虑开源的组件了,因为它们都是免费的:jacob:目前没有探索出很好的导出效果。itextpdf:已探索出......
  • 在线人民币大小写转换工具html代码
    该工具旨在帮助用户方便地将人民币金额从小写转换为大写,只需输入金额,点击转换按钮,即可快速获得准确的大写表示。工具界面简洁友好,支持输入各种格式的大写金额,如“1356.78元”。经常报账的小伙伴可以用到,减少手动转换的错误。点击查看代码<!DOCTYPEhtml><htmllang="zh-CN">......
  • windows下qsv转换mp4脚本
    @echooffchcp65001>nulsetlocalenabledelayedexpansion::创建保存mp4文件的目录set"output_dir=%~dp0mp4"ifnotexist"%output_dir%"mkdir"%output_dir%"::遍历当前目录下的所有文件夹for/r%%din(.)do(ifexist"%%d\*.qsv&q......
  • SciTech-BigDataAIML-CV+CG-Digital Image/Signal Processing- RGB图片转换成 RGBA格
    RGBA与RGBRGB是Color(颜色)数值化为R(红色)、G(绿色)、B(蓝色)**三Channel(分量),每分量数值的取值范围为0-255。通过组合这三个ColorChannel(颜色分量)的不同数值,可以得到各种各样的颜色。RGBA是RGB颜色模型的一种扩展,只增加了一个表示透明度(Alpha)的透明分量(A)。A代......
  • 强推!必看!!由中国信通院发布的汇聚99个大模型优秀应用案例集!附219页PDF文件下载
    2024年是大模型深入赋能千行百业,融入实体经济,助力科技创新的一年。截至今年5月,我国国产大模型的数量已经超过300个,预示着大模型在各行业场景的创新应用和深度拓展,对培育新质生产力、高水平赋能新型工业化、推动高质量发展发挥了重要作用。今年,国务院政府工作报告首次提出......
  • 5 Python的变量、关键字、命名规则、基本数据类型及类型转换
    本文是Python系列教程第5篇,完整系列请查看Python专栏。1定义变量在Python中定义变量非常简单,你只需要给变量赋值即可。Python会自动检测变量的数据类型。下面是一些基本的例子来展示如何定义不同类型的变量:1.1整数age=251.2浮点数height=1.751.3字......
  • 深度学习实战86-高中数学问答大模型介绍、支持将批量的latex数学公式生成pdf的过程详
    大家好,我是微学AI,今天给大家介绍一下深度学习实战86-高中数学问答大模型介绍、支持将批量的latex数学公式生成pdf的过程详解。本文利用MathGPT数学大模型实现的数学教材智能问答系统。该系统结合了自然语言处理和数学知识图谱,能够理解用户的数学问题,并提供准确的答案和解......
  • 数据类型的转换
    Java基础语法中,数据类型的转换是一个重要的概念,它允许我们将一个数据类型的值转换为另一种数据类型。Java中的数据类型转换可以分为两种:自动类型转换(也称为隐式类型转换)和强制类型转换(也称为显式类型转换)。自动类型转换自动类型转换发生在小范围类型向大范围类型赋值时,Java会自......
  • 【专题】2024年中国AI人工智能基础数据服务研究报告合集PDF分享(附原数据表)
    原文链接:https://tecdat.cn/?p=37516随着人工智能技术的迅猛发展,AI基础数据服务行业迎来了前所未有的发展机遇。报告合集显示,2023年中国AI基础数据服务市场规模达到45亿元,且未来五年复合增长率有望达到30.4%。多模态大模型、长文本处理能力提升以及大模型小型化技术成为A......