Dieser Artikel teilt den spezifischen Code für Java mit, um IMG und PDF für Ihre Referenz in einander zu konvertieren. Der spezifische Inhalt ist wie folgt
Wenn Sie nicht gut ausdrücken können, veröffentlichen Sie einfach den Code direkt. Bitte ignoriere mich.
Import Java.awt.image.BuffenedImage; importieren java.io.BytearrayoutputStream; Import Java.io.file; import Java.io.FileInputStream; importieren java.io.fileoutputStream; importieren 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.jpegimageCoder; import com.sun.pdfview.pdffile; import com.sun.pdfview.pdfpage; /** * * @Author Hubiao * @Datetime 2014-06-07 * Dieses Tool implementiert die gegenseitige Konvertierung von IMG und PDF. * Um den Test auszuführen, müssen Sie die folgenden 2 JAR-Pakete importieren * ITEXT-2.0.2.jar * pdfrenderer.jar * */@Suppresswarnings ("unbenutzt") public class imgpdfutils {public static void main (String [] args) Ausnahme {// pdf Paket pdf pdf pdf // pdfextracction (). // pdf zu jpg // pdftojpg ("e: // java // data pdf // 1.pdf", "e: // java // data pdf // 1.jpg", 1); // Mehrere JPGs direkt in PDF -Pakete kombinieren // extractpdf ("f: // temp // project // data // dfdsfds // Paris Commune Activist's Biography_Img", "f: // temp // project // data // dfdsfds // Paris Commune Activist's Biography_img.pdf"); // jpg zu pdf // jpgtopdf (); // Dateisortierung // listorder (); ImgFiletool.imgmeragetopdf (neue Datei ("f: // temp // project // data // dfdsfds // Paris Commune Aktivists Biographie_IMG"). ListFiles (), Neudatei ("f: // temp // project // data // dfdsfds //", "Parised Activists in Paris.Pdf"))). } private static void listorder () {file [] listFiles = new File ("f: // temp // project // data // dfdsfds // parisierte Aktivisten in paris_img"). listfiles (); Treemap <Integer, Datei> baum = new Treemap <Integer, Datei> (); für (Datei f: listFiles) {tree.put (Integer.ParseInt (f.getName (). Ersatzung (". JPG $", ""), f); } für (Eintrag <Integer, Datei> EIF: tree.entrySet ()) {System.out.println (eif.getkey ()+"="+eif.getValue (). toString ()); }} /*** @Param List Image Collection* @param Datei speichern Pfad* @return true, merge ist abgeschlossen* Wenn der Dateiname nicht 1.JPG, 2.JPG, 3.JPG, 4.JPG ist. Sie müssen die Sortiermethode von Treemap selbst neu schreiben! */public static boolean imgmeragetopdf (Datei [] Liste, Dateidatei) löst Ausnahme aus {// 1: Sortieren Sie die Bilddateien natürlich über Treemap Map <Integer, Datei> mif = new Treemap <Integer, Datei> (); für (Datei F: Liste) Mif.put (Integer.ParseInt (f.getName (). Ersatz (". JPG $", ""), f); // 2: Holen Sie sich die Breite und Höhe des ersten IMG als Standard für PDF -Dokumente BytearrayoutputStream baos = new bytearrayoutputStream (2048*3); InputStream ist = neuer FileInputStream (MIF.get (1)); für (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: Instanziierung des PDF -Dokumentobjekts durch Breite und Höhe. Dokument dokument = neues Dokument (neues Rechteck (Breite, Höhe)); Pdfwriter pdfwr = pdfwriter.getInstance (Dokument, neuer FileOutputStream (Datei)); document.open (); // 4: Rufen Sie jede Bilddatei ab und konvertieren Sie sie in ein IMG -Objekt. Laden Sie in ein Dokumentobjekt für (Eintrag <Integer, Datei> EIF: mif.entrySet ()) {//4.1: In Memory lesen baos = new bytearrayoutputStream (2048*3); is = new FileInputStream (eif.getValue ()); für (int len; (len = is.read ())! =-1;) baos.write (len); baos.flush (); //4.2 IMG -Objekt über Byte byte image = image.getInstance (baos.tobytearray ()) erzeugen; Image.getInstance (Baos.tobytearray ()); Image.SetabSoluteposition (0,0F, 0,0F); //4.3: add to document.add (Bild); document.newpage (); baos.close (); } // 5: Veröffentlichung des Ressourcendokuments.CLOSE (); pdfwr.close (); zurückkehren; } /**** @param Quellquelldatei* @param Zielzieldatei* @param x Die Seite in der Quelldatei* /private statische void pdftojpg (String -Quelle, String -Ziel, int x) löst eine Ausnahme aus {// Erstellen Sie einen Zufallszugriffsdatei -Stream aus und schreiben optional). R bedeutet, dass es nur ein Zugriffsmodus dafür ist. RandomAccessfile rea = new randomAccessfile (neue Datei (Quelle), "R"); // Lesen Sie den Stream in den Speicher und kartieren Sie dann einen PDF -Objekt filechannel Channel = rea.getChannel (); Bytebuffer buf = Channel.map (filechannel.mapMode.read_only, 0, Channel.size ()); Pdffile pdffile = new pdffile (buf); Pdfpage page = pdffile.getPage (x); // Erhalten Sie die Breite und Höhe für das DOC am Standard -Zoom java.awt.Rectangle rekt = new Java.awt.Rectangle (0, 0, (int) page.getbbox () .getWidth (), (int) page.getbbox (). gethight ()); // generieren Sie das Bild java.awt.image img = page.getImage (rect.width, rect.height, // Breite und Rekt. 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 (Ziel); // Ausgabe zum Datei -Stream JPegimageCoder Encoder = jpegcodec.createjpeGenCoder (out); CCCODER.ECODE (Tag); // jpeg coding out.close (); } /*** @param Source Source PDF -Dateipfad* @param Ziel speichern PDF -Dateipfad* @param pagenum die pagenum -Seite in PDF* @Throws Exception* /private statische void pdfextraction (String -Quelle, String -Ziel, Int -pagenum) Ausnahme {// 1: CREATE PDFE LESENS -Objekt PDFREADER PGEUS (New Pdfrow) (Quelle). System.out.println ("this document"+pr.getNumberofpages ()+"Seite"); // 2: Konvertieren Sie die Seite, um das Dokumentobjekt -Dokument doc = neues Dokument (pr.getPageSize (pagenum)) zu extrahieren und zu erstellen. // 3: Konvertieren Sie es so, dass es separat über pdfcopy pdfcopy copy = new PDFCOPY (DOC, neue FileOutputStream (neue Datei (Ziel)) speichert; doc.open (); doc.newpage (); // 4: Holen Sie sich die erste Seite und laden Sie sie in das Dokument. PdfimportedPage page = copy.getImportedPage (PR, Pagenum); copy.addpage (Seite); // 5: Veröffentlichen Sie die Ressourcenkopie.CLOSE (); doc.close (); pr.close (); } /*** @param pdffeFile Source PDF -Datei* @param imgFile Bilddatei* /private statische void jpgtopdf (Datei pdffile, Datei imgFile) löst eine Ausnahme {// Datei an IMG inputStream is = new FileputStream (PDFFFILE); BytearrayoutputStream baos = new bytearrayoutputStream (); für (int i; (i = is.read ())! =-1;) {baos.write (i); } baos.flush (); // Holen Sie sich die Breite und Höhe des Bildes. Bild img = image.getInstance (baos.tobytearray ()); float width = img.width (); float height = img.height (); img.setabsoluteposition (0,0F, 0,0F); // Offset System.out.println ("width ="+width+"/theight"+Höhe); // IMG zu PDF -Dokument doc = neues Dokument (neues Rechteck (Breite, Höhe)); Pdfwriter pw = pdfWriter.getInstance (DOC, neuer FileOutputStream (IMGFile)); doc.open (); doc.add (IMG); // die Ressourcensystem freigeben. pw.flush (); baos.close (); doc.close (); pw.close (); }}Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.