تقدم هذه المقالة بشكل أساسي تنفيذ Java لمعاينة المرفقات ، والتي تتطلب OpenOffice و Swftools و Flexpaper. الخطوات المحددة هي كما يلي:
1. نظرة عامة
المبادئ الرئيسية
1. تحويل الكلمة ، Excel ، PPT ، TXT والملفات الأخرى إلى ملفات PDF من خلال أداة الطرف الثالث OpenOffice
2. تحويل ملف PDF إلى ملف تنسيق SWF من خلال Swftools
3. عرض على الصفحة من خلال مكون مستند Flexpaper
2. قم بتنزيل حزمة التثبيت
1. OpenOffice هو برنامج معالجة النصوص مفتوح ومجاني تحت Apache
تنزيل العنوان: Apache Oppenoffice الرسمي ، نسخة تنزيل - 3.4.1 http://www.openoffice.org/zh-cn/download/
2. Swftools هي مجموعة من مجموعات الأدوات المستخدمة لمعالجة ملفات SWF من الفلاش. نستخدمه لتحويل ملفات PDF إلى ملفات SWF!
عنوان التنزيل: موقع Swftools الرسمي تنزيل Swftools-2013-04-09-1007.exe http://www.swftools.org/download.html
3. Flexpaper هو مكون مفتوح المصدر خفيف الوزن يعرض مستندات مختلفة على المتصفح.
تنزيل العنوان: موقع Flexpaper الرسمي تنزيل الإصدار 1.5.1 https://flowpaper.com/download/
4.JodConverter محول ملف Java Opendocument ، حيث نستخدم فقط حزمة JAR الخاصة به
تنزيل العنوان: jodcconverter تنزيل https://sourceforge.net/projects/jodconverter/files/
3. قم بتثبيت الملف
1. قم بتثبيت الملف الذي تم تنزيله (باستثناء JodConverter) ، ويمكن ضبط خطاب محرك الأقراص كما تريد! تجدر الإشارة إلى أنه بعد اكتمال تثبيت OpenOffice ، عندما نستخدمه ، نحتاج إلى فتح خدمته. ثم نحتاج إلى فتحه في الأمر:
افتح نافذة DOS ، وأدخل خطاب محرك OpenOffice Installation ، وأدخل الرمز التالي لبدء الخدمة:
software -lesslless -accept = "socket ، host = 127.0.0.1 ، port = 8100 ؛ urp ؛" -nofirststartwizard
انتبه إلى "-" أمام الأمر الأخير ، لا تكتبه خطأ! إذا لم تتمكن من الحصول على خدمة ، فلن يتمكن المشروع من المتابعة.
لقطة شاشة خدمة إطلاق الموقع الرسمي هي كما يلي:
لقطة الشاشة المحلية:
3. عملية التنمية
1. قم بإنشاء مشروع جديد ونسخ مجلد JS في ملف Flexpaper (بما في ذلك Flexpaper_Flash_debug.js ، flexpaper_flash.js ، jquery.js ، هذه ملفات JS الثلاثة هي الإضافات بشكل أساسي لمعاينة ملفات SWF) إلى دليل جذر الموقع ؛ Copy FlexPaperViewer.swf إلى دليل جذر موقع الويب (يتم استخدام الملف بشكل أساسي كلاعب يلعب ملفات SWF على صفحات الويب). هيكل الدليل كما يلي:
ملاحظة: تحتاج إلى إنشاء مجلد تحميل
2. إنشاء fileUpload.jsp
<٪@ page language = "java" contentType = "text/html ؛ charset = utf-8" pageencoding = "utf-8" ٪> <! <html> <head> <meta http-equiv = "content-type" content = "text/html ؛ charset = utf-8"> <title> document online system </title> <style> body {margin-top: 100px ؛ background: #fff ؛ font-family: verdana ، tahoma ؛ #CE4614 ؛ Font-Size: 0.9em ؛ text-align: center ؛} #msg-box .logo {border-bottom: 5px solid #ece5d9 ؛ margin-bottom: 20px ؛ padding-bottom: 10px ؛} #msg-box .title {font-size: 1.4em ؛ {margin-top: 20px ؛} </style> </head> <body> <div id = "msg-box"> <form name = "form1" method = "post" enctype = "multipart/form-data" Action = "docuploadConvertaction.jsp"> <viv> يرجى تحميل الملف للمعالجة. قد تستغرق العملية عدة دقائق. من فضلك انتظر لحظة. </viv> <p> <input name = "file1" type = "file"> </p> <p> <input type = "submit" name = "subvice" value = "topload"> </p> </pump> </viv> </body> </html> 3. إنشاء صفحة تحويل docuploadconvertaction.jsp
<٪@page language = "java" contentType = "text/html ؛ charset = utf-8" pageencoding = "utf-8" ٪> <٪@page import = "java.io. import = "com.oreilly.servlet.multipart.defaultfilerenamepolicy" ٪> <٪@page import = "com.cectsims.Util.docConverter" ٪> <٪@page import = "com.cectsims.util.docconverter" ٪> مكون COS ، والذي يمكن استبداله بتحميل المشاع filepload. بعد تحميل الملف ، احفظه في مجلد التحميل // احصل على سلسلة مسار تحميل الملف SAVEDIRECTORY = application.getRealPath ("/")+"Topload" ؛ // طباعة نظام معلومات مسار التحميل. // كل ملف كحد أقصى 50 مترًا int maxpostsize = 50 * 1024 * 1024 ؛ // استخدم استراتيجية التسمية الافتراضية لـ COS ، إضافة 1 ، 2 ، 3 بعد الاسم المكرر ... إذا لم تضيف DFP واسم مكررة ، فسيقوم بإفراط في كتابة DefaultFilerenamePolicy DFP = New DefaultFilerenamePolicy () ؛ // ترميز الاستجابة هو "UTF-8" ، ويتم استخدام استراتيجية دقة تعارض اسم الملف الافتراضي لتنفيذ التحميل. إذا لم تتم إضافة اسم مكرر DFP ، فسيتم الكتابة على multiredrequest. multirequest multi = multirerequest جديد (طلب ، saveirectory ، maxpostsize ، "UTF-8" ، DFP) ؛ // multirequest multi = multirequest جديد (طلب ، SaveIrectory ، maxpostsize ، "UTF-8") ؛ // إخراج ملفات معلومات التعليق = multi.getFilenames () ؛ بينما (files.hasmoreElements ()) {system.err.println ("CCC") ؛ اسم السلسلة = (سلسلة) files.nextElement () ؛ ملف f = multi.getFile (name) ؛ if (f! = null) {string filename = multi.getFileSystemName (name) ؛ // احصل على امتداد سلسلة الملفات التي تم تحميلها extName = fileName.SubString (filename.lastindexof (".")+1) ؛ // file path path string lastFilename = SaveDirectory + "//" + filename ؛ // احصل على اسم الملف الذي يحتاج إلى تحويله ، واستبداله "/" في اسم المسار بـ "/" string convertfilename = saveedirectory.replaceall ("///" ، "/")+"/"+filename ؛ system.out.println (converfilename) ؛ // استدعاء DocConverter فئة التحويل وقم بتمرير الملف المراد تحويله إلى مُنشئ هذا الفئة docconverter d = new docconverter (converfilename) ؛ // استدعاء طريقة التحويل لبدء التحويل ، قم أولاً بتنفيذ doc2pdf () لتحويل ملف Office إلى PDF ؛ ثم تنفيذ PDF2SWF () لتحويل PDF إلى SWF ؛ D.Conver () ؛ // cell getswfpath () method وطبع نظام مسار ملف SWF المحول. // إنشاء مسارات SWF النسبية لتمريرها إلى سلسلة Player Flexpaper SWFPATH = "Upload"+D.GetSwfPath (). substring (d.getswfpath (). lastIndexof ("/")) ؛ System.out.println (SWFPath) ؛ // ضع المسار النسبي في Session.setAttribute ("SWFPath" ، SWFPath) ؛ Out.println ("ملف تم تحميله:"+lastFilename) ؛ Out.println ("نوع الملف"+extName) ؛ out.println ("<hr>") ؛ }} ٪> <! doctype html public "-// w3c // dtd html 4.01 transitional // en" "http://www.w3.org/tr/html4/loose.dtd"> charset = utf-8 "> <title> insert title هنا </title> <style> body {margin-top: 100px ؛ الخلفية: #fff ؛ font-family: verdana ، tahoma ؛} a {color: #ce4614 ؛} #msg-box {color: #ce4614 ؛ Font-Size: 0.9em ؛ text-align: center ؛} #msg-box .logo {border-bottom: 5px solid #ece5d9 ؛ margin-bottom: 20px ؛ padding-bottom: 10px ؛} #msg-box .title {font-size: 1.4em ؛ {margin-top: 20px ؛} </style> </head> <body> <viv> <name form = "viewform" id = "form_swf" Action = "documentView.jsp" method = "post"> <input type = 'submit' value = 'Preview' class = 'button' إنشاء عرض صفحة documentView.jsp
<٪@ page language = "java" contentType = "text/html ؛ charset = utf-8" pageencoding = "utf-8" ٪> <٪ swffilepath = session.getattribute ("swfpath"). tostring () ؛ ٪> <! doctype html public "-// w3c // dtd html 4.01 transitional // en" "http://www.w3 <script type = "text/javaScript" src = "js/jquery.js"> </script> <script type = "text/javaScript" src = "js/flexpaper_flash.js type = "text/css" media = "screen"> html ، body {height: 100 ٪ ؛ } body {margin: 0 ؛ الحشو: 0 ؛ الفائض: السيارات ؛ } #flashContent {display: none ؛ } </style> <title> مستند معاينة نظام المعاينة عبر الإنترنت </title> </head> <body> <div style = "الموضع: المطلق ؛ اليسار: 50px ؛ top: 10px ؛"> <a id = "viewerplaceholder"> </a> <script type = "text/javaScript" الهروب ('<٪ = swffilepath ٪>') ، المقياس: 0.6 ، Zoomtransition: 'Easeout' ، Zoomting: 0.5 ، Zoominterval: 0.2 ، fitpageOnload: true ، fitwidthonload: false ، fullscreenasmaxwindow: false ، progressIsloading: false ، minzooms: 0.2 ، "صفحة واحدة" ، ViewModetoolSvisible: True ، ZoomtoolSvisible: True ، Navtoolsvisible: True ، CursortoolSvisible: True ، SearchToolSvisible: True ، Localechain: 'en_us'}}) ؛ </script> </viv> </body> </html> 5. إنشاء فئة التحويل docconverter.java
حزمة com.cectsims.util ؛ استيراد java.io.bufferedInputStream ؛ استيراد java.io.file ؛ استيراد java.io.ioException ؛ استيراد java.io.inputstream ؛ استيراد com.artofsolving.jodconverter.documentConverter ؛ استيراد com.artofsolving.jodconverter.openoffice.connection.openofficeConnection ؛ استيراد com.artofsolving.jodconverter.openoffice.connection.socketopenofficeConnection ؛ استيراد com.artofsolving.jodconverter.openoffice.converter.openofficeTocumentOctionConverter ؛ / *** تحويل تنسيق DOC DOCX*/ DOCCONVERTER من الفئة العامة {بيئة int الثابتة الخاصة = 1 ؛ // البيئة 1: Windows 2: Linux Private String Filestring ؛ // (لا يتضمن سوى مشكلات مسار PDF2SWF) String String Private = "" ملف خاص pdffile ؛ ملف خاص swffile ؛ الملف الخاص docfile ؛ docconverter العامة (سلسلة filestring) {ini (filestring) ؛ } / ** * إعادة تعيين ملف * * param filestring * / public void setFile (سلسلة filestring) {ini (filestring) ؛ } / ** * تهيئة * * param filestring * / private void ini (سلسلة filestring) {this.filestring = filestring ؛ filename = filestring.substring (0 ، filestring.lastindexof (".")) ؛ docfile = ملف جديد (Filestring) ؛ pdffile = ملف جديد (اسم الملف + ".pdf") ؛ swffile = ملف جديد (اسم الملف + ".swf") ؛ } / ** * تحويل إلى pdf * * param file * / private void doc2pdf () يلقي الاستثناء {if (docfile.exists ()) {if (! pdffile.exists ()) {OpenOfficEconnection Connection = new socketopenofficeConnection (8100) ؛ حاول {connection.connect () ؛ DocumentConverter Converter = جديد OpenOfficeTocumentConverter (اتصال) ؛ converter.convert (docfile ، pdffile) ؛ // أغلق اتصال connection.disconnect () ؛ System.out.println ("**** pdf تحويل ناجح ، PDF الإخراج:" + pdffile.getPath () + "****") ؛ } catch (java.net.connectexception e) {E.PrintStackTrace () ؛ System.out.println ("**** استثناء محول SWF ، لم تبدأ خدمة OpenOffice! ****") ؛ رمي ه ؛ } catch (com.artofsolving.jodconverter.openoffice.connection.openofficeException e) {E.PrintStackTrace () ؛ System.out.println ("**** SWF Converter استثناء ، فشل قراءة ملف التحويل ****") ؛ رمي ه ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ رمي ه ؛ }} آخر {system.out.println ("**** تم تحويله إلى pdf ، لا يلزم تحويل ****") ؛ }} آخر {system.out.println ("**** استثناء محول SWF ، فإن المستند الذي يجب تحويله غير موجود ، ولا يمكن تحويله ****") ؛ }} / ** * تحويل إلى SWF * / suppressWarnings ("غير مستخدم") private void pdf2swf () rems {runtime r = runtime.getRuntime () ؛ if (! swffile.exists ()) {if (pdffile.exists ()) {if (البيئة == 1) {// معالجة بيئة Windows Try {Process p = R.Exec ("d:/program files/swftools/pdf2swf.exe" + pdffile.getpath () + "-o" -o ". system.out.print (loadstream (p.getInputStream ())) ؛ System.err.print (loadStream (p.geterRorStream ())) ؛ system.out.print (loadstream (p.getInputStream ())) ؛ System.err.println ("**** SWF تحويل ناجح ، إخراج الملف:" + swffile.getPath () + "****") ؛ if (pdffile.exists ()) {pdffile.delete () ؛ }} catch (ioException e) {E.PrintStackTrace () ؛ رمي ه ؛ }} آخر إذا (البيئة == 2) {// معالجة البيئة Linux ، حاول {Process p = R.Exec ("pdf2swf" + pdffile.getPath () + "-o" + swffile.getpath () + "-T 9") ؛ system.out.print (loadstream (p.getInputStream ())) ؛ System.err.print (loadStream (p.geterRorStream ())) ؛ System.err.println ("**** SWF تحويل ناجح ، إخراج الملف:" + swffile.getPath () + "****") ؛ if (pdffile.exists ()) {pdffile.delete () ؛ }} catch (استثناء e) {E.PrintStackTrace () ؛ رمي ه ؛ }}} آخر {system.out.println ("**** pdf غير موجود ، لا يمكن تحويله ****") ؛ }} آخر {system.out.println ("**** SWF موجود بالفعل ولا يحتاج إلى تحويل ****") ؛ }} static string loadstream (inputStream in) يلقي ioException {int ptr = 0 ؛ في = جديد bufferedInputStream (in) ؛ StringBuffer Buffer = new StringBuffer () ؛ بينما ((ptr = in.read ())! = -1) {buffer.append ((char) ptr) ؛ } return buffer.toString () ؛ } / ***تحويل الطريقة الرئيسية* / suppressWarnings ("غير مستخدمة") Boolean Public Convert () {if (swffile.exists ()) {system.out.println ("**** SWF يبدأ العمل ، تم تحويل الملف إلى SWF ****") ؛ العودة صحيح. } if (البيئة == 1) {system.out.println ("**** SWF Converter يبدأ العمل ، وبيئة التشغيل الحالية Windows ****") ؛ } آخر {system.out.println ("**** SWF Converter يبدأ العمل ، بيئة التشغيل الحالية Linux ****") ؛ } حاول {doc2pdf () ؛ pdf2swf () ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ العودة كاذبة } if (swffile.exists ()) {return true ؛ } آخر {return false ؛ }} / ** * مسار ملف الإرجاع * * param s * / public string getswfpath () {if (swffile.exists ()) {string tempString = swffile.getPath () ؛ TempString = tempString.replaceall ("////" ، "/") ؛ إرجاع tempstring. } آخر {return "" ؛ }} / *** قم بتعيين مسار الإخراج* / public void setoutputpath (string outpathpath) {this.outputpath = outputPath ؛ if (! outputPath.equals ("")) {String realName = filename.substring (filename.lastindexof ("/") ، filename.lastindexof (".")) ؛ if (outputPath.charat (outputPath.length ()) == '/') {swffile = ملف جديد (outputPath + RealName + ".swf") ؛ } آخر {swffile = ملف جديد (outputPath + RealName + ".swf") ؛ }}}}6. النشر والإصدار
ابدأ Tomcat ونشر تطبيق الويب الحالي
أدخل http: // localhost: 8080/ctcesims/documentupload.jsp في شريط العناوين كما هو موضح أدناه:
انقر فوق زر المعاينة وسيتم إنشاء واجهة معاينة ، كما هو موضح في الشكل أدناه:
4. الأسئلة المتداولة
إذا ظهر SWF ، لا يمكنك معاينة ذلك ، يرجى زيارة
http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04a.html#119065
اضبط المجلد حيث يتم إنشاء SWFS كموقع ملف الثقة.
ما يلي يعطي الفرق بين Flexpaper 2.1.9: يتم تغيير طريقة التهيئة. إذا لم يكن دليل الملف مع دليل المشروع ، فيمكن تعيين دليل المرفق كدليل افتراضي في الخادم.
<٪@ page language = "java" contentType = "text/html ؛ charset = utf-8" pageencoding = "utf-8" ٪> <٪ // string swffilepath = session.getAttribute ("swfpath"). tostring () ؛ ٪> <! "http://www.w3. src = "js/jquery.min.js"> </script> <script type = "text/javaScript" src = "js/flexpaper.js"> </script> <script type = "text/javaScript" src = "js/flexpaper_handlers.js {الارتفاع: 100 ٪ ؛ } body {margin: 0 ؛ الحشو: 0 ؛ الفائض: السيارات ؛ } #flashContent {display: none ؛ } </style> <title> نظام معاينة المستند عبر الإنترنت </title> </head> <body> <div style = "الموضع: absomute ؛ اليسار: 50px ؛ TOP: 10px ؛"> <div id = "documentViewer"> </div> <script type = "text/javaScript"> var startDocument = "paper" ؛ $ ('#documentViewer'). flexPapERVIEWER ({config: {swffile: 'Upload/ddd3.swf' ، المقياس: 0.6 ، Zoomtransition: 'Easeout' ، Zoomtime: 0.5 ، zoominterval: 0.2 ، fitpageOnload: true ، fitwidthonload: false ، fullscreenmow: falsing ، falsasize: falsing ، minoading ، minzoom ، minzood ، minzoy. MaxZoomSize: 5 ، SearchMatchall: false ، initviewmode: 'portrait' ، renderingorder: 'flash' ، startPage: '' ، viewmodetoolsvisible: true ، zoomtoolsvisible: true ، exalsvisible: true ، cursortoolsvisible: true ، searchvisible: ' }}) ؛ </script> </viv> </body> </html> أخيرًا ، إذا كنت بحاجة إلى إزالة وظيفة الطباعة وشعارها ، فيمكنك إعادة ترجمة ملف Flash of Flexpaper وتنزيله عبر الإنترنت.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.