Red de conocimiento informático - Aprendizaje de programación - Cómo convertir PDF base64 a jpg base64 en JAVA

Cómo convertir PDF base64 a jpg base64 en JAVA

paquete com.aiait.base.util;

importar org.apache.pdfbox.pdmodel.PDDocument;

importar org.apache.pdfbox.rendering. ImageType;

importar org.apache.pdfbox.rendering.PDFRenderer;

importar org.slf4j.Logger;

importar org.slf4j.LoggerFactory;

p>

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

importar org.apache.pdfbox.*;

importar java .awt.image.BufferedImage;

importar java.io.ByteArrayOutputStream;

importar java.io.File;

importar java.io.IOException;

importar java.io.InputStream;

importar java.net.URL;

importar java.text.DecimalFormat;

importar java .util.Date;

importar javax.imageio.ImageIO;

importar org.apache.commons.lang3.StringUtils;

importar sun.misc.BASE64Decoder ;

importar sun.misc.BASE64Encoder;

clase pública PDFUtil {

// registrador

Registrador final estático privado lOGGER = LoggerFactory .getLogger(PDFUtil. class);

public static void main(String[] args) {

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

Fecha timeDiffE = null;

Fecha timeDiffL = null;

timeDiffE = nueva Fecha();

base64PdfToJpg(pdfBase64);

timeDiffL = nueva Fecha();

LOGGER.info("base64PdfToJpg tiempo de uso: " getDiffTime (timeDiffL, timeDiffE) "s");

}

cadena estática privada base64PdfToJpg(String base64Pdf) {

String jpg_base64 = null

int pdfdpi = 400

decodificador BASE64Decoder = nuevo BASE64Decoder();

byte[] pdf_bytes = null;

prueba {

pdf_bytes = decoder.decodeBuffer(base64Pdf);

} catch (IOException e1) {

e1.printStackTrace();

}

prueba (documento PDDocument final = PDDocument.load(pdf_bytes)) {

?int size = document.getNumberOfPages();

?

?/*Parámetros de fusión de imágenes*/

?/ / Definir ancho

?int width = 0;

?//Guardar los datos RGB en una imagen

?int[] singleImgRGB;

?// Define la altura, utilizada para la superposición más adelante

?int shiftHeight = 0

?//Guarda el valor de píxel de cada imagen

; ?BufferedImage imageResult = null

?//Utilice PdfBox para generar imágenes

?PDDocument pdDocument = documento

?PDFRenderer renderer = new PDFRenderer(pdDocument) ;

?/*Según el número total de páginas, dividir según la lógica de generar una imagen larga para 50 páginas*/

?// Convertir cada 50 páginas en 1 imagen

?int pageLength = size;? //Tantas como rotaciones hay

?//Número total de bucles

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

?for (int m = 0; m lt; totalCount; m ) {

?for (int i = 0; i lt; pageLength; yo ) {

?int pageIndex = i (m * pageLength);

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

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

?break;

?}

?// 96 es el ppp de la imagen. Cuanto mayor sea el ppp, más clara será la imagen. Cuanto más grande sea la imagen, más tiempo llevará la conversión

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

?int imageHeight = image.getHeight( );

p>

?int imageWidth = image.getWidth();

?if (i == 0) {

?//Calcular altura y offset

?//Usar el ancho de la primera imagen;

?width = imageWidth;

?//Guardar el valor de píxeles de cada imagen de página

?//Agregue un juicio: si el número total de imágenes que quedan después de m ciclos es menor que la longitud de la página, la altura de la imagen se dibujará de acuerdo con el número restante; de ​​lo contrario, la parte inferior de la imagen larga será toda negro

?if ((pdDocument.getNumberOfPages() - m * pageLength) lt; pageLength) {

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

?} else {

?imageResult = new BufferedImage(ancho, imageHeight * pageLength, BufferedImage.TYPE_INT_RGB

);

?}

?} else {

?// Suma continuamente la altura

?shiftHeight = imageHeight;

?}

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

?imageResult.setRGB(0, shiftHeight, ancho, imageHeight, singleImgRGB, 0, ancho);

?}

// ?System.out.println("m = " m

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

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

?// Escribir imágenes

?ImageIO.write(imageResult, "png", outFile

?// Esto es muy importante, habrá instrucciones a continuación

?shiftHeight = 0;

?}

?pdDocument.close(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); //io stream

? ImageIO.write(imageResult, "png", baos); //¿Escribir en el flujo?

? ] jpg_Bytes = baos.toByteArray(); // ¿Convertir a bytes?

? BASE64Encoder codificador = new BASE64Encoder();

jpg_base64 = encoder.encodeBuffer(jpg_Bytes).trim( ) ;//Convertir a cadena base64

? jpg_base64 = jpg_base64.replaceAll("\n", "").replaceAll("\r", ""); //Eliminar\r\n< / p>

?

///? System.out.println("El valor es: " "datos: imagen/jpg; base64, " jpg_base64); / p>

} catch (Excepción e) {

e.printStackTrace();

}

return "datos: imagen/jpg; base64 , "jpg_base64;

}

// cadena estática privada base64PdfToJpg(String base64Pdf) {

// cadena jpg_base64 = null

// int pdfdpi = 400; /p>

//

// decodificador BASE64Decoder = nuevo BASE64Decoder();

// byte[] pdf_bytes = null; prueba {

// pdf_bytes = decoder.decodeBuffer(base64Pdf);

// } catch (IOException e1) {

// e1.printStackTrace() ;

// }

//

// prueba (documento PDDocument final = PDDocument.load(pdf_bytes)) {

// int tamaño = document.getNumberOfPages();

// for (int i = 0; i lt; size; i) {

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

// Imagen BufferedImage = nuevo PDFRenderer(documento).

//

// ? ByteArrayOutputStream baos = new ByteArrayOutputStream(); //io stream

// ? ImageIO.write(image, "jpg", baos //¿Escribir en el stream?

// ? byte[] jpg_Bytes = baos.toByteArray(); // ¿Convertir a bytes?

// ? BASE64Encoder codificador = new BASE64Encoder();

// ? encoder.encodeBuffer(jpg_Bytes).trim(); //Convertir a cadena base64

// ? jpg_base64 = jpg_base64.replaceAll("\n", "").replaceAll("\r", " "); //Eliminar\r\n

// ?

// ? System.out.println("El valor es: " "datos: imagen/jpg; base64 ," jpg_base64);

// ?

// }

// } captura (Excepción e) {

//

e.printStackTrace();

// }

// return "datos: imagen/jpg; base64," jpg_base64

// }

// p>

vacío estático privado pdfTojpg(String pdfFilePath, String jpgFilePath) {

Archivo pdfFile = new File(pdfFilePath

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

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

int pdfdpi = 400;

decodificador BASE64Decoder = nuevo BASE64Decoder();

byte[] bytes = nulo

prueba {

bytes = decoder.decodeBuffer( pdfBase64);

} catch (IOException e1) {

e1.printStackTrace();

} // ? documento PDDocument final = PDDocument.load (pdfFile, "")) {

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

int size = document.getNumberOfPages( );

for (int i = 0; i lt; size; i) {

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

/*

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

* ImageIO.write(imagen , "jpg", baos) ; //Escribe byte[] imgBytes en la secuencia =

* baos.toByteArray(); //Convierte a bytes BASE64Encoder encoder = new BASE64Encoder();

* String png_base64 = encoder.encodeBuffer(imgBytes).trim(); //Convertir a cadena base64

* png_base64 = png_base64.replaceAll

("\n", "").replaceAll("\r", ""); //Eliminar\r\n

*?

* System.out.println ("El valor es:" "datos: imagen/jpg; base64," png_base64

*/

Archivo); jpgFile = nuevo archivo(jpgprefix "_" i ".jpg");

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

}

} captura (Excepción e) {

e.printStackTrace()

}

}

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

DecimalFormat df=new DecimalFormat("0.00"); //Establece el número de dígitos reservados

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

}

cadena estática pública pdfBase64 = "*** " / /desde la web? ¿Enlace a la página web, cargar un PDF para obtener la cadena base64? (Base64 - Decodificador y codificador Base64 en línea)

}