บทความนี้แชร์รหัสเฉพาะสำหรับ Java เพื่อแปลง IMG และ PDF ให้กันและกันสำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมีดังนี้
หากคุณไม่เก่งในการแสดงออกเพียงโพสต์รหัสโดยตรง โปรดไม่สนใจฉัน
นำเข้า java.awt.image.bufferedimage; นำเข้า Java.io.ByTeArrayOutputStream; นำเข้า Java.io.File; นำเข้า Java.io.FileInputStream; นำเข้า Java.io.FileOutputStream; นำเข้า Java.io.InputStream; นำเข้า java.io.randomaccessFile; นำเข้า java.nio.bytebuffer; นำเข้า java.nio.channels.filechannel; นำเข้า java.util.map; นำเข้า java.util.map.entry; นำเข้า java.util.treemap; นำเข้า com.utils.imgfiletool; นำเข้า com.lowagie.text.document; นำเข้า com.lowagie.text.image; นำเข้า com.lowagie.text.rectangle; นำเข้า com.lowagie.text.pdf.pdfcopy; นำเข้า com.lowagie.text.pdf.pdfimportedPage; นำเข้า com.lowagie.text.pdf.pdfreader; นำเข้า com.lowagie.text.pdf.pdfwriter; นำเข้า com.sun.image.codec.jpeg.jpegcodec; นำเข้า com.sun.image.codec.jpeg.jpegimageencoder; นำเข้า com.sun.pdfview.pdffile; นำเข้า com.sun.pdfview.pdfpage; /** * * @author Hubiao * @datetime 2014-06-07 * เครื่องมือนี้ใช้การแปลงร่วมกันของ IMG และ PDF * ในการเรียกใช้การทดสอบคุณจะต้องนำเข้าแพ็คเกจ 2 ขวดต่อไปนี้ * itext-2.0.2.jar * pdfrenderer.jar * */@suppresswarnings ("ไม่ได้ใช้") คลาสสาธารณะ imgpdfutils {โมฆะคงที่สาธารณะ // pdf ถึง jpg // pdftojpg ("e: // java // data pdf // 1.pdf", "e: // java // data pdf // 1.jpg", 1); // รวม JPG หลายตัวลงในแพ็คเกจ PDF โดยตรง // ExtractionPdf ("F: // Temp // Project // data // dfdsfds // Biography ของนักเคลื่อนไหวของนักเคลื่อนไหวของ Paris Commune", "f: // temp // project // data // dfdsfds // Paris Communeistist Biography // jpg ถึง pdf // jpgtopdf (); // การเรียงลำดับไฟล์ // listorder (); imgfiletool.imgmeragetopdf (ไฟล์ใหม่ ("f: // temp // project // data // dfdsfds // Paris Commune Activistist Biographist ของนักเคลื่อนไหว" } Void listorder ส่วนตัวคงที่ () {file [] listfiles = ไฟล์ใหม่ ("f: // temp // project // data // dfdsfds // นักเคลื่อนไหว parising ใน paris_img"). listfiles (); treemap <จำนวนเต็ม, ไฟล์> tree = new treemap <จำนวนเต็ม, ไฟล์> (); สำหรับ (ไฟล์ f: listfiles) {tree.put (integer.parseint (f.getName (). replaceall (". jpg $", "")), f); } สำหรับ (รายการ <จำนวนเต็ม, ไฟล์> eif: tree.entryset ()) {system.out.println (eif.getKey ()+"="+eif.getValue (). toString ()); }} /*** @param list image collection* @param ไฟล์บันทึกพา ธ* @return จริงการผสานจะเสร็จสมบูรณ์* หากชื่อไฟล์ไม่ใช่ 1.JPG, 2.JPG, 3.JPG, 4.JPG คุณต้องเขียนวิธีการเรียงลำดับของ treemap ด้วยตัวเองใหม่! */Public Static Boolean ImgMeragetOpdf (ไฟล์ [] รายการไฟล์ไฟล์) พ่นข้อยกเว้น {// 1: เรียงลำดับไฟล์ภาพตามธรรมชาติตามชื่อผ่าน Treemap Map <จำนวนเต็ม, ไฟล์> mif = new Treemap <จำนวนเต็ม, ไฟล์> (); สำหรับ (ไฟล์ f: list) mif.put (integer.parseint (f.getName (). replaceall (". jpg $", "")), f); // 2: รับความกว้างและความสูงของ IMG แรกเป็นมาตรฐานสำหรับเอกสาร PDF ByteArrayOutputStream BAOS = ใหม่ ByteArrayOutputStream (2048*3); inputStream คือ = ใหม่ FileInputStream (mif.get (1)); สำหรับ (int len; (len = is.read ())! =-1;) baos.write (len); baos.flush (); Image image = image.getInstance (baos.tobytearray ()); ความกว้างลอย = image.width (); ความสูงลอย = image.height (); baos.close (); // 3: อินสแตนซ์เอกสารเอกสาร PDF ผ่านความกว้างและความสูง เอกสารเอกสาร = เอกสารใหม่ (สี่เหลี่ยมผืนผ้าใหม่ (ความกว้างความสูง)); pdfwriter pdfwr = pdfwriter.getInstance (เอกสาร, ใหม่ fileOutputStream (ไฟล์)); document.open (); // 4: รับไฟล์รูปภาพแต่ละไฟล์และแปลงเป็นวัตถุ IMG โหลดลงในวัตถุเอกสารสำหรับ (รายการ <จำนวนเต็ม, ไฟล์> eif: mif.entryset ()) {//4.1: อ่านลงในหน่วยความจำ baos = ใหม่ bytearrayoutputStream (2048*3); IS = ใหม่ FileInputStream (eif.getValue ()); สำหรับ (int len; (len = is.read ())! =-1;) baos.write (len); baos.flush (); //4.2 สร้างวัตถุ IMG ผ่านภาพไบต์ไบต์ = image.getInstance (baos.tobytearray ()); image.getInstance (baos.tobytearray ()); image.setabsoluteposition (0.0f, 0.0f); //4.3: เพิ่มลงใน document.add (รูปภาพ); document.newpage (); baos.close (); } // 5: ปล่อย Document.close (); pdfwr.close (); กลับมาจริง; } /**** @param แหล่งต้นฉบับไฟล์* @param เป้าหมายเป้าหมาย* @param x อ่านหน้าในไฟล์ต้นฉบับ* /โมฆะส่วนตัวคงที่ pdftojpg (แหล่งที่มาของสตริง, เป้าหมายสตริง, int x) โยนข้อยกเว้น {// สร้างสตรีมไฟล์การเข้าถึงแบบสุ่ม r หมายความว่ามันเป็นเพียงโหมดการเข้าถึง RandomAccessFile REA = new RandomAccessFile (ไฟล์ใหม่ (แหล่งที่มา), "R"); // อ่านสตรีมลงในหน่วยความจำจากนั้นแมปวัตถุ PDF FileChannel channel = rea.getChannel (); byteBuffer buf = channel.map (filechannel.mapmode.read_only, 0, channel.size ()); pdffile pdffile = new pdffile (buf); pdfpage หน้า = pdffile.getPage (x); // รับความกว้างและความสูงสำหรับเอกสารที่ซูมเริ่มต้น java.awt.rectangle rect = ใหม่ java.awt.rectangle (0, 0, (int) page.getBbox () .getWidth (), (int) page.getBbox (). getheight (); // สร้างภาพ java.awt.image img = page.getImage (rect.width, rect.height, // width & rect, // คลิป rect null, // null สำหรับ imageobserver จริง // เติมพื้นหลังด้วยสีขาวจริง // บล็อกจนวาด); 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 (เป้าหมาย); // เอาต์พุตไปยังสตรีมไฟล์ jpeGimageEncoder encoder = jpegCodec.createJpeGenCoder (out); encoder.encode (แท็ก); // jpeg เข้ารหัส out.close (); } /*** @param ต้นทางแหล่งที่มาของไฟล์ PDF* @param เป้าหมายบันทึกเส้นทางไฟล์ pdf* @param pagenum แยกหน้า pagenum ใน pdf* @throws ยกเว้น* /โมฆะส่วนตัวคงที่ pdfextraction (สตริงแหล่งที่มา System.out.println ("เอกสารนี้"+pr.getNumberOfPages ()+"หน้า"); // 2: แปลงหน้าหน้าเพื่อแยกและสร้างเอกสารเอกสารเอกสารเอกสารเอกสาร = เอกสารใหม่ (pr.getPagesize (pagenum)); // 3: แปลงเพื่อจัดเก็บแยกต่างหากผ่าน pdfcopy pdfcopy copy = new pdfcopy (doc, fileoutputstream ใหม่ (ไฟล์ใหม่ (เป้าหมาย))); doc.open (); Doc.NewPage (); // 4: รับหน้าแรกและโหลดลงในเอกสาร pdfimportedPage หน้า = copy.getImportedPage (pr, pagenum); Copy.addPage (หน้า); // 5: ปล่อยทรัพยากร copy.close (); doc.close (); pr.close (); } /*** @param pdffile แหล่งที่มาไฟล์ pdf* @param imgfile ไฟล์รูปภาพ* /โมฆะคงที่ jpgtopdf (ไฟล์ pdffile, ไฟล์ imgfile) โยนข้อยกเว้น {// ไฟล์ไปยัง IMG inputStream คือ = ใหม่ fileInputStream (pdffile); ByTeArrayOutputStream BAOS = New ByTeArrayOutputStream (); สำหรับ (int i; (i = is.read ())! =-1;) {baos.write (i); } baos.flush (); // รับความกว้างและความสูงของภาพ Image IMG = image.getInstance (baos.tobytearray ()); ความกว้างลอย = img.width (); ความสูงลอย = img.height (); img.setabsoluteposition (0.0f, 0.0f); // ยกเลิกระบบออฟเซ็ต Out.out.println ("width ="+width+"/theight"+ความสูง); // img ถึงเอกสารเอกสาร PDF = เอกสารใหม่ (สี่เหลี่ยมใหม่ (ความกว้าง, ความสูง)); pdfwriter pw = pdfwriter.getInstance (DOC, ใหม่ fileOutputStream (imgFile)); doc.open (); doc.add (img); // ปล่อยทรัพยากร System.out.println (doc.newpage ()); pw.flush (); baos.close (); doc.close (); pw.close (); -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น