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

作者&投稿:种牧 (若有异议请与网页底部的电邮联系)
java 怎么将base64转成照片~

String file = "......base64.........."; String fileName = test+".jpg";String filePath = "/home/"+fileName;byte[] json = null;try {json = file.getBytes("UTF-8");json = Base64.decodeBase64(json);File files = new File(filePath);FileImageOutputStream imageOutput = null;try {imageOutput = new FileImageOutputStream(files);imageOutput.write(json, 0, json.length);} catch (FileNotFoundException e) {_log.info(e.getMessage());} catch (IOException e) {_log.info(e.getMessage());}try {imageOutput.close();} catch (IOException e) {_log.info(e.getMessage());}} catch (UnsupportedEncodingException e) {e.printStackTrace();}请采纳,谢谢

例子说明一切
先写单元测试吧:单元测试的代码如下:
package test.com.cs;

import com.cs.Base64Convert;
import junit.framework.TestCase;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.logging.Logger;

public class TestBase64Convert extends TestCase {
Base64Convert baseCov = null;

public TestBase64Convert(String s) {
super(s);
}

protected void setUp() throws Exception {
baseCov = new Base64Convert();
}

protected void tearDown() throws Exception {
super.tearDown();
}

public void testIoToBase64() {
try {
String strBase64 = baseCov.ioToBase64(); //将 io 转换为 base64编码
System.out.println(">>> "+strBase64);
baseCov.base64ToIo(strBase64); //将 base64编码转换为 io 文件流,生成一幅新图片
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

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("
", "").replaceAll("", "");//删除

  

//  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("
", "").replaceAll("", "");//删除

//   

//   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("
", "").replaceAll("", "");//删除

* 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)

}



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

base64不就是一串字符吗、这还有格式?


java 使用 openoffice 将office文件转PDF的必备条件?
1. 下载 OpenOffice 2.复制UNO提供的jar包: unoil.jar, java_uno.jar, juh.jar, jurt.jar, ridl.jar, unoloader.jar. (ps: 安装了SDK之后在文件夹找)到自己的工程中,引入它们。3. 下载文档:DevelopersGuide.pdf.4. 安装了SDK后,重新启动一下机器,然后就可以按照 DevelopersGuide 来学习 UNO...

请达人推荐一本C#入门的书籍,本人用过ava做过项目,但是对C#以及.net...
参考资料:http:\/\/www.flighty.cn\/html\/book\/20110510_122.html

java读取pdf文件的时候出现异常
\/\/ 首先当作一个URL来装载文件,如果得到异常再从本地文件系统\/\/去装载文件 URL url = new URL(pdfFile); \/\/注意参数已不是以前版本中的URL.而是File。document = PDDocument.load(pdfFile);\/\/ 获取PDF的文件名 String fileName = url.getFile();\/\/ 以原来PDF的名称来命名新产生的txt文件 ...

用java程序怎样设置pdf的页数
用那个数据库的吧?你说的问题也就是每页显示的信息条数 这样问题不久很好解决了吗?先对其进行遍历一遍 然后获得总工的信息条数 然后看你每页要显示的多少条内容 总条数处以那个不久是页数了啊

如何找出电脑里所有的PDF文档
1.要实现pdf文件的查找,需要下载专门的pdf浏览工具,adobe reader就是官方发布的一款pdf文件浏览工具,可以实现pdf文档的查找功能 2.在软件管家中搜索“adobe reader”,然后在搜索结果中下载并安装“adobe reader”软件 3.下载完成后即可自动关联pdf文件,然后在电脑磁盘中打开您需要查找的pdf文件。打开之后...

网易博客怎么在首页上加上图片模块?
例如: 还有很多其他代码,你在百度上搜~网易博客代码~就可以找到很多了。用代码可以做很多效果的。。。祝你的博客越来越好看~~~至于人气嘛,我的博客人气还是比较高的,要经常去踩别人的,人家踩了你要回踩,然后在网易上可以加入一些

如何创建一个PDF文件? 详细
如何创建一个 PDF 文件? 详见以下代码: <% Option Explicit Sub CheckXlDriver() On Error Resume Next Dim vConnString Dim oConn, oErr vConnString = "DRIVER={Microsoft Excel Driver (*. xls)} ;DBQ=NUL: " ' 连接 NUL Set oConn = CreateObj ect("ADODB. Connection") oConn. Open...

网站排名和优化需要怎么做
(2)伪原创:一般改第一、二段加最后一段、中间内容替换相似词。也可以在其他语种的文章翻译为中文。也可摘抄PDF文件或者寻找屏蔽搜索引擎的知名网站。结构优化:最好不要有flash,图片应该加ALT标签,不要用SessionID,也不使用框架结构、TavaScript链接。网站物理结构优化。内链优化:(1)网站地图:...

甘特图详细资料大全
甘特图(Gantt chart)又称为横道图、条状图(Bar chart)。其通过条状图来显示项目,进度,和其他时间相关的系统进展的内在关系随着时间进展的情况。以提出者亨利·L·甘特(Henrry L. Ganntt)先生的名字命名。基本介绍 中文名 :甘特图 外文名 :Gantt chart 别名 :横道图、条状图 发明...

java和javaweb和web的区别
Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。WEB...

平罗县15990262444: 如何将PDF转换生成的response.outputStream为Base64编码 -
江国施图: 用Java内嵌iText生成PDF文档需要5个步骤: ①建立com.lowagie.text.Document对象的实例. Document document = new Document(); ②建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中. PDFWriter.getInstance(...

平罗县15990262444: 在 java 中如何进行base64 编码和解码 -
江国施图: // 将 s 进行 BASE64 编码 public static String getBASE64(String s) { if (s == null) return null; return (new sun.misc.BASE64Encoder()).encode( s.getBytes() ); } // 将 BASE64 编码的字符串 s 进行解码 public static String getFromBASE64(String s) ...

平罗县15990262444: java怎么把普通字符串转换为base64字符串 -
江国施图: import java.io.IOException;public class Test {/*** 编码* @param bstr* @return String*/public static String encode(byte[] bstr){return new sun.misc.BASE64Encoder().encode(bstr);}/*** 解码* @param str* @return string*/public ...

平罗县15990262444: java怎么把普通字符串转换为base64字符串 -
江国施图: import java.io.IOException; public class Test { /** * 编码 * @param bstr * @return String *...

平罗县15990262444: JAVA怎么样实现Base64加密解密? -
江国施图: package test; import java.io.IOException; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class Test { public static void main(String[] args) { String str = "java12345"; String ret = null; ret = new BASE64Encoder()....

平罗县15990262444: JAVA BASE64编码 -
江国施图: 简单,你用FileInputStream打开文件,然后传给那个Encoder就行了.他支持InputStream的输入参数的.

平罗县15990262444: 安卓开发中怎么将文件转换成base64字符串 -
江国施图: 将文件转成base64 字符串,android 手机开发的时候会用到,当然在android有转base64的方法,这里调用的是jdk的api [代码] [Java]代码 01 package com.xbl.test; 02 03 import java.io.File; 04 import java.io.FileInputStream; 05 import java.io....

平罗县15990262444: java 怎么将base64转成照片 -
江国施图: String file = "......base64.........."; String fileName = test+".jpg"; String filePath = "/home/"+fileName; byte[] json = null; try { json = file.getBytes("UTF-8"); json = Base64.decodeBase64(json); File files = new File(filePath); ...

平罗县15990262444: JAVA压缩至32K以下后的图片base64码 -
江国施图: Java实现图片与Base64编码互转 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import sun.misc.BASE64Decoder; import sun.misc.BASE64...

平罗县15990262444: 利用JAVA怎样把String转换成base64 - CSDN论坛 -
江国施图: JAVA 内置的 import sun.misc.*; public class Base64 {// 加密public static String getBase64(String str) {byte[] b = null;String s = null;try {b = str.getBytes("utf-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}if (b != null...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网