Contoh -contoh dalam artikel ini berbagi dengan Anda kode spesifik Java yang mengonversi gambar PDF untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
Pertama, komponen PDFBox 1.8.4 menggunakan Apache
paket pdf; impor java.awt.image.bufferedimage; impor java.io.file; impor java.io.ioException; impor java.util.date; impor java.util.list; impor javax.imageio.imageio; impor org.apache.pdfbox.pdmodel.pddocument; impor org.apache.pdfbox.pdmodel.pdpage; kelas publik pdfbox {@suppresswarnings ("rawTypes") public static void main (string [] args) melempar ioException {string p = system.getProperty ("user.dir") + "/"+"zk.pdf"; PDDocument Doc = PDDocument.Load (p); int pagecount = doc.getNumberofpages (); System.out.println (pagecount); Tanggal mulai = tanggal baru (); coba {list pages = doc.getDocumentCatalog (). getAllPages (); untuk (int i = 0; i <page.size (); i ++) {Pdpage page = (pdpage) halaman.get (i); @SuppressWarnings ("tidak digunakan") int width = new float (page.gettrimbox (). GetWidth ()). Intvalue (); @SuppressWarnings ("tidak digunakan") int height = new float (page.gettrimbox (). GetHeight ()). Intvalue (); BufferedImage Image = page.convertToImage (); ImageIo.write (gambar, "jpg", file baru ("img" + file.separator + (i + 1) + ".jpg")); System.out.println ("Gambar di halaman ->"+(i+1)); }} catch (Exception e) {e.printstacktrace (); } akhirnya {if (doc! = null) {doc.close (); }} Tanggal akhir = tanggal baru (); System.out.println (end.getTime ()-start.getTime ()); System.out.println ("over"); }}Tapi masalahnya terletak pada masalahnya:
Ketika dokumen PDF adalah 180m, secara langsung melaporkan pengecualian parsing
Pemrosesan sangat lambat ketika jumlah halaman PDF lebih dari 500 halaman
Kemudian, saya mencoba menggunakan PDF-Renderer versi 1.0.5
paket pdf; impor java.awt.image; impor java.awt.rectangle; impor java.awt.image.bufferedimage; impor java.io.file; impor java.io.fileoutputStream; impor java.io.ioException; impor java.io.randomaccessfile; impor java.nio.MappedByTeBuffer; impor java.nio.channels.filechannel; impor com.sun.image.codec.jpeg.jpegcodec; impor com.sun.image.codec.jpeg.jpegencodeparam; impor com.sun.image.codec.jpeg.jpegimageencoder; impor com.sun.pdfview.pdffile; impor com.sun.pdfview.pdfpage; Public Class PDFRenderer {public static void main (string [] args) melempar ioException {string pdfreaLepath = System.getProperty ("user.dir") + "/"+"zk.pdf"; File file = file baru (PDFreAlEpath); RandomAccessFile RAF = RandomAccessFile baru (file, "r"); Saluran FileChannel = raf.getChannel (); MappedByTeBuffer buf = channel.map (filechannel.mapmode.read_only, 0, channel.size ()); PDFFILE PDFFILE = PDFFILE BARU (BUF); untuk (int i = 1; i <= pdffile.getNumpages (); i ++) {PdfPage Page = PdFfile.getPage (i); Rectangle rect = rectangle baru (0, 0, ((int) page.getBbox () .getWidth ()), ((int) page.getBbox (). GetHeight ()))); Gambar img = page.getImage (rect.width, rect.height, rect, null, true, true); BufferedImage Tag = BufferedImage baru (rect.width, rect.height, bufferedimage.type_int_rgb); tag.getGraphics (). DrawImage (img, 0, 0, rect.width, rect.height, null); FileOutputStream out = FileOutputStream baru ("img" + file.separator + (i + 1) + ".jpg"); // output ke arsip stream jpegimageEncoder encoder = jpegcodec.createJpegencoder (out); Jpegencodeparam param2 = encoder.getDefaultJpegencodeparam (tag); param2.setquality (1f, false); // 1F adalah untuk meningkatkan encoder kualitas gambar yang dihasilkan.setjpegencodeparam (param2); encoder.encode (tag); // jpeg encoding out.close (); System.out.println ("Gambar di halaman ->"+(i+1)); }}}Tetapi masalahnya terletak pada masalah: ketika versi PDF tidak 1.4, kesalahan dilaporkan secara langsung: 'xref' yang diharapkan pada awal tabel
Dibandingkan dengan PDFBox, konversi jauh lebih efisien. PDF dengan sekitar 200 halaman membutuhkan waktu sekitar 6 kali lipat waktu yang dibutuhkan untuk yang terakhir. Pada saat yang sama, ada beberapa masalah dengan dukungan untuk font Cina.
Namun, tidak ada masalah bahwa versi PDF tidak dapat dikonversi.
PDFRenderer tidak dapat mengonversi 1.4 atau di atas versi. Saya menemukan solusinya tetapi tidak ditemukan.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.