Ответ 1
Мы используем tm-экстракторы (http://mvnrepository.com/artifact/org.textmining/tm-extractors) и возвращаемся к коммерческому Aspose (http://www.aspose.com/). Оба имеют собственные API Java.
Мне нужно преобразовать документ Word в HTML файл в Java. Функция примет входной документ слова, и вывод будет html файлом (-ами) на основе количества страниц, которые имеет документ слова, т.е. если документ слова имеет 3 страницы, тогда будет создано 3 html файла с требуемым разрывом страницы.
Я искал API с открытым исходным кодом/некоммерческие API, которые могут конвертировать doc в html, но без результата. Любой, кто сделал этот вид работы, прежде чем помогать, помогите.
Спасибо
Мы используем tm-экстракторы (http://mvnrepository.com/artifact/org.textmining/tm-extractors) и возвращаемся к коммерческому Aspose (http://www.aspose.com/). Оба имеют собственные API Java.
Я рекомендую JODConverter, он использует OpenOffice.org, который обеспечивает, пожалуй, лучшие фильтры импорта/экспорта для форматов OpenDocument и Microsoft Office доступный сегодня.
JODConverter имеет много документов, скриптов и руководств, которые помогут вам.
Я успешно использовал следующий подход в производственных системах, где новый формат XML MS Word недоступен:
Создайте процесс, который сделает что-то похожее на:
http://www.oooninja.com/2008/02/batch-command-line-file-conversion-with.html
Вероятно, вы захотите запустить openoffice один раз при запуске своей программы и вызвать python script столько раз в течение своей программы, в которой вы нуждаетесь (с некоторой проверкой, чтобы гарантировать, что ooffice-процесс всегда есть).
Другой вариант - вызывать следующую команду каждый раз, когда вам нужно выполнить преобразование:
ooffice -headless "macro://< путь к макросу ooffice vb для преобразования, с параметром, указывающим на файл > "
Я многократно использовал макро-подход, и он работает хорошо (извините, у меня нет доступного макрокода).
Несмотря на то, что есть механизмы для этого через MS Word, им нелегко от Java, и им нужны другие программы поддержки для управления MS Word через OLE.
Я тоже использовал abiword, что хорошо работает для многих документов, но запутывается с более сложными документами (ooffice, похоже, обрабатывает все, что я на него набросал). Abiword имеет немного более простой интерфейс командной строки для преобразования, чем ooffice.
Это проще сделать в новом 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
Если это docx, вы можете использовать docx4j (ASL v2). Это использует XSLT для создания HTML.
Однако он даст вам один HTML для всего документа.
Если вам нужен HTML на странице, вы можете что-то сделать с тегом lastRenderedPageBreak, который Word помещает в docx (при условии, что вы использовали Word для его создания).
Я вижу, что этот поток появляется во внешних ссылках и имеет случайную запись, поэтому я думал, что опубликую обновление (надеюсь, никто не возражает). OpenOffice продолжает развиваться, и выпуск 3.2 снова улучшает фильтры импорта импорта слов. OpenOffice и Java могут работать на многих платформах, поэтому Java-системы могут использовать API OpenOffice UNO напрямую для импорта/обработки/экспорта документов во многих форматах (включая слово и pdf) или использовать библиотеку, например JODReports или Docmosis для облегчения. У обоих есть свободные/открытые варианты.
Я пробовал этот путь и его работу со мной с этого сайта 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);
Я надеюсь, что это решит вашу проблему.
Вам нужно будет найти спецификацию MS word doc (поскольку она в основном представляет собой двоичный дамп любого слова в данный момент времени) и медленно проходит через элемент по элементу, преобразуя ms word "objects/states" к html equiv. вы можете найти script, чтобы сделать это для u, поскольку это действительно не забавная работа, и я бы посоветовал вам (конвертирование форматов файлов или даже чтение из коммерческих файлов по своему усмотрению всегда сложно и часто неполно), PS: просто google doc2html
Если вы нацеливаете файлы Word 2007 с использованием формата ooxml, это может помочь article. И есть проект Ooxml4j, который реализует ooxml для библиотеки Java.
Если вы нацеливаете двоичные файлы, хотя... это еще одна проблема.
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
Вы можете использовать офис Micrsoft онлайн
во-первых, на стороне сервера запрос https://view.officeapps.live.com/op/view.aspx?src= 'URL-адрес вашего файла документации'
затем используйте jsoup для анализа результата HTML
когда доступ с мобильного телефона HTML будет иметь рамку.