Este artículo comparte el código específico para Java para convertir IMG y PDF entre sí para su referencia. El contenido específico es el siguiente
Si no es bueno para expresar, simplemente publique el código directamente. Por favor ignórame.
import java.awt.image.bufferedImage; import java.io.bytearrayOutputStream; import java.io.file; import java.io.fileInputStream; import java.io.fileOutputStream; import java.io.inputstream; import java.io.randomaccessfile; import java.nio.bytebuffer; import java.nio.channels.filechannel; import java.util.map; import java.util.map.entry; import java.util.Treemap; import com.utils.imgfiletool; import com.lowagie.text.document; import com.lowagie.text.image; import com.lowagie.text.rectangle; import com.lowagie.text.pdf.pdfcopy; import com.lowagie.text.pdf.pdfimportedpage; import com.lowagie.text.pdf.pdfreader; import com.lowagie.text.pdf.pdfwriter; import com.sun.image.codec.jpeg.jpegcodec; import com.sun.image.codec.jpeg.jpegimageEncoder; import com.sun.pdfview.pdffile; import com.sun.pdfview.pdfpage; /** * * @author Hubiao * @datetime 2014-06-07 * Esta herramienta implementa la conversión mutua de IMG y PDF. * Para ejecutar la prueba, debe importar los siguientes 2 paquetes JAR * itext-2.0.2.Jar * pdfrenderer.jar * */@supesswarnings ("no usado") clase pública imgpdfutils {public static void main (string [] args) lanza excepción {// paquete pdf extracto pdf // pdfextraction (); // pdf a jpg // pdftojpg ("e: // java // data pdf // 1.pdf", "e: // java // data pdf // 1.jpg", 1); // Combine múltiples JPG directamente en paquetes PDF // ExtractionPdf ("f: // temp // Project // data // dfdsfds // Paris Commune Activist's Biography_img", "f: // temp // Project // data // dfdsfds // biography de paris comunista biography_img.pdf"); // jpg a pdf // jpgtopdf (); // clasificación de archivos // listOrder (); Imgfiletool.imgmerageTopdf (nuevo archivo ("f: // temp // Project // data // dfdsfds // Paris Commune Activist's Biography_img"). ListFiles (), new File ("f: // temp // Proyecto // Data // DFDSFDS //", "Activistas parisados en paris.pdf")); } private static void listOrder () {archivo [] listFiles = nuevo archivo ("f: // temp // Project // data // dfdsfds // activistas parados en paris_img"). ListFiles (); Treemap <Integer, file> tree = new Treemap <Integer, file> (); for (archivo f: listfiles) {tree.put (integer.parseInt (f.getName (). replaceAll (". jpg $", "")), f); } for (Entry <Integer, File> eif: tree.Entryset ()) {System.out.println (eif.getKey ()+"="+eif.getValue (). toString ()); }} /*** @Param List Image Collection* @param Archivo Guardar ruta* @return true, fusion se completa* Si el nombre del archivo no es 1.jpg, 2.jpg, 3.jpg, 4.jpg. ¡Necesitas reescribir el método de clasificación de Treemap por ti mismo! */public static boolean imgmerageTopdf (lista de archivo [], archivo de archivo) lanza la excepción {// 1: Ordene naturalmente los archivos de imagen por nombre a través de Treemap Map <Integer, file> mif = new Treemap <Integer, file> (); para (archivo f: list) mif.put (integer.parseInt (f.getName (). ReplaceAll (". Jpg $", ""), f); // 2: Obtenga el ancho y la altura del primer IMG como el estándar para los documentos PDF bytearRayOutputStream Baos = new BytearRayOutputStream (2048*3); InputStream es = nuevo FileInputStream (mif.get (1)); for (int len; (len = is.read ())! =-1;) baos.write (len); baos.flush (); Imagen imagen = image.getInstance (baos.tobytearray ()); Float Width = Image.Width (); altura de flotación = image.height (); baos.close (); // 3: Instanciar el objeto de documento PDF a través del ancho y la altura. Documento documento = nuevo documento (nuevo rectángulo (ancho, altura)); Pdfwriter pdfwr = pdfwriter.getInstance (documento, nuevo fileOutputStream (archivo)); document.open (); // 4: Obtenga cada archivo de imagen y conviértelo en un objeto IMG. Cargar en el objeto de documento para (Entrada <Integer, File> EIF: Mif.EntrySet ()) {//4.1: Leer en Memory Baos = new ByteArRayOutputStream (2048*3); es = nuevo fileInputStream (eif.getValue ()); for (int len; (len = is.read ())! =-1;) baos.write (len); baos.flush (); //4.2 Genere el objeto IMG a través de byte byte image = image.getInstance (baos.tobytearray ()); Image.getInstance (baos.tobytearray ()); Image.SetAbSolutePosition (0.0F, 0.0f); //4.3: agregar a document.add (imagen); document.newPage (); baos.close (); } // 5: libera el recurso documento.close (); pdfwr.close (); devolver verdadero; } /**** @param Archivo de origen de origen* @Param El archivo de destino de destino* @param x Lea la página en el archivo de origen* /private static void pdftoJpg (String Source, String Target, Int X) arroja una excepción {// Crea una secuencia de archivo de acceso aleatorio desde y escritos (opcionales) a él. R significa que es solo un modo de acceso. RandomAccessFile Rea = new RandomAccessFile (nuevo archivo (fuente), "r"); // Lea la transmisión en la memoria y luego asigne un objeto PDF fileChannel canal = rea.getChannel (); Bytebuffer buf = channel.map (filechannel.mapmode.read_only, 0, canal.size ()); Pdffile pdffile = new Pdffile (BUF); PDFPAGE PAGE = PDFFILE.GETPAGE (X); // Obtenga el ancho y la altura para el DOC en el zoom predeterminado java.awt.rectangle rect = new java.awt.rectangle (0, 0, (int) page.getbbox () .getWidth (), (int) page.getBbox (). getheight ()); // Generar la imagen java.awt.image img = page.getImage (rect.width, rect.height, // width & rect, // clip rect null, // nulo para el imageObserver verdadero, // rellena fondo con verdadero // bloque hasta que se hace el dibujo); TagedImage Tag = new BufferedImage (rect.width, rect.height, bufferedImage.type_int_rgb); tag.getGraphics (). DrawImage (img, 0, 0, rect.width, rect.Height, null); FileOutputStream out = new FileOutputStream (Target); // Salida a Archivo de flujo JPegimageEncoder Encoder = jpegcodec.createjpegencoder (out); encoder.encode (etiqueta); // JPEG codificando.close (); } /*** @param fuente PDF PDF Ruta de archivo* @param System.out.println ("este documento"+pr.getNumberOfPages ()+"página"); // 2: Convierta la página de la página para extraer y crear el objeto del documento documento doc = nuevo documento (pr.getPageSize (pagenum)); // 3: conviértelo para almacenarlo por separado a través de PDFCOPY PDFCOPY COPY = new PDFCopy (DOC, nuevo FileOutputStream (nuevo archivo (Target))); doc.open (); doc.newpage (); // 4: Obtenga la primera página y cárguela en el documento. PDFIMPORTEDPAGE Page = Copy.getImportedPage (PR, Pagenum); copy.addpage (página); // 5: libera el recurso copy.close (); doc.close (); Pr.Close (); } /*** @param Pdffile Fuente PDF File* @param imgfile Archivo de imagen* /privado static void jpgTopdf (archivo pdffile, archivo imgfile) lanza excepción {// archivo a img inputStream es = nuevo fileinputStream (pdffile); BytearRayOutputStream Baos = new ByteArRayOutputStream (); for (int i; (i = is.read ())! =-1;) {baos.write (i); } baos.flush (); // Obtener el ancho y la altura de la imagen. Imagen img = image.getInstance (baos.tobytearray ()); Ancho de flotación = img.width (); altura de flotación = img.height (); img.setabSolutePosition (0.0f, 0.0f); // cancelar offset system.out.println ("width ="+width+"/theight"+altura); // img a pdf documento doc = nuevo documento (nuevo rectángulo (ancho, altura)); PDFWriter PW = PDFWriter.getInstance (DOC, nuevo FileOutputStream (IMGFile)); doc.open (); doc.add (img); // libera el sistema de recursos.out.println (doc.newpage ()); pw.flush (); baos.close (); doc.close (); pw.close (); }}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.