Este artigo compartilha o código específico para Java converter IMG e PDF entre si para sua referência. O conteúdo específico é o seguinte
Se você não for bom em expressar, basta postar o código diretamente. Por favor, me ignore.
importar java.awt.image.bufferiMage; importar java.io.byteArrayOutputStream; importar java.io.file; importar java.io.fileInputStream; importar java.io.fileOutputStream; importar java.io.inputStream; importar java.io.randomaccessfile; importar java.nio.byteBuffer; importar java.nio.channels.FileChannel; importar java.util.map; importar java.util.map.entry; importar java.util.treemap; importação com.utils.imgfileTool; importação com.lowagie.text.document; importação com.lowagie.text.image; importação com.lowagie.text.rectangle; importação com.lowagie.text.pdf.pdfcopy; importação com.lowagie.text.pdf.pdfimportedPage; import com.lowagie.text.pdf.pdfreader; importação com.lowagie.text.pdf.pdfwriter; import com.sun.image.codec.jpeg.jpegcodec; import com.sun.image.codec.jpeg.jpegImageEncoder; importação com.sun.pdfview.pdffile; importação com.sun.pdfview.pdfpage; /** * * @Author Hubiao * @DateTime 2014-06-07 * Esta ferramenta implementa a conversão mútua de IMG e PDF. * Para executar o teste, você precisa importar os 2 pacotes de jar a seguir * iText-2.0.2.jar * pdfrenderer.jar * */@suppresswarnings ("não utilizado") classe public imgpdfutils {public static void main (string [] args) lança a exceção {// pdf Package Extract PDF // // pdf para jpg // pdftojpg ("e: // java // data pdf // 1.pdf", "e: // java // dados pdf // 1.jpg", 1); //Combine multiple jpgs directly into pdf packages//extractionPdf("F://temp//Project//Data//dfdsfds//Paris Commune Activist's Biography_img","F://temp//Project//Data//dfdsfds//Paris Commune Activist's Biography_img.pdf"); // jpg para pdf // jpgtopdf (); // classificação de arquivos // listorder (); Imgfiletool.imgmeragetopdf (novo arquivo ("f: // temp // projeto // data // dfdsfds // paris comuna ativista biography_img"). Listfiles (), novo arquivo ("par. // temp // project // data // dfdsfds //"; } private static void listorder () {file [] listfiles = new File ("f: // temp // projeto // data // dfdsfds // ativistas parizados em paris_img"). listfiles (); TreeMap <Inteiro, arquivo> árvore = novo Treemap <Integer, file> (); para (Arquivo F: ListFiles) {Tree.put (Integer.Parseint (f.getName (). Replaceall (". JPG $", ""), f); } para (entrada <inteiro, arquivo> eif: árvore.entryset ()) {system.out.println (eif.getKey ()+"="+eif.getValue (). tostring ()); }} /*** @param Lista de imagem Coleção* @param Salvar caminho* @return true, a mesclagem será concluída* se o nome do arquivo não for 1.jpg, 2.jpg, 3.jpg, 4.jpg. Você precisa reescrever o método de classificação de Treemap sozinho! */public estático boolean imgmerageTOPDF (lista de file [], arquivo de arquivo) lança Exceção {// 1: classifique naturalmente os arquivos de imagem pelo nome através do TreeMap map <Inteiro, arquivo> mif = new Treemap <Integer, arquivo> (); para (arquivo f: list) mif.put (Integer.parseInt (f.getName (). replacEall (". jpg $", "")), f); // 2: obtenha a largura e a altura do primeiro IMG como o padrão para documentos pdf bytearrayoutputStream baos = novo bytearrayoutputStream (2048*3); InputStream is = new FileInputStream (mif.get (1)); para (int len; (len = is.read ())! =-1;) baos.write (len); baos.flush (); Imagem imagem = imagem.getInstance (baos.tobytearray ()); largura de flutuação = imagem.width (); altura float = imagem.Height (); baos.close (); // 3: Instante o objeto de documento PDF por meio da largura e altura. Documento documento = novo documento (novo retângulo (largura, altura)); Pdfwriter pdfwr = pdfwriter.getInstance (documento, new FileOutputStream (FILE)); document.open (); // 4: Obtenha cada arquivo de imagem e converta -o em um objeto IMG. Carregue no objeto Document para (Entrada <Inteiro, FILE> EIF: MIF.ENTRYSET ()) {//4.1: Leia na memória Baos = novo bytearRayOutputStream (2048*3); is = new FileInputStream (eif.getValue ()); para (int len; (len = is.read ())! =-1;) baos.write (len); baos.flush (); //4.2 Gere o objeto IMG através do byte byte image = image.getInstance (baos.tobytearray ()); Image.getInstance (baos.tobytearray ()); image.setabsolutePosition (0,0F, 0,0F); //4.3: add ao document.add (imagem); document.newpage (); baos.close (); } // 5: libere o documento do recurso.close (); pdfwr.close (); retornar true; } /**** @Param Origem de origem de origem* @param Arquivo de destino de destino* @param x leia a página no arquivo de origem* /private estático void pdftojpg (fonte da string, string alvo, int x) lança exceção {// cria um fluxo de arquivo de acesso aleatório e grava (opcional) para ele. R significa que é apenas um modo de acesso a ele. RandomAccessFile rea = novo RandomAccessFile (novo arquivo (fonte), "r"); // Leia o fluxo na memória e mapeie um canal PDF Object FileChannel = rea.getChannel (); Bytebuffer buf = canal.map (filechannel.mapmode.read_only, 0, canal.size ()); Pdffile pdffile = novo pdffile (buf); PDFPAGE PAGE = PDFFILE.GETPAGE (X); // Obtenha a largura e a altura do documento no zoom padrão java.awt.rectangle ret = new java.awt.rectangle (0, 0, (int) Page.getBbox () .getwidth (), (int) página.getBbox (). getheight ()); // Gere a imagem java.awt.image img = page.getImage (rect.width, rect.Height, // width & ret, // clip ret null, // nulo para o imageobserver true, // preenche o fundo com bloco true // branco até que o desenho seja feito); Tag bufferiMage = new bufferImage (ret.width, ret.height, bufferImage.type_int_rgb); tag.getgraphics (). drawImage (img, 0, 0, rect.width, ret.height, null); FileOutputStream Out = new FileOutputStream (Target); // saída para fluxo de arquivo jpegImageEncoder coder = jpegcodec.createjpegencoder (out); coder.encode (tag); // jpeg coding Out.close (); } /*** @param fonte de origem PDF Caminho* @param alvo Salvar caminho do arquivo pdf* @param pagenum Extrair a página de pagenum em pdf* @throws exceção* /private estático void pdfextraction (fonte de string, alvo de string, int pagenum) lança exceção {// 1: criar PDF Object Pp Pri System.out.println ("Este documento"+pr.getNumberOfPages ()+"Page"); // 2: converta a página para extrair e criar o documento documento documento doc = novo documento (pr.getPagesize (pagenum)); // 3: converta -o para armazená -lo separadamente através do PDFCOPY PDFCOPY COPY = novo PDFCOPY (DOC, new FileOutputStream (novo arquivo (Target))); doc.open (); doc.newpage (); // 4: Obtenha a primeira página e carregue -a no documento. PDFIMPORTEDPAGE PAGE = COPY.GETIMPORTEDPAGE (PR, PAGENUM); copy.addpage (página); // 5: libere o recurso copy.close (); doc.close (); pr.close (); } /*** @param pdffile File pdf* @param imgfile file de imagem* /private static void jpgtopdf (arquivo pdffile, arquivo imgfile) lança exceção {// arquivo para img inputStream is = new FileInputStream (pdffile); ByteArrayOutputStream baos = new ByteArrayOutputStream (); para (int i; (i = is.read ())! =-1;) {Baos.Write (i); } baos.flush (); // Obtenha a largura e a altura da imagem. Imagem img = imagem.getInstance (baos.tobytearray ()); largura de flutuação = img.width (); altura float = img.Height (); img.setabsolutePosition (0,0f, 0,0f); // cancelar o offset system.out.println ("width ="+width+"/theight"+altura); // IMG para PDF Document Doc = novo documento (novo retângulo (largura, altura)); Pdfwriter pw = pdfwriter.getInstance (doc, new FileOutputStream (imgfile)); doc.open (); doc.add (img); // Libere o recurso System.out.println (doc.newPage ()); pw.flush (); baos.close (); doc.close (); pw.close (); }}O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.