Cet article partage le code spécifique pour que Java convertit IMG et PDF les uns aux autres pour votre référence. Le contenu spécifique est le suivant
Si vous n'êtes pas doué pour exprimer, publiez simplement le code directement. S'il vous plaît, ignorez-moi.
Importer java.awt.image.bufferedImage; Importer java.io.ByteArrayOutputStream; Importer java.io.file; import java.io.fileInputStream; Importer java.io.fileOutputStream; import java.io.inputStream; import java.io.randomaccessfile; import java.nio.bytebuffer; Importer java.nio.channels.fileChannel; importation 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 * Cet outil implémente la conversion mutuelle d'IMG et de PDF. * Pour exécuter le test, vous devez importer les 2 packages de jar suivants * itext-2.0.2.jar * pdfrenderrer.jar * * / @suppresswarnings ("inutilisé") classe publique imgpdfutils {public static void main (string [] args) lance exception {// pdf pack extratte pdf // pdfexTraction ();); // pdf à jpg // pdftojpg ("e: // java // data pdf // 1.pdf", "e: // java // data pdf // 1.jpg", 1); // combine plusieurs JPG directement dans les packages PDF // ExtractionPDF ("f: // temp // project // data // dfdsfds // Paris Commying's Biography's Biography_IMG", "f: // temp // project // data // dfdsfds // Paris Commate Activist's biography_img.pdf"); // jpg à pdf // jpgtopdf (); // Tri de fichiers // listOrder (); Imgfiletool.imgmeragetopdf (nouveau fichier ("f: // temp // project // data // dfdsfds // Paris Commying's biograph_img"). ListFiles (), nouveau fichier ("f: // temp // project // data // dfdsfds //", "parsed activistes in Paris.pdf")); } private static void listorder () {file [] listFiles = new File ("f: // temp // project // data // dfdsfds // militants paissés dans paris_img"). listFiles (); Treemap <Integer, fichier> arbre = new Treemap <Integer, file> (); pour (fichier f: listFiles) {Tree.put (Integer.Parseint (f.getName (). RempaceALL (". Jpg $", "")), f); } pour (entrée <nteger, fichier> eif: arbre.entryset ()) {System.out.println (eif.getKey () + "=" + eif.getValue (). toString ()); }} / ** * @Param List Image Collection * @param File Save Path * @return true, Merge est terminé * Si le nom du fichier n'est pas 1.jpg, 2.jpg, 3.jpg, 4.jpg. Vous devez réécrire la méthode de tri de Treemap par vous-même! * / public static booléen imgMerageTOPDF (fichier [] liste, fichier de fichier) lance l'exception {// 1: trier naturellement les fichiers d'image par nom via Treemap Map <Integer, fichier> mif = new Treemap <nteger, file> (); pour (fichier f: list) mif.put (Integer.Parseint (f.getName (). RempaceALL (". Jpg $", "")), f); // 2: Obtenez la largeur et la hauteur du premier IMG comme norme pour PDF documents bytearrayoutputStream baos = new bytearrayoutputStream (2048 * 3); InputStream est = new FileInputStream (mif.get (1)); pour (int len; (len = is.read ())! = - 1;) baos.write (len); baos.flush (); Image image = image.getInstance (baos.toByTearray ()); float width = image.width (); float height = image.height (); baos.close (); // 3: Instancier un objet de document PDF à travers la largeur et la hauteur. Document document = nouveau document (nouveau rectangle (largeur, hauteur)); Pdfwriter pdfwr = pdfwriter.getInstance (document, nouveau fileOutputStream (fichier)); document.open (); // 4: Obtenez chaque fichier image et convertissez-le en un objet IMG. Chargez dans l'objet de document pour (entrée <nteger, fichier> eif: mif.entryset ()) {//4.1: lire dans la mémoire baos = new bytearrayoutputStream (2048 * 3); is = new FileInputStream (eif.getValue ()); pour (int len; (len = is.read ())! = - 1;) baos.write (len); baos.flush (); //4.2 Générer un objet IMG via l'octet d'octet image = image.getInstance (baos.toByTearray ()); Image.getInstance (baos.ToByTearray ()); Image.SetAbsolutepos (0,0f, 0,0f); //4.3: ajouter à document.add (image); document.newPage (); baos.close (); } // 5: Libérez le document de ressource.close (); pdfwr.close (); Retour Vrai; } / ** * * @param Fichier source source * @param Fichier cible cible * @param x Lire la page dans le fichier source * / private static void pdftojpg (chaîne source, cible de chaîne, int x) lance l'exception {// créer un flux de fichiers d'accès aléatoire à partir de et des écritures (facultatif). R signifie qu'il s'agit juste d'un mode d'accès. RandomAccessFile rea = new RandomAccessFile (nouveau fichier (source), "r"); // Lisez le flux dans la mémoire, puis mappez un objet PDF FileChannel Channel = Rea.GetChannel (); ByteBuffer buf = canal.map (filechannel.mapMode.read_only, 0, canal.size ()); Pdffile pdffile = new pdffile (buf); Pdfpage page = pdffile.getPage (x); // Obtenez la largeur et la hauteur du DOC au zoom par défaut java.awt.rectangle rect = new Java.awt.rectangle (0, 0, (int) page.getBbox () .getWidth (), (int) page.getBbox (). Getheight ()); // Générez l'image java.awt.image img = page.getImage (rect.width, rect.height, // width & rect, // clip rect null, // null pour l'imageObserver true, // remplissage d'arrière-plan avec blanc true // bloquer jusqu'à ce que le dessin soit terminé); BufferedImage 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 (cible); // Sortie en flux de fichiers jpegImageEncoder Encoder = jPegCodec.CreateJPegenCoder (Out); Encoder.encode (TAG); // JPEG Encoding Out.Close (); } / ** * @Param Source Source PDF File Path * @param Target Save Pdf File Path * @param Pagenum Extracte la page Pagenum dans PDF * @throws Exception * / Private Static Void PDFextraction (String Source, String Target, int PageNum) lance l'exception {// 1: Créer un objet de lecture PDF PDFRERADER PROR System.out.println ("ce document" + pr.getNumberofPages () + "page"); // 2: Convertir la page de page en extraire et créer le document de document document doc = nouveau document (pr.getPageSize (pagenum)); // 3: Convertissez-le pour le stocker séparément via PDFCOPY PDFCOPY COPY = NOUVEAU PDFCOPY (DOC, nouveau FileOutputStream (nouveau fichier (cible))); doc.open (); doc.newpage (); // 4: Obtenez la première page et chargez-la dans le document. PDFIMPORTEDPAGE PAGE = COPY.GETIMPORTEDPAGE (PR, PAGENUM); copy.addpage (page); // 5: relâchez la ressource copie.close (); doc.close (); pr.close (); } / ** * @param pdffile Source pdf fichier * @param iMgFile Photo Fichier * / private static void jpgtopdf (fichier pdffile, fichier imgfile) lève exception {// file to img inputStream is = new FileInputStream (pdffile); ByteArrayOutputStream baos = new ByteArrayOutputStream (); pour (int i; (i = is.read ())! = - 1;) {baos.write (i); } baos.flush (); // Obtenez la largeur et la hauteur de l'image. Image img = image.getInstance (baos.toByTearray ()); float width = img.width (); float height = img.height (); IMG.SetAbsolutSposition (0,0f, 0,0f); // Annuler Offset System.out.println ("width =" + width + "/ theight" + height); // img à pdf document doc = nouveau document (nouveau rectangle (largeur, hauteur)); Pdfwriter pw = pdfwriter.getInstance (doc, new FileOutputStream (imgFile)); doc.open (); doc.add (IMG); // Libérez le système de ressources.out.println (doc.newPage ()); pw.flush (); baos.close (); doc.close (); pw.close (); }}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.