web-dev-qa-db-ja.com

JavaでプログラムによってWordドキュメントをHTMLに変換する

Word文書をJavaでHTMLファイルに変換する必要があります。関数は入力Word文書を受け取り、出力はWord文書のページ数に基づいたhtmlファイルになります。つまり、Word文書に3ページがある場合、必要な改ページを含む3つのhtmlファイルが生成されます。

Docをhtmlに変換できるオープンソース/非商用APIを検索しましたが、結果はありませんでした。以前にこのタイプの仕事をしたことがある人は助けてください。

ありがとう

21
kaychaks

Tm-extractors( http://mvnrepository.com/artifact/org.textmining/tm-extractors )を使用し、商用のAspose( http:// www。 aspose.com/ )。どちらにもネイティブのJava APIがあります。

3
Chase Seibert

私は JODConverter をお勧めします。これはOpenOffice.orgを利用します。OpenOffice.orgは、今日利用可能なOpenDocumentおよびMicrosoft Office形式に間違いなく最高のインポート/エクスポートフィルターを提供します。

JODConverterには、役立つドキュメント、スクリプト、チュートリアルがたくさんあります。

6
Fisher

新しいMS Word XML形式が利用できない本番システムでは、次のアプローチをうまく使用しました。

次のような処理を行うプロセスを生成します。

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

プログラムの起動時にopenofficeを1回だけ起動し、プログラムの実行中にpythonスクリプトを必要な回数だけ呼び出す必要があります(oofficeを確認するための何らかのチェックが必要)。プロセスは常にそこにあります)。

もう1つのオプションは、変換を行う必要があるたびに次のようなコマンドを生成することです。

ooffice -headless "macro:// <変換するooffice vbマクロへのパス、ファイルを指すパラメーター>"

私はマクロアプローチを複数回使用しましたが、うまく機能します(申し訳ありませんが、マクロコードを使用できません)。

MS Wordを介してそれを行うためのメカニズムはありますが、Javaから簡単ではなく、OLEを介してMS Wordを駆動するには他のサポートプログラムが必要です。

私は以前にもabiwordを使用しましたが、これは多くのドキュメントでうまく機能しますが、より複雑なドキュメントと混同されます(oofficeは、私が投げたすべてのものを処理するようです)。 Abiwordには、oofficeよりも変換がやや簡単なコマンドラインインターフェイスがあります。

4
Jamie Love

形式はXMLであるため、新しいMS Word docxでこれを行う方が簡単です。 XSLを使用して、XML形式のWord文書をHTML形式に変換できます。

ただし、Wordドキュメントが古いバージョンの場合は、POIライブラリ http://poi.Apache.org/ を使用して、それにアクセスし、Javaを生成できます。オブジェクトとその時点から、HTML Javaライブラリを使用して、HTML形式に簡単に変換できます。

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

2

私はこの方法をこのサイトから私と一緒に試しました http://code.google.com/p/xdocreport/wiki/XWPFConverterXHTML

これはdocxでのみ機能し、そのWord文書内の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);

これで問題が解決することを願っています

私はこのスレッドが外部リンクで表示され、時々投稿があるので、更新を投稿するつもりだと思いました(誰も気にしないでください)。 OpenOfficeは進化を続け、リリース3.2ではWordインポートエクスポートフィルターが再び改善されています。 OpenOfficeとJavaは多くのプラットフォームで実行できるため、JavaシステムはOpenOffice UNO APIを直接利用して、ドキュメントをさまざまな形式でインポート/操作/エクスポートできます( Wordとpdf)または JODReports または Docmosis のようなライブラリを使用して簡単にできます。どちらにもフリー/オープンオプションがあります。

1
Paul Jowett

Docxの場合は、 docx4j (ASL v2)を使用できます。 XSLTを使用してHTMLを作成します。

ただし、ドキュメント全体に対して単一のHTMLが提供されます。

ページごとにHTMLが必要な場合は、Wordがdocxに挿入するlastRenderedPageBreakタグを使用して何かを行うことができます(Wordを使用して作成した場合)。

1
JasonPlutext

Ooxml形式を使用してWord 2007ファイルをターゲットにしている場合、この article が役立つことがあります。そして、Javaライブラリのooxmlを実装している Ooxml4j プロジェクトがあります。

ただし、バイナリファイルを対象とする場合は、別の問題です。

0

使用できます micrsoft office online

まず、サーバー側のリクエストで https://view.officeapps.live.com/op/view.aspx?src= 'your doc file online url'

次に jsoup を使用して結果のhtmlを解析します

モバイルからのアクセス時、htmlはフレームがラップされます。

0
Seven4X

あなたはMS Wordのドキュメント仕様を見つけなければならず(それは基本的にその時点でWordにあるもののバイナリダンプなので)、MS Wordの「オブジェクト/状態」をhtmlに変換する要素によってゆっくりと要素を通過する必要があります同等。これは本当に楽しい作業ではないので、uのために実行するスクリプトを見つけることができるかもしれません。私はそれをお勧めします(ファイル形式の変換や、商用ファイルからの読み取りでさえ、常に困難で、しばしば不完全です)。 PS:ただ google doc2html

0
DavidG
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
Zorbal