تشارك هذه المقالة الكود المحدد لـ 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 {public static void main (string [] // pdf to jpg // pdftojpg ("e: // java // data pdf // 1.pdf" ، "e: // java // data pdf // 1.jpg" ، 1) ؛ // الجمع بين JPGs متعددة مباشرة في حزم PDF // extractionpdf ("f: // temp // project // data // dfdsfds // paris commune communive suction_img" ، "f: // temp // project // data // dfdsfds // paris commune communive biography_img.pdf") ؛ // jpg to pdf // jpgtopdf () ؛ // file sorting // listorder () ؛ imgfiletool.imgmeragetopdf (ملف جديد ("f: // temp // project // data // dfdsfds // paris commune's stopulty biography_img"). listfiles () ، ملف جديد ("f: // temp // project // data // dfdsfds //" ، "parisist paris.pdf") ؛ } private static void listorder () {file [] listfiles = file new ("f: // temp // project // data // dfdsfds // parysistists in paris_img"). listfiles () ؛ treemap <integer ، file> tree = new treemap <integer ، file> () ؛ لـ (file f: listfiles) {tree.put (integer.parseint (f.getName (). replaceall (". jpg $" ، "")) ، f) ؛ } لـ (الإدخال <integer ، file> eIF: tree.entryset ()) {system.out.println (eif.getKey ()+"="+eif.getValue (). toString ()) ؛ }} /*** @param مجموعة صورة صورة* param file save path* return true ، يتم الانتهاء من الدمج* إذا لم يكن اسم الملف 1.jpg ، 2.jpg ، 3.jpg ، 4.jpg. تحتاج إلى إعادة كتابة طريقة الفرز لـ Treemap بنفسك! */public static boolean imgmeragetopdf (file [] list ، file file) يلقي الاستثناء {// 1: بشكل طبيعي فرز ملفات الصورة بالاسم من خلال خريطة treemap <integer ، file> mif = new treemap <integer ، file> () ؛ لـ (file f: list) mif.put (integer.parseint (f.getName (). replaceall (". jpg $" ، "")) ، f) ؛ // 2: احصل على عرض وارتفاع IMG الأول كمعيار لمستندات PDF bytearrayoutputstream BAOS = New ByTearRayoutputStream (2048*3) ؛ inputStream هو = جديد fileInputStream (mif.get (1)) ؛ لـ (int len ؛ (len = is.read ())! =-1 ؛) baos.write (len) ؛ baos.flush () ؛ صورة صورة = image.getInstance (baos.tobytearray ()) ؛ عرض التعويم = Image.width () ؛ ارتفاع تعويم = Image.Height () ؛ Baos.Close () ؛ // 3: كائن مستند PDF مثبت من خلال العرض والارتفاع. وثيقة المستند = مستند جديد (مستطيل جديد (العرض ، الارتفاع)) ؛ pdfwriter pdfwr = pdfwriter.getInstance (وثيقة ، fileOutputStream (ملف جديد)) ؛ document.open () ؛ // 4: احصل على كل ملف صورة وقم بتحويله إلى كائن IMG. تحميل في كائن المستند لـ (إدخال <integer ، file> eIF: mif.entryset ()) {//4.1: اقرأ في الذاكرة baos = new BytearRayoutputStream (2048*3) ؛ هو = جديد fileInputStream (eIF.GetValue ()) ؛ لـ (int len ؛ (len = is.read ())! =-1 ؛) baos.write (len) ؛ baos.flush () ؛ //4.2 إنشاء كائن IMG من خلال Byte Byte Image = Image.getInstance (Baos.TobyTearRay ()) ؛ Image.getInstance (baos.tobytearray ()) ؛ image.setabsoluteposition (0.0F ، 0.0F) ؛ //4.3: إضافة إلى document.add (Image) ؛ document.newpage () ؛ Baos.Close () ؛ } // 5: refer the Resource Document.Close () ؛ pdfwr.close () ؛ العودة صحيح. } /**** @Param Source Source File* ملف الهدف الهدف* Param* param x اقرأ الصفحة في الملف المصدر* /private static void pdftojpg (مصدر السلسلة ، هدف السلسلة ، 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 صفحة = pdffile.getPage (x) ؛ // احصل على العرض والارتفاع للمستند في Zoom 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.hight ، // width & rect ، // clip rect null ، // null for imageObserver true ، // املأ خلفية بالأبيض/ block حتى يتم الرسم) ؛ علامة bufferedImage = جديد bufferedImage (rect.width ، rect.hight ، bufferedImage.type_int_rgb) ؛ tag.getGraphics (). drawImage (img ، 0 ، 0 ، rect.width ، rect.Height ، null) ؛ FileOutputStream Out = new FileOutputStream (Target) ؛ // الإخراج إلى ملف تدفق jpegimageencoder encoder = jpegcodec.createjpegencoder (out) ؛ Encoder.encode (tag) ؛ // JPEG الترميز Out.Close () ؛ } /*** Param Source Source Path PDF PATH* PARAM TARGER SAVE PDF PATH PATH* PARAM PAGENUM استخراج صفحة PAGENUM في PDF* THROWS استثناء* /Private Static void pdfextraction (مصدر السلسلة ، سلسلة int ، int pagenum) استثناء {// 1: إنشاء كائن قراءة pdf pdfreader System.out.println ("هذا المستند"+pr.getNumberOfPages ()+"page") ؛ // 2: قم بتحويل صفحة الصفحة لاستخراج وإنشاء مستند مستند مستند المستند = مستند جديد (PR.GetPagesize (Pagenum)) ؛ . doc.open () ؛ doc.newpage () ؛ // 4: احصل على الصفحة الأولى وقم بتحميلها في المستند. pdfimportedPage صفحة = copy.getImportedPage (PR ، pagenum) ؛ copy.addPage (صفحة) ؛ // 5: refer the Resource Copy.Close () ؛ Doc.Close () ؛ Pr.Close () ؛ } /*** param pdffile Source PLEF FILE* PARAM IMGFILE PICTURE* /private static void jpgtopdf (file pdffile ، file imgfile) يلقي استثناء {// file to img inputStream is = new FileInputStream (pdffile) ؛ bytearrayoutputstream baoS = جديد 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) ؛ // إلغاء الإزاحة نظام. // img to pdf docum doc = مستند جديد (مستطيل جديد (العرض ، الارتفاع)) ؛ pdfwriter pw = pdfWriter.getInstance (doc ، fileOutputStream (imgfile)) ؛ doc.open () ؛ Doc.add (IMG) ؛ // refer the Resource System.out.println (doc.newpage ()) ؛ pw.flush () ؛ Baos.Close () ؛ Doc.Close () ؛ pw.close () ؛ }}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.