이 기사는 Java가 참조를 위해 IMG 및 PDF를 서로 변환 할 수있는 특정 코드를 공유합니다. 특정 내용은 다음과 같습니다
표현에 능숙하지 않다면 코드를 직접 게시하십시오. 나를 무시하십시오.
java.awt.image.bufferedimage import; import java.io.BytearRayoutputStream; import java.io.file; import java.io.fileInputStream; import java.io.fileoutputStream; import java.io.inputstream; import java.io.randomaccessfile; import java.nio.bytebuffer; import java.nio.channels.filechannel; java.util.map import; Java.util.map.entry 가져 오기; Java.util.treemap import; import com.utils.imgfiletool; com.lowagie.text.document import; 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 *이 도구는 IMG 및 PDF의 상호 변환을 구현합니다. * 테스트를 실행하려면 다음 2 개의 JAR 패키지를 가져와야합니다. * itext-2.0.2.jar * pdfrenderer.jar */@suppresswarnings ( "Unused") 공개 클래스 IMGPDFUTILS {public static void main (String) 예외 {// pdf 패키지 추출 pdf // pdfextraction (); // pdf to jpg // pdftojpg ( "e : // java // data pdf // 1.pdf", "e : // java // data pdf // 1.jpg", 1); // 여러 JPG를 PDF 패키지로 직접 결합 // extractionpdf ( "f : // temp // data // dfdsfds // Paris Commune Activist 's Biography_img", "f : // temp // project // dfdsfds // Paris Commune 활동가의 전기 _img.pdf"); // jpg to pdf // jpgtopdf (); // 파일 정렬 // listorder (); imgfiletool.imgmeragetopdf (새 파일 ( "f : // temp // project // data // dfdsfds // Paris Commune Activist 's Biography_img"). listfiles (), 새 파일 ( "f : // temp // data // dfdsfds //", paris.pdf "))) } private static void listorder () {file [] listfiles = new File ( "f : // temp // data // dfdsfds // paris_img의 parised 활동가"). listfiles (); treemap <integer, file> tree = new Treemap <Integer, file> (); for (file f : listfiles) {tree.put (integer.parseint (f.getname (). replaceall ( ". jpg $", "), f); } for (Entry <integer, file> eif : tree.entryset ()) {system.out.println (eif.getKey ()+"="+eif.getValue (). toString ()); }} /*** @param 목록 이미지 수집* @param 파일 저장 경로* @return true* merge가 완료됩니다* 파일 이름이 1.jpg, 2.jpg, 3.jpg, 4.jpg가 아닌 경우. Treemap의 분류 방법을 직접 작성해야합니다! */public static boolean imgmeragetopdf (파일 [] 목록, 파일 파일) 예외 {// 1 : 자연스럽게 이미지 파일을 treemap 맵 <integer, file> mif = new treemap <integer, file> (); for (file f : list) mif.put (integer.parseint (f.getname (). replaceall ( ". jpg $", ""), f); // 2 : PDF 문서의 표준으로 첫 번째 IMG의 너비와 높이를 가져옵니다. inputStream은 = 새로운 fileInputStream (mif.get (1)); for (int len; (len = is.read ())! = -1;) baos.write (len); baos.flush (); 이미지 이미지 = image.getInstance (baos.tobytearray ()); float width = image.width (); float height = image.height (); baos.close (); // 3 : 폭과 높이를 통해 PDF 문서 개체를 인스턴스화합니다. 문서 문서 = 새 문서 (새로운 사각형 (너비, 높이)); pdfwriter pdfwr = pdfwriter.getInstance (document, new FileOutputStream (file)); document.open (); // 4 : 각 이미지 파일을 가져 와서 IMG 객체로 변환합니다. (Entry <integer, file> eif : mif.entryset ()) {//4.1 : 메모리 BAOS = New ByTearRayoutputStream (2048*3)에 대한 문서 개체에로드; is = new FileInputStream (eif.getValue ()); for (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 (image)에 추가; document.newpage (); baos.close (); } // 5 : 리소스 문서를 릴리스합니다 .Close (); pdfwr.close (); 진실을 반환하십시오. } /**** @param 소스 소스 파일* @param 대상 대상 파일* @param x 소스 파일에서 페이지를 읽습니다* /private static void pdftojpg (문자열 소스, 문자열 target, int x) 예외 {// 랜덤 액세스 파일 스트림 생성 (선택 사항). R은 액세스 모드 일뿐임을 의미합니다. randomaccessfile rea = new randomaccessfile (새 파일 (소스), "r"); // 스트림을 메모리로 읽은 다음 PDF 객체 FilEchannel 채널 = rea.getChannel (); ByteBuffer buf = channel.map (filechannel.mapmode.read_only, 0, channel.size ()); pdffile pdffile = 새로운 pdffile (buf); pdfpage page = pdffile.getPage (x); // 기본 Zoom java.awt.rectangle rect = new 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, // clip rect null, // imageObserver의 경우 null, // 흰색 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 = 새 FileOutputStream (대상); // 파일 스트림으로 출력 jpegimageEncoder encoder = jpegcodec.createjpegencoder (out); encoder.encode (tag); // jpeg encoding.close (); } /*** @param 소스 소스 PDF 파일 경로* @Param Target PDF 파일 경로 저장* @Param Pagenum PDF* @throws 예외* /개인 정적 void pdfextraction (문자열 소스, 문자열 target, int pagenum)을 추출한 pdf 객체 pdfreader pr = new pdfreader (source); System.out.println ( "이 문서"+pr.getNumberOfPages ()+"page"); // 2 : 페이지 페이지를 변환하여 문서 개체를 추출하고 만듭니다. 문서 doc = 새 문서 (pr.getPagesize (pagenum)); // 3 : pdfcopy pdfcopy copy = new pdfcopy (doc, new fileoutputStream (새 파일 (target)))을 통해 별도로 저장하도록 변환합니다. doc.open (); doc.newpage (); // 4 : 첫 페이지를 가져 와서 문서에로드하십시오. pdfimportedPage page = copy.getImportedPage (pr, pagenum); copy.addpage (페이지); // 5 : resource copy.close ()를 해제합니다. doc.close (); pr.close (); } /*** @param pdffile 소스 pdf 파일* @param imgfile 사진 파일* /개인 정적 void jpgtopdf (file pdffile, file imgfile) 예외 {// img inputstream is = new FileInputStream (pdffile); BytearRayoutputStream Baos = 새로운 BytearRayoutputStream (); for (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); // 오프셋 시스템을 취소합니다. // pdf to pdf 문서 doc = 새 문서 (새로운 사각형 (너비, 높이)); pdfwriter pw = pdfwriter.getInstance (doc, new FileOutputStream (imgfile)); doc.open (); doc.add (IMG); // resource system.out.println (doc.newpage ())를 릴리스합니다. pw.flush (); baos.close (); doc.close (); pw.close (); }}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.