Мне нужно преобразовать документ Word в файл (ы) HTML на Java. Функция будет вводить текстовый документ, а на выходе будет html-файл (-ы) на основе количества страниц, которые есть в текстовом документе, т.е. если текстовый документ имеет 3 страницы, то будут сгенерированы 3 html-файла с требуемым разрывом страницы.
Я искал API с открытым исходным кодом / некоммерческие API, которые могут конвертировать документы в HTML, но безрезультатно. Любой, кто делал такую работу раньше, пожалуйста, помогите.
Спасибо
Вот несколько отправных точек для вас. Удачи. На веб-сайте Microsoft вы можете найти документацию для формат .doc, а на веб-сайте ECMA - для формат .docx. У Microsoft есть категория для Java в своем блоге разработчиков OpenXML, в том числе сообщение о преобразовании OpenXML в XHTML в Java.




Вам нужно будет найти спецификацию документа MS Word (поскольку это в основном двоичный дамп всего, что есть в слове в этот момент времени) и медленно пройти через него элемент за элементом, преобразовывая слово ms word «объекты / состояния» в html эквивалент Возможно, вы сможете найти сценарий, который сделает это за вас, так как это действительно неинтересная работа, и я бы не советовал от нее (преобразование форматов файлов или даже чтение из коммерческих файлов самостоятельно всегда сложно и часто неполно). PS: просто google doc2html
Вы когда-нибудь смотрели спецификацию? (Поцарапайте это, вы когда-нибудь исследовали несоответствия между файлом .rtf, содержащим спецификацию, указанному формату?) - Это невыполнимо, слишком много работы, пока доступны другие решения.
Я сказал, что это сложно, а спецификации часто бывают неполными, и посоветовал этого не делать.
Я успешно использовал следующий подход в производственных системах, где новый формат MS Word XML недоступен:
Создать процесс, который делает что-то похожее на:
http://www.oooninja.com/2008/02/batch-command-line-file-conversion-with.html
Вы, вероятно, захотите запустить openoffice один раз при запуске вашей программы и вызывать скрипт python столько раз в течение вашей программы, сколько вам нужно (с какой-то проверкой, чтобы гарантировать, что процесс ooffice всегда там).
Другой вариант - запускать команду следующего вида каждый раз, когда вам нужно выполнить преобразование:
ooffice -headless "macro: // <путь к макросу ooffice vb для преобразования, с параметром, указывающим на файл>"
Я использовал подход с макросами несколько раз, и он хорошо работает (извините, у меня нет доступного кода макроса).
Несмотря на то, что существуют механизмы для выполнения этого через MS Word, это непросто для Java, и для работы с MS Word через OLE требуются другие вспомогательные программы.
Раньше я тоже использовал abiword, который хорошо работает для многих документов, но меня путают с более сложными документами (ooffice, кажется, обрабатывает все, что я ему бросил). Abiword имеет немного более простой интерфейс командной строки для преобразования, чем ooffice.
Мы используем tm-extractors (http://mvnrepository.com/artifact/org.textmining/tm-extractors) и возвращаемся к коммерческому Aspose (http://www.aspose.com/). У обоих есть собственные Java API.
import officetools.OfficeFile; // package available at www.dancrintea.ro/doc-to-pdf/
...
FileInputStream fis = new FileInputStream(new File("test.doc"));
FileOutputStream fos = new FileOutputStream(new File("test.html"));
OfficeFile f = new OfficeFile(fis,"localhost","8100", true);
f.convert(fos,"html");
Все возможные преобразования:
документ -> PDF, HTML, TXT, RTF
xls -> pdf, html, csv
ppt -> pdf, swf
HTML -> PDF
Если это docx, вы можете использовать docx4j (ASL v2). Это использует XSLT для создания HTML.
Однако это даст вам единый HTML-код для всего документа.
Если вам нужен HTML-код для каждой страницы, вы можете сделать что-нибудь с тегом lastRenderedPageBreak, который Word помещает в docx (при условии, что вы использовали Word для его создания).
Это проще сделать в новом документе MS word docx, так как он имеет формат XML. Вы можете использовать XSL для преобразования документа Word из формата XML в формат HTML.
Если, однако, ваш документ Word находится в старой версии, вы можете использовать библиотеку POI. http://poi.apache.org/, а затем получить к нему доступ и сгенерировать объект Java, и с этого момента вы можете легко преобразовать его в формат HTML с помощью библиотеки HTML java.
http://www.dom4j.org/dom4j-1.4/apidocs/org/dom4j/io/HTMLWriter.html
Начиная с версии 3.5, Apache POI поддерживает более новые версии Word.
Я вижу, что эта ветка появляется во внешних ссылках и иногда в ней появляются сообщения, поэтому я решил опубликовать обновление (надеюсь, никто не возражает). OpenOffice продолжает развиваться, и в версии 3.2 снова улучшены фильтры импорта и экспорта слов. OpenOffice и Java могут работать на многих платформах, поэтому системы Java могут использовать OpenOffice UNO API напрямую для импорта / управления / экспорта документов во многих форматах (включая word и pdf) или использовать библиотеку, такую как JODReports или Докмос, для облегчения. У обоих есть бесплатные / открытые варианты.
Я рекомендую JODConverter, он использует OpenOffice.org, который предоставляет, пожалуй, лучшие фильтры импорта / экспорта для форматов OpenDocument и Microsoft Office, доступные сегодня.
В JODConverter есть множество документов, скриптов и руководств, которые могут вам помочь.
Я пробовал этот способ, и он работает со мной с этого сайта http://code.google.com/p/xdocreport/wiki/XWPFConverterXHTML
Это работает только с docx, чтобы преобразовать его в HTML-изображения внутри этого текстового документа.
// 1) Load DOCX into XWPFDocument
InputStream doc = new FileInputStream(new File("c:/document.docx"));
XWPFDocument document = new XWPFDocument(doc);
// 2) Prepare XHTML options (here we set the IURIResolver to load images from a "word/media" folder)
XHTMLOptions options = XHTMLOptions.create(); //.URIResolver(new FileURIResolver(new File("word/media")));;
// 3) Extract image
String root = "target";
File imageFolder = new File( root + "/images/" + doc );
options.setExtractor( new FileImageExtractor( imageFolder ) );
// 4) URI resolver
options.URIResolver( new FileURIResolver( imageFolder ) );
OutputStream out = new FileOutputStream(new File("c:/document.html"));
XHTMLConverter.getInstance().convert(document, out, options);
Надеюсь, это решит вашу проблему
Пожалуйста, поделитесь самим решением, а не размещайте на него ссылку.
вы можете использовать офис миксофт
во-первых, по запросу на стороне сервера https://view.officeapps.live.com/op/view.aspx?src='your doc file online url '
затем используйте jsoup, чтобы проанализировать результат html
при доступе с мобильного телефона html будет обернут рамкой.
вот что-то, что использовал кто-то, кто этим занимался какое-то время - jroller.com/rickard/entry/word_to_html_in_java