Die Beispiele in diesem Artikel teilen Ihnen den spezifischen Code des Java -Konvertierens PDF -Image für Ihre Referenz. Der spezifische Inhalt ist wie folgt
Erstens die PDFBox -Komponente 1.8.4 mit Apache
Paket PDF; Import Java.awt.image.BuffenedImage; Import Java.io.file; importieren java.io.ioException; import Java.util.date; importieren java.util.list; import Javax.imageo.imageo; import org.apache.pdfbox.pdmodel.pddocument; import org.apache.pdfbox.pdmodel.pdpage; öffentliche Klasse PDFBox {@Suppresswarnings ("rawttypes") public static void main (String [] args) löst IOException {String p = system.getProperty ("user.dir") + "/"+"zk.pdf" aus; Pddocument doc = pddocument.load (p); int pagecount = doc.getNumberofpages (); System.out.println (PageCount); Datum start = neuer Datum (); try {list pages = doc.getDocumentCatalog (). getAllpages (); für (int i = 0; i <pages.size (); i ++) {pdPage page = (pdPage) Seiten.get (i); @SuppressWarnings ("unbenutzt") int width = new Float (page.gettrimbox (). GetWidth ()). IntValue (); @SuppressWarnings ("unbenutzt") int height = new float (page.gettrimbox (). Getheight ()). IntValue (); Bufferedimage image = page.convertoimage (); ImageIo.Write (Bild, "JPG", neue Datei ("img" + Datei.separator + (i + 1) + ".jpg")); System.out.println ("Bild in der Seite ->"+(i+1)); }} catch (Ausnahme e) {e.printstacktrace (); } endlich {if (doc! = null) {doc.close (); }} Datum end = new Date (); System.out.println (end.getTime ()-start.getTime ()); System.out.println ("Over"); }}Aber das Problem liegt in dem Problem:
Wenn das PDF -Dokument 180 m ist, meldet es direkt eine Parsing -Ausnahme
Die Verarbeitung ist sehr langsam, wenn die Anzahl der PDF -Seiten mehr als 500 Seiten beträgt
Später habe ich versucht, PDF-Renderer Version 1.0.5 zu verwenden
Paket PDF; import Java.awt.image; Import Java.awt.Rectangle; Import Java.awt.image.BuffenedImage; Import Java.io.file; importieren java.io.fileoutputStream; importieren java.io.ioException; import Java.io.randomaccessfile; Import Java.nio.MappedBytebuffer; Import Java.nio.Channels.filechannel; import com.sun.image.codec.jpeg.jpegcodec; import com.sun.image.codec.jpeg.jpegencodeparam; import com.sun.image.codec.jpeg.jpegimageCoder; import com.sun.pdfview.pdffile; import com.sun.pdfview.pdfpage; public class pdfrenderer {public static void main (String [] args) löst IOException aus {String pdfreelepath = system.getProperty ("user.dir") + "/"+"zk.pdf"; Datei Datei = neue Datei (pdfrealepath); RandomAccessfile raf = new randomAccessfile (Datei, "r"); Filechannel Channel = raf.getchannel (); MapedBytebuffer buf = Channel.MAP (filechannel.mapMode.read_only, 0, Channel.size ()); Pdffile pdffile = new pdffile (buf); für (int i = 1; i <= pdffile.getNumpages (); i ++) {pdfpage page = pdffile.getPage (i); Rechteck rect = neues Rechteck (0, 0, (int) page.getbbox () .getWidth ()), ((int) page.getbbox (). Geteight ())); Bild img = page.getImage (rect.width, rect.height, rect, null, true, true); 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 ("img" + Datei.Separator + (i + 1) + ".jpg"); // Ausgabe zum Datei -Stream JPegimageCoder Encoder = jpegcodec.createjpeGenCoder (out); JpeGenCodeParam param2 = cccoder.getDefaultJpeGenCodeParam (Tag); param2.setQuality (1f, false); // 1f soll das generierte Bildqualitätscodierer verbessern. CCCODER.ECODE (Tag); // jpeg coding out.close (); System.out.println ("Bild in der Seite ->"+(i+1)); }}}Das Problem liegt jedoch in dem Problem: Wenn die Version von PDF nicht 1,4 ist, wird ein Fehler direkt angegeben: Erwartete "Xref" zu Beginn der Tabelle
Im Vergleich zu PDFbox ist die Konvertierung viel weniger effizient. Ein PDF mit etwa 200 Seiten dauert ungefähr das 6 -fache der Zeit, die es für letztere benötigt. Gleichzeitig gibt es einige Probleme mit der Unterstützung chinesischer Schriftarten.
Es gibt jedoch kein Problem, dass die PDF -Version nicht konvertiert werden kann.
PDFrenderer kann 1.4 oder über Versionen konvertieren. Ich fand die Lösung, wurde aber nicht gefunden.
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.