Конвертировать Word документ в HTML программно в Java - PullRequest
21 голосов
/ 22 октября 2008

Мне нужно преобразовать документ Word в файл (ы) HTML на Java. Функция примет ввод документа word, а выводом будет html файл (ы), основанный на количестве страниц, которые имеет документ word, т.е. если документ word имеет 3 страницы, то будет сгенерировано 3 html файла с требуемым разрывом страницы.

Я искал открытые / некоммерческие API, которые могут конвертировать doc в html, но безрезультатно. Любой, кто делал эту работу раньше, пожалуйста, помогите.

Спасибо

Ответы [ 11 ]

6 голосов
/ 23 июня 2011

Я рекомендую JODConverter , он использует OpenOffice.org, который предоставляет, пожалуй, лучшие фильтры импорта / экспорта для форматов OpenDocument и Microsoft Office, доступных на сегодняшний день.

JODConverter предлагает множество документов, сценариев и учебных пособий.

4 голосов
/ 23 октября 2008

Я успешно использовал следующий подход в производственных системах, где новый формат MS Word XML недоступен:

Создает процесс, который делает что-то похожее на:

http://www.oooninja.com/2008/02/batch-command-line-file-conversion-with.html

Возможно, вы захотите запустить openoffice один раз при запуске вашей программы и вызывать скрипт python столько раз, сколько вам нужно (с какой-то проверкой, чтобы убедиться, что процесс ooffice всегда присутствует).

Другой вариант - порождать следующую команду каждый раз, когда вам нужно выполнить преобразование:

ooffice -headless "macro: // <путь к макросу voff ooffice для преобразования с параметром, указывающим на файл>"

Я использовал макро подход несколько раз, и он хорошо работает (извините, у меня нет кода макроса).

Хотя существуют механизмы для этого через MS Word, они не просты для Java, и для поддержки MS Word через OLE требуются другие вспомогательные программы.

Я и раньше использовал abiword, который хорошо работает для многих документов, но его путают с более сложными документами (кажется, что office обрабатывает все, что я в него бросил). Abiword имеет немного более простой интерфейс командной строки для преобразования, чем ooffice.

3 голосов
/ 23 октября 2008

Мы используем tm-экстракторы (http://mvnrepository.com/artifact/org.textmining/tm-extractors), и возвращаемся к коммерческому Aspose (http://www.aspose.com/). Оба имеют собственные API Java.

2 голосов
/ 11 апреля 2009

Это проще сделать в новом MS Word DOCX, так как формат в XML. Вы можете использовать XSL для преобразования документа Word в формате XML в формат HTML.

Если ваш документ Word находится в старой версии, вы можете использовать библиотеку POI http://poi.apache.org/, а затем получить к нему доступ и сгенерировать объект Java, и с этого момента вы можете легко преобразовать его в формат HTML с помощью библиотеки Java Java

http://www.dom4j.org/dom4j-1.4/apidocs/org/dom4j/io/HTMLWriter.html

1 голос
/ 15 июня 2015

Я пробовал этот способ и его работу со мной с этого сайта 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);

Я надеюсь, что это решит вашу проблему

1 голос
/ 11 июня 2010

Я вижу, что эта тема появляется во внешних ссылках и имеет случайное сообщение, поэтому я подумал, что выложу обновление (надеюсь, никто не возражает). OpenOffice продолжает развиваться, и в версии 3.2 снова улучшены фильтры импорта и экспорта слов. OpenOffice и Java могут работать на многих платформах, поэтому системы Java могут использовать API-интерфейс OpenOffice UNO напрямую для импорта / манипулирования / экспорта документов во многих форматах (включая word и pdf) или использовать библиотеку, такую ​​как JODReports или Докмос для облегчения. Оба имеют бесплатные / открытые опции.

1 голос
/ 27 марта 2009

Если это docx, вы можете использовать docx4j (ASL v2). Это использует XSLT для создания HTML.

Однако он предоставит вам один HTML-код для всего документа.

Если вы хотите использовать HTML для каждой страницы, вы можете сделать что-нибудь с тегом lastRenderedPageBreak, который Word помещает в документ (при условии, что вы использовали Word для его создания).

0 голосов
/ 27 января 2019

вы можете использовать офис micrsoft онлайн

сначала, по запросу на стороне сервера https://view.officeapps.live.com/op/view.aspx?src='your файл документа, онлайн URL-адрес

затем используйте jsoup парсинг результата html

при доступе с мобильного html будет завернут в рамку.

0 голосов
/ 05 февраля 2009
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");

Все возможные преобразования:

doc -> pdf, html, txt, rtf

xls -> pdf, html, csv

ppt -> pdf, swf

html -> pdf

0 голосов
/ 23 октября 2008

Если вы нацеливаетесь на файлы Word 2007, используя формат ooxml, тогда эта статья может помочь. И есть проект Ooxml4j , который реализует ooxml для библиотеки Java.

Если вы нацелены на двоичные файлы, хотя ... это еще одна проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...