Эта статья в основном представляет Java реализацию предварительного просмотра вложения, которая требует OpenOffice, Swftools и Flexpaper. Конкретные шаги следующие:
1. Обзор
Основные принципы
1. Преобразовать Word, 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 Flash. Мы используем его для преобразования файлов 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 и введите следующий код, чтобы запустить службу:
Программное обеспечение -яд без -акцепт = "сокет, хост = 127.0.0.1, порт = 8100; urp;" -Nofirststartwizard
Обратите внимание на «-» перед последней командой, не пишите неправильно! Если вы не можете получить услугу, проект не может продолжаться.
Скриншот официальной службы запуска веб -сайта заключается в следующем:
Местный скриншот:
3. Процесс разработки
1. Создайте новый проект и скопируйте папку JS в файле Flexpaper (включая flexpaper_flash_debug.js, flexpaper_flash.js, jQuery.js, эти три файла JS являются в основном плагинами для предварительного просмотра файлов SWF) в Корневый каталог веб-сайта; Скопируйте flexpaperviewer.swf на веб -сайт Root Directory (файл в основном используется в качестве игрока, который воспроизводит файлы SWF на веб -страницах). Структура каталога выглядит следующим образом:
Примечание: вам нужно создать папку загрузки
2. Create fileupload.jsp
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> <! doctype html public "-// w3c // dtd html 4.01 transitional // en" http://www.w3.org/tml4/html4/html. <html> <Head> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"> <Teal> Document Online System </title> <style> Body {margin-top: 100px; фон: #fff; font-family: verdana, tahoma;} a {#########); #CE4614; размер шрифта: 0,9ем; Text-Align: Center;} #msg-box .logo {border-bottom: 5px solid #ece5d9; margin-bottom: 20px; padding-bottom: 10px;} #msg-box .title {font-size: 1.4em; font-weight: bold; margin; 0 30px 0; {margin-top: 20px;} </style> </head> <body> <div id = "msg-box"> <form name = "form1" method = "post" enctype = "Multipart/form-data" action = "docuploadConvertaction.jsp"> <viv> Пожалуйста, загрузите файл для обработки. Процесс может занять несколько минут. Пожалуйста, подождите на мгновение. </div> <p> <input name = "file1" type = "file"> </p> <p> <input type = "propect" name = "vade =" upload "> </p> </form> </div> </body> </html> 3. Создать страницу преобразования docuploadConvertact.jsp
<%@page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> <%@page import = "java.io.*"%> <%@page import = "java.Util.Enumeration"%> <%@page import = "com.oreilly.servlet.servlet.servlet.multip.multip@%@page atempleteplete-alebleteptepteptepteptepteptepteptebret. import = "com.oreilly.servlet.multipart.defaultfilerenamepolicy"%> <%@page import = "com.cectsims.util.docconverter"%> <%@page import = "com.cectsims.util.docconverter"%>@pagemported umported. Компонент COS, который можно заменить на загрузку Commons-FilePload. После того, как файл загружен, сохраните его в папке загрузки // Получите путь загрузки файла string savedirectory = application.getRealpath ("/")+"upload"; // Распечатать информационную систему пути загрузки. // Каждый файл максимум 50 м int maxpostsize = 50 * 1024 * 1024; // Использование стратегии именования по умолчанию COS, добавить 1, 2, 3 после дубликата имени ... Если вы не добавите DFP и дубликат имени, оно будет перезаписать defaultfilerenamepolicy dfp = new DefaultFilerEnamePolicy (); // Кодирование ответа-«UTF-8», а стратегия разрешения конфликта по умолчанию используется для реализации загрузки. Если дубликат DFP не добавлено, MultiArtRtequest будет перезаписан. MultipartRequest Multi = новый MultipartRequest (запрос, Savedirectory, MaxPostSize, «UTF-8», DFP); // Multipartrequest multi = новый MultipartRtequest (запрос, savedirectory, maxpostsize, "UTF-8"); // Выходная информация об обратной связи файлы перечисления = multi.getFilenames (); while (files.hasmoreelements ()) {System.err.println ("ccc"); String name = (string) files.nextelement (); File f = multi.getFile (name); if (f! = null) {String filename = multi.getFilesyStemname (name); // Получить расширение загруженного файла string extname = filename.substring (filename.lastindexof (".")+1); // Файл Полный путь строка последнего файла = savedirectory + "//" + filename; // Получить имя файла, которое необходимо преобразовать, и заменить '/' в имени пути с '/' string converfilEname = savedirectory.replaceall ("////", "/")+"/"+filename; System.out.println (converfileName); // Вызовите DocConverter класса преобразования и передайте файл, который будет преобразован в конструктор этого класса DocConverter D = New DocConverter (converfileName); // Вызовите метод преобразования. Затем выполните pdf2swf (), чтобы преобразовать PDF в SWF; d.conver (); // cell getSwfpath () Метод и распечатайте конвертированную систему пути файла SWF.out.println (d.getswfpath ()); // генерируйте относительные пути SWF для перехода к String 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"> <html> <head> <meta http-equiv = "content-tepe" content-tepe "; charset = utf-8 "> <Title> вставьте заголовок здесь </title> <style> body {margin-top: 100px; фон: #fff; font-family: verdana, tahoma;} a {color: #ce4614;} #msg-box {color: #ce4614; размер шрифта: 0,9ем; Text-Align: Center;} #msg-box .logo {border-bottom: 5px solid #ece5d9; margin-bottom: 20px; padding-bottom: 10px;} #msg-box .title {font-size: 1.4em; font-weight: bold; margin; 0 30px 0; {margin-top: 20px;} </style> </head> <body> <div> <form name = "viewform" id = "form_swf" action = "documentView.jsp" method = "post"> <input type = 'proview' value = 'preview' class = 'кнопка отправки'/> </form> </div> </body> </html> Создать страницу просмотра documentView.jsp
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> <%string swffilepath = session.getattribute ("swfpath"). toString (); %> <! Doctype html public "-// w3c // dtd html 4.01 transitional // en" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv = "content-tolpe" html/html; charset = utf-8 "> <script type =" text/javascript "src =" js/jquery.js "> </script> <script type =" text/javaScript "src =" js/flexpaper_flash.js "> </script> <script type =" javascript " src = "js/flexpaper_flash_debug.js"> </script> <style type = "text/css" media = "screen"> html, body {hight: 100%; } body {margin: 0; Заполнение: 0; переполнение: авто; } #flashcontent {display: none; } </style> <Title> документ онлайн -система предварительного просмотра </title> </head> <body> <div style = "Положение: Absolute; слева: 50px; top: 10px;"> <a id = "viewerplaceholder"> </a> <script type = "text/javascript"> var fp = new Flexpeerwer ('welect', viewSectracePlapeRptiplectrapeRptiplionship. Escape ('<%= swffilepath%>'), шкала: 0,6, Zoomtransition: 'extout', Zoomtime: 0,5, Zoominterval: 0,2, FitPageonload: True, fitWidthonload: False, FullScreenasmaxWindow: false, ProgressiveLing: false, minzoomsize: 0.2, maxzoomsize: 5, searchmakeling: falsemviewmemememememoge: 0.2, maxzoomsize: «SinglePage», ViewModetoolSvisible: true, ZoomToolSvisible: true, NavtoolSvisible: true, cursortoolsvisible: true, searchtoolsvisible: true, localechain: 'en_us'}}}); </script> </div> </body> </html> 5. Создать класс конверсии docconverter.java
пакет com.cectsims.util; Импорт java.io.bufferedinputstream; Импорт java.io.file; импортировать java.io.ioexception; импортировать java.io.inputstream; Import Com.ArtOfSolving.jodConverter.documentConverter; Import Com.ArtOfSolving.jodConverter.openoffice.connection.openofficeConnection; Import Com.ArtOfSolving.jodConverter.openoffice.connection.socketoPenofficeConnection; Import Com.ArtOfSolving.jodConverter.openoffice.converter.openofficeedocumentConverter; / *** DOC DOC DOCX Преобразование формата*/ Public Class DocConverter {Private Static Final Environment = 1; // среда 1: Windows 2: Linux Private String FileSting; // (только включает в себя проблемы PDF2SWF PATH) частный файл pdffile; частный файл swffile; частный файл docfile; public Docconverter (String fileString) {ini (fileString); } / ** * Сбросить файл * * @param fileString * / public void setFile (string fileString) {ini (fileString); } / ** * Инициализировать * * @param fileString * / private void ini (String fileString) {this.fileString = fileString; filename = fileString.substring (0, fileString.lastIndexof (".")); docfile = новый файл (FileString); pdffile = новый файл (имя файла + ".pdf"); swffile = новый файл (имя файла + ".swf"); } / ** * Конвертировать в pdf * * @param file * / private void doc2pdf () throws exection {if (docfile.exists ()) {if (! Pdffile.exists ()) {openofficeConnection connection = new SocketOpenOfficeConnect (8100); try {connection.connect (); DocumentConverter Converter = new OpenOfficeIedocumentConverter (Connection); Converter.convert (docfile, pdffile); // ЗАКРЫТЬ CONNECTION Connection.disconnect (); System.out.println ("**** PDF преобразование успешное, pdf output:" + pdffile.getPath () + "****"); } catch (java.net.connectexception e) {e.printstacktrace (); System.out.println ("**** Исключение преобразователя SWF, служба OpenOffice не началась! ****"); бросить E; } catch (com.artofsolving.jodconverter.openoffice.connection.openofficeexception e) {e.printstacktrace (); System.out.println ("**** Исключение конвертера SWF, чтение файла преобразования не удалось ****"); бросить E; } catch (Exception e) {e.printstackTrace (); бросить E; }} else {System.out.println ("**** был преобразован в PDF, преобразование не требуется ****"); }} else {System.out.println ("**** Исключение конвертера SWF, документ, который необходимо преобразовать, не существует и не может быть преобразован ****"); }} / ** * преобразовать в SWF * / @suppresswarnings ("unared") private void pdf2swf () бросает исключение {runtime r = runtime.getruntime (); if (! swffile.exists ()) {if (pdffile.exists ()) {if (Environment == 1) {// Обработка среды Windows try {process p = r.exec ("d:/program files/swftools/pdf2swf.exe" + pdffile.getpath () + "-o" + swffile.getpath () "-t 9"); 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 (); бросить E; }} else if (Environment == 2) {// Обработка среды Linux try {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 (Exception e) {e.printstackTrace (); бросить E; }}} else {System.out.println ("**** pdf не существует, не может быть преобразована ****"); }} else {System.out.println ("**** SWF уже существует и не нужно преобразовать ****"); }} статическая строка loadstream (inputstream in) бросает ioException {int ptr = 0; in = new BufferedInputStream (in); StringBuffer Buffer = new StringBuffer (); while ((ptr = in.read ())! = -1) {buffer.append ((char) ptr); } return buffer.toString (); } / ***преобразовать основной метод* / @suppresswarnings ("unared") public boolean convert () {if (swffile.exists ()) {System.out.println ("**** SWF Converter начинает работать, файл был преобразован в swf ****"); вернуть истину; } if (Environment == 1) {System.out.println ("**** SWF преобразователь начинает работать, текущая среда работы Windows ****"); } else {System.out.println ("**** SWF конвертер начинает работать, текущая среда работающей среды Linux ****"); } try {doc2pdf (); pdf2swf (); } catch (Exception e) {e.printstackTrace (); вернуть ложь; } if (swffile.exists ()) {return true; } else {return false; }} / ** * Возвращение пути файла * * @param s * / public String getSwfpath () {if (swffile.exists ()) {String tempstring = swffile.getPath (); tempstring = tempstring.replaceall ("////", "/"); вернуть Tempstring; } else {return ""; }} / *** Установить выходной путь* / public void setoutputPath (String outputPath) {this.OutputPath = outputPath; if (! outputpath.equals ("")) {string realName = filename.substring (filename.lastIndexof ("/"), filename.lastIndexof (".")); if (outputpath.charat (outputpath.length ()) == '/') {swffile = новый файл (outputPath + realName + ".swf"); } else {swffile = new File (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 генерируется как местоположение файла доверия.
Следующее дает разницу между гибкой бумагой 2.1.9: метод инициализации изменяется. Если файловый каталог не сочетается с каталогом проекта, каталог вложений может быть установлен в качестве виртуального каталога на сервере.
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> <%// String swffilepath = session.getAttribute ("swfpath"). toString ();%> <! Docttyp html public "// w3c // dtdtmil html"/// w3c // dtdtition html "// w3c // dtdtition html html" // w3c // dtdtition html html "/// dtdtition (). «http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <script-type =" javascript " src = "js/jquery.min.js"> </script> <script type = "text/javascript" src = "js/flexpaper.js"> </script> <script type = "text/javascript" src = "js/flexpaper_hhandlers.js"> </script> <стиль типа = "xrc/csmss" h -handlers. {высота: 100%; } body {margin: 0; Заполнение: 0; переполнение: авто; } #flashcontent {display: none; } </style> <title> документ онлайн -предварительный просмотр системы </title> </head> <body> <div style = "позиция: абсолют; слева: 50px; top: 10px;"> <div id = "documentViewer"> </div> <script type = "text/javascript"> var startDocument = "paper"; $ ('#DocumentViewer'). FlexPaperviewer ({config: {swffile: 'upload/ddd3.swf', Scale: 0.6, Zoomtransition: 'extout', Zoomtime: 0.5, Zoominterval: 0.2, fitpageonload: true, fitwidthonload: falseScreenAsmaxWindow: falseistizing, minzize Maxzoomsize: 5, searchmatchall: false, initviewmode: «портрет», renderingorder: «flash», startatpage: '', viewmodetoolsvisible: true, zoomtoolsvisible: true, vavtoolsvisible: true, cursortoolsvisible: true, searchtoolsvisible: wmode: 'windobe emadebible: }}); </script> </div> </body> </html> Наконец, если вам нужно удалить функцию печати и логотип, вы можете перекомпилировать флэш -файл Flexpaper и загрузить его онлайн.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.