问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JAVA怎么将PDF的base64转换成jpg的base64

发布网友 发布时间:2022-04-21 15:26

我来回答

3个回答

热心网友 时间:2022-04-24 08:19

package com.aiait.base.util;


import org.apache.pdfbox.pdmodel.PDDocument;

import org.apache.pdfbox.rendering.ImageType;

import org.apache.pdfbox.rendering.PDFRenderer;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;


import com.aiait.base.service.impl.base.SearchServiceImpl;


import org.apache.pdfbox.*;


import java.awt.image.BufferedImage;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.net.URL;

import java.text.DecimalFormat;

import java.util.Date;


import javax.imageio.ImageIO;


import org.apache.commons.lang3.StringUtils;


import sun.misc.BASE64Decoder;

import sun.misc.BASE64Encoder;


public class PDFUtil {

// logger

private static final Logger lOGGER = LoggerFactory.getLogger(PDFUtil.class);


public static void main(String[] args) {

//pdfTojpg("C://Test//eClaimPDF//1//Others.pdf","C://Test//eClaimPDF//WrittenConfirmation.jpg");

Date timeDiffE = null;

        Date timeDiffL = null;

        timeDiffE = new Date();

base64PdfToJpg(pdfBase64);

timeDiffL = new Date();

lOGGER.info("base64PdfToJpg use time: " + getDiffTime(timeDiffL, timeDiffE) + "s");

}

    private static String base64PdfToJpg(String base64Pdf) {

    String jpg_base64 = null;

        int pdfdpi = 400;

        

        BASE64Decoder decoder = new BASE64Decoder();

        byte[] pdf_bytes = null;

try {

pdf_bytes = decoder.decodeBuffer(base64Pdf);

} catch (IOException e1) {

e1.printStackTrace();

}


        try (final PDDocument document = PDDocument.load(pdf_bytes)) {

                 int size = document.getNumberOfPages();

                 

                 /*图像合并使用参数*/

                 // 定义宽度

                 int width = 0;

                 // 保存一张图片中的RGB数据

                 int[] singleImgRGB;

                 // 定义高度,后面用于叠加

                 int shiftHeight = 0;

                 //保存每张图片的像素值

                 BufferedImage imageResult = null;

                 // 利用PdfBox生成图像

                 PDDocument pdDocument = document;

                 PDFRenderer renderer = new PDFRenderer(pdDocument);

                 /*根据总页数, 按照50页生成一张长图片的逻辑, 进行拆分*/

                 // 每50页转成1张图片

                 int pageLength = size;  //有多少转多少

                 // 总计循环的次数

                 int totalCount = pdDocument.getNumberOfPages() / pageLength + 1;

                 for (int m = 0; m < totalCount; m++) {

                     for (int i = 0; i < pageLength; i++) {

                         int pageIndex = i + (m * pageLength);

                         if (pageIndex == pdDocument.getNumberOfPages()) {

                             System.out.println("m = " + m);

                             break;

                         }

                         // 96为图片的dpi,dpi越大,则图片越清晰,图片越大,转换耗费的时间也越多

                         BufferedImage image = renderer.renderImageWithDPI(pageIndex, 106, ImageType.RGB);

                         int imageHeight = image.getHeight();

                         int imageWidth = image.getWidth();

                         if (i == 0) {

                             //计算高度和偏移量

                             //使用第一张图片宽度;

                             width = imageWidth;

                             // 保存每页图片的像素值

                             // 加个判断:如果m次循环后所剩的图片总数小于pageLength,则图片高度按剩余的张数绘制,否则会出现长图片下面全是黑色的情况

                             if ((pdDocument.getNumberOfPages() - m * pageLength) < pageLength) {

                                 imageResult = new BufferedImage(width, imageHeight * (pdDocument.getNumberOfPages() - m * pageLength), BufferedImage.TYPE_INT_RGB);

                             } else {

                                 imageResult = new BufferedImage(width, imageHeight * pageLength, BufferedImage.TYPE_INT_RGB);

                             }

                         } else {

                             // 将高度不断累加

                             shiftHeight += imageHeight;

                         }

                         singleImgRGB = image.getRGB(0, 0, width, imageHeight, null, 0, width);

                         imageResult.setRGB(0, shiftHeight, width, imageHeight, singleImgRGB, 0, width);

                     }

//                     System.out.println("m = " + m);

                     File outFile = new File("C://Test//eClaimPDF//WrittenConfirmation.png");

                     System.out.println(outFile.getName());

                     // 写图片

                     ImageIO.write(imageResult, "png", outFile);

                     // 这个很重要,下面会有说明

                     shiftHeight = 0;

                 }

                 pdDocument.close();


  ByteArrayOutputStream baos = new ByteArrayOutputStream();//io流

  ImageIO.write(imageResult, "png", baos);//写入流中 

  byte[] jpg_Bytes = baos.toByteArray();//转换成字节 

  BASE64Encoder encoder = new BASE64Encoder();

  jpg_base64 = encoder.encodeBuffer(jpg_Bytes).trim();//转换成base64串

  jpg_base64 = jpg_base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\n

  

//  System.out.println("值为:"+"data:image/jpg;base64,"+jpg_base64);

 

        } catch (Exception e) {

        e.printStackTrace();

        }

        return "data:image/jpg;base64,"+jpg_base64;

    }

//    private static String base64PdfToJpg(String base64Pdf) {

//    String jpg_base64 = null;

//        int pdfdpi = 400;

//        

//        BASE64Decoder decoder = new BASE64Decoder();

//        byte[] pdf_bytes = null;

//try {

//pdf_bytes = decoder.decodeBuffer(base64Pdf);

//} catch (IOException e1) {

//e1.printStackTrace();

//}

//

//        try (final PDDocument document = PDDocument.load(pdf_bytes)) {

//            int size = document.getNumberOfPages();

//            for (int i = 0; i < size; i++) {

//                BufferedImage image = new PDFRenderer(document).renderImageWithDPI(i, pdfdpi, ImageType.RGB);

//                BufferedImage image = new PDFRenderer(document).

//

//  ByteArrayOutputStream baos = new ByteArrayOutputStream();//io流

//  ImageIO.write(image, "jpg", baos);//写入流中 

//  byte[] jpg_Bytes = baos.toByteArray();//转换成字节 

//  BASE64Encoder encoder = new BASE64Encoder();

//  jpg_base64 = encoder.encodeBuffer(jpg_Bytes).trim();//转换成base64串

//  jpg_base64 = jpg_base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\n

//  

//  System.out.println("值为:"+"data:image/jpg;base64,"+jpg_base64);

// 

//            }

//        } catch (Exception e) {

//        e.printStackTrace();

//        }

//        return "data:image/jpg;base64,"+jpg_base64;

//    }

    


    private static void pdfTojpg(String pdfFilePath, String jpgFilePath) {

        File pdfFile = new File(pdfFilePath);

        int idx = jpgFilePath.lastIndexOf('.');

        String jpgprefix = StringUtils.substring(jpgFilePath, 0, idx);

        int pdfdpi = 400;

        

        BASE64Decoder decoder = new BASE64Decoder();

        byte[] bytes = null;

try {

bytes = decoder.decodeBuffer(pdfBase64);

} catch (IOException e1) {

e1.printStackTrace();

}


  //      try (final PDDocument document = PDDocument.load(pdfFile, "")) {

        try (final PDDocument document = PDDocument.load(bytes)) {

            int size = document.getNumberOfPages();

            for (int i = 0; i < size; i++) {

                BufferedImage image = new PDFRenderer(document).renderImageWithDPI(i, pdfdpi, ImageType.RGB);

                

/*

* ByteArrayOutputStream baos = new ByteArrayOutputStream();//io流

* ImageIO.write(image, "jpg", baos);//写入流中 byte[] imgBytes =

* baos.toByteArray();//转换成字节 BASE64Encoder encoder = new BASE64Encoder();

* String png_base64 = encoder.encodeBuffer(imgBytes).trim();//转换成base64串

* png_base64 = png_base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\n

* System.out.println("值为:"+"data:image/jpg;base64,"+png_base64);

*/

                

                

                File jpgFile = new File(jpgprefix + "_" + i + ".jpg");

                ImageIO.write(image, "jpg", jpgFile);

            }

        } catch (Exception e) {

        e.printStackTrace();

        }


    }

    

    private static Double getDiffTime(Date lateTime, Date earlyTime) {

    DecimalFormat df=new DecimalFormat("0.00");//设置保留位数

    return Double.valueOf(df.format((double)(lateTime.getTime() - earlyTime.getTime()) / 1000));

    }


public static String pdfBase64 = "***" //from web 网页链接, upload a PDF to get the base64 string  (Base64 - Online Base64 decoder and encoder)

}

热心网友 时间:2022-04-24 09:37

如果桌面没有迅雷快捷方式,可以到开始菜单里的【所有程序】里查找

热心网友 时间:2022-04-24 11:12

base64不就是一串字符吗、这还有格式?
javapdf格式的base编码转换jpg格式的base64

在格式。1、首先,将Java PDF格式的Base64编码字符串转换为byte数组。2、然后,使用Java的ImageIO类将byte数组转换为BufferedImage对象。3、接下来,将BufferedImage对象转换为JPG格式的Base64编码字符串。

如何把doc文件转换成PDF格式?

"1.当然可以,首先要确定自己有一个pdf文档,而且确定目的是需要将pdf文档转换为word格式,然后我们将现有文档通过迅捷pdf转换器软件打开。2.通过选择PDF转换页面功能其中的PDF文件转WORD项目拖入文件。3.接着在迅捷pdf转换器下方按自己的需要是否更改文件名,然而在保存类型中选择*.doc选项。4.全部设置完成点击开始转换,确定自己设置好路径、更改文件名和保存类型即可。5.转换完成之后的word文档同样可以通过迅捷pdf转换器重新转换成一开始的pdf文档。"1.当然可以,首先要确定自己有一个pdf文档,而且确定目的是需要将pdf文档转换为word格式,然后我们将现有文档通过迅捷pdf转换器软件打开。2.通过选择PDF转换页面功能其中的PDF文件转WORD项目拖入文件。3.接着在迅捷pdf转换器下方按自己的需要是...

JAVA怎么将PDF的base64转换成jpg的base64

byte[] jpg_Bytes = baos.toByteArray();//转换成字节 BASE64Encoder encoder = new BASE64Encoder(); jpg_base64 = encoder.encodeBuffer(jpg_Bytes).trim();//转换成base64串 jpg_base64 = jpg_base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\n // System.out.println("值...

将base64位转换成png图片的java代码

public static boolean GenerateImage(String imgStr){ //对字节数组字符串进行Base64解码并生成图片 if (imgStr == null) //图像数据为空 return false;BASE64Decoder decoder = new BASE64Decoder();try { //Base64解码 byte[] b = decoder.decodeBuffer(imgStr);for(int i=0;i&lt;b.lengt...

vue 上传图片时 base64 怎么传到java后台

1、org.apache.commons.codec.binary.Base64.decodeBase64(这里传入src属性里的base64 的一串字符串);2、返回值是一个Byte[];3、字节流传送到文件。备注:这里Base64只是提供预览,其实可以保留原始的url传给后台的。

Java如何把二进制数据转换成图片???

直接上代码了,应该看得懂吧,str字符串的内容就是你XML里的内容。生成的a.jpeg我也给上传上来了,是个报表噢 import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import sun.misc.BASE64Decoder;public class CodeTest { public static void main(String[] args) ...

Java:为什么传输图片是常用base64字符串转码,而不是直接传输byte[]呢...

先说说base64吧:对于图片来说,一个字节占八位,如果都换成byte[]的话,会很长,不便于传输,那么就把没6个字节来对应一个新的字符(如010011是19,对应base64编码的T),,所以这个目的主要是精简数据,便于传输;另外常用的用途是:做不严格的加密用,比如常见的磁力链接,你懂的;因为它相对于...

java:关于base64编码求解

首先base64是对字节码进行再次编码,所以要先把你这个字符转成二进行码(不过对于英文字母来说,转成的二进制码都是一样的,就没关系了)。'a'对应的二进制码为01000001(65),而base64是每6位编成一个字符(base64字符),则把此二进制码分成2段,第一段是010000,第二段是01(0000不足位补0...

Java 在for循环内用base64解析多张图片问题,求高手指点

前提这些图片必须先经过base64进行编码。测试时,循环遍历每一张图片经过base64编码后的码值。只要码值不同,解析方法正确,图片不会出现相同

利用JAVA怎样把String转换成base64-CSDN论坛

java8的util包里增加了base64类,你可以 import java.util.Base64;之后可以用一下方法 byte[] encodedBytes = Base64.getEncoder().encode("Test".getBytes());System.out.println("encodedBytes " + new String(encodedBytes));byte[] decodedBytes = Base64.getDecoder().decode(encodedBytes);...

如何通过js将一base64编码的图片显示在html中

将图片转化为base64编码格式。输入&lt;script&gt; var img = new Image();//创建img容器 img.src=‘这儿就是复制填写上面那一大串’;//给img容器引入base64的图片 &lt;/scirpt&gt; 3.最后一步:document.body.appendChild(img);//将img容器添加到html的节点中就行了。简介:JavaScript一种直译式脚本语言,是...

jpeg怎么转换成jpg格式 手机pdf怎么转换成jpg图片 jpeg转换成pdf的软件 pdf怎么转换为jpg jpg转换pdf转换器 pdf怎么转成jpg最简单 pdf怎么转换成word pdf如何转换成jpg pdf批量转换成jpg
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
两台手机同在一个抖音号,一台关闭了活跃状态,另一台是不是也显示关闭... 为什么会免费存在推股票的QQ群 谁能推荐几个好的股票类的QQ群? 创作出《大中国》的高枫曾经红极一时,为什么后来变得籍籍无名? 芬达是哪个国家的饮料 走步前做哪些热身动作 2010年有什么大事发生啊???做课件要用的 哪个软件可以查看局域网IP是否通,它是小格子形式的,通的就是绿色的... 我家电脑IP地址写成其他人的怎么办,我家里是小区光钎的,写成别人的没事... 局域网里为什么有的IP是重复的,而且流量很小? JAVA压缩至32K以下后的图片base64码 Java 图片base64编码是对图片存放路径进行编码还是对图片本身字节进行编码? 在 java 中如何进行base64 编码和解码 利用JAVA怎样把String转换成base64-CSDN论坛 在Java中如何进行BASE64编码和解码 java 把一个网络图片转换为base64 从文件中读取数据并编码成base64 java java怎么把普通字符串转换为base64字符串 怎么用JAVA对一个文件进行base64编码 华硕主板p5kpl-am se怎么样 M2N68-AM PLUS(GREEN) peter haurtling 介绍? &quot;Wer zuletzt lacht, lacht am besten&quot;什么意思 常用的wifi芯片有哪些 谁有RTL8711 USB这个无线网卡驱动撒,那位好心帮帮忙 热气球是什么做的啊, 热气球的发明者是谁 热气球的简介,超速!! 热气球的外形介绍 热气球的介绍。 java jdk 11 怎么处理base64 java中如何用base64解码图片,并返回图片,不保存。 Java 图片base64编码是对图片存放路径进行编码还是对图片本身字节进行编码? java web开发,页面处理Base64编码 java转化BASE64为PNG的异常情况 长按复制链接到手机浏览器观看视频,直接点开看不了! 我想知道复制到浏览器观看是什么意思 空间浏览记录显示复制到浏览器打开什么意思? 税务开票软件怎么升级 404 Not Found 怎么弄链接复制到浏览器或者在微信里直接观看。 在浏览器上复制的文字怎么查看? 复制这网址,粘贴到浏览器打开可以看到可用GEC了 怎样复制浏览器中收藏的网页。 为什么我分享的链接打开了还要你复制粘贴去浏览器去看 增值税普通发票上报汇总可以点2遍吗 用税控盘购买发票时提示401 读取金税设备版本号信息失败,err-1 没有检测到税控设备 无法读取金税盘时间版本号怎么处理 石榴的功效有什么功效 吃石榴有什么好处?石榴的功效与作用