この記事では、参照のためにIMGとPDFを相互に変換するためのJavaの特定のコードを共有しています。特定のコンテンツは次のとおりです
表現が得意でない場合は、コードを直接投稿するだけです。私を無視してください。
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つのJARパッケージをインポートする必要があります * itext-2.0.2.jar * pdfrenderer.jar * */@suppresswarnings( "unused")public class imgpdfutils {emgpdfutils { // pdf to jpg // pdftojpg( "e:// java // data pdf // 1.pdf"、 "e:// java // data pdf // 1.jpg"、1); //複数のJPGをPDFパッケージに直接結合します// jpg to pdf // jpgtopdf(); //ファイルソート//命令(); imgfiletool.imgmeragetopdf(new file( "f:// temp // project // data // dfdsfds // paris commune activist's biography_img")。リストファイル()、新しいファイル( "f:// temp // project // data // dfdsfds ////// } private static void命令(){file [] listfiles = new file( "f:// temp // project // data // dfdsfds // paris_img")。リストファイル(); treemap <integer、file> tree = new Treemap <integer、file>(); for(file f:listfiles){tree.put(integer.parseint(f.getname()。facteall( "。jpg$"、 ""))、f); } for(entry <integer、file> eif:tree.entryset()){system.out.println(eif.getKey()+"="+eif.getValue()。toString()); }} /*** @paramリスト画像コレクション* @paramファイルSave Path* @return true、Mergeが完了します*ファイル名が1.jpg、2.jpg、3.jpg、4.jpgでない場合。自分でツリーマップのソート方法を書き直す必要があります! */public static boolean imgmeragetopdf(file [] list、file file)をスローする例外{// 1:Treemap Map <integer、file> mif = new Treemap <integer、file>(); for(file f:list)mif.put(integer.parseint(f.getName()。appleanceall( "。JPG$"、 ""))、f); // 2:PDFドキュメントの標準として最初のIMGの幅と高さを取得しますbytearrayoutputStream baos = new bytearrayoutputStream(2048*3); inputstream is = new 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ドキュメントオブジェクトをインスタンス化します。 document document = new Document(new Rectangle(width、height)); 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 = 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(); trueを返します。 } /**** @paramソースファイル* @paramターゲットファイル* @param xソースファイルのページを読み取ります* /private static void pdftojpg(string source、string target、int x)throws exception {//ランダムアクセスファイルストリーム(オプション)を作成します(オプション)。 rは、それが単なるアクセスモードであることを意味します。 randomAccessFile rea = new RandomAccessFile(new File(source)、 "r"); //ストリームをメモリに読み取り、PDFオブジェクトFileChannel Channel = Rea.GetChannel()をマッピングします。 bytebuffer buf = channel.map(filechannel.mapmode.read_only、0、channel.size()); pdffile pdffile = new pdffile(buf); pdfpage page = pdffile.getPage(x); //デフォルトのZoom Java.awt.RectangleRect = new Java.awt.Rectangle(Int)Page.getBbox().getWidth()、(int)page.getbbox()。getheight()); //画像を生成java.awt.image img = page.getimage(rect.width、rect.height、// width&rect、// clip rect null、// null for imageobserver 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(ターゲット); // jpegimageencoder encoder = jpegcodec.createjpegencoder(out); encoder.encode(tag); // jpeg encoding out.close(); } /*** @paramソースPDFファイルパス* @paramターゲットPDFファイルパスを保存* @param pagenum抽出pdf* @throws例外* /private static void pdfextraction(string source、string target、int pagenum)スロー例外{// System.out.println( "このドキュメント"+pr.getNumberOfPages()+"page"); // 2:ページページを抽出して作成して作成しますdocume doc = new Document(pr.getPagesize(pagenum)); // 3:pdfcopyを介して個別に保存するように変換しますpdfcopy copy = new PDFCopy(doc、new fileoutputStream(new File(ターゲット))); doc.open(); doc.newpage(); // 4:最初のページを取得してドキュメントにロードします。 pdfimportedpage page = copy.getimportedPage(PR、Pagenum); copy.addpage(ページ); // 5:リソースコピーをリリースします。close(); doc.close(); pr.close(); } /*** @param pdffileソースpdfファイル* @param imgfile画像ファイル* /private static void jpgtopdf(file pdffile、file imgfile)スロー例外{// inputstreamへのファイルは= new fileinputStream(pdffile); bytearrayoutputStream baos = new bytearrayoutputStream(); for(int i;(i = is.read())!= -1;){baos.write(i); } baos.flush(); //画像の幅と高さを取得します。 Image IMG = image.getInstance(baos.tobytearray()); float width = img.width(); float height = img.height(); img.setabsoluteposition(0.0f、0.0f); // cancel offset system.out.println( "width ="+width+"/theight"+height); // IMGからPDFドキュメントdoc = new Document(new Rectangle(width、height)); pdfwriter pw = pdfwriter.getInstance(doc、new fileoutputStream(imgfile)); doc.open(); doc.add(img); //リソースSystem.out.println(doc.newpage())をリリースします。 pw.flush(); baos.close(); doc.close(); pw.close(); }}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。