2017-03-28 12 views
0

現在、Javaでコンバータを開発しています。これは、HTMLファイルをPDFファイルに変換し、this siteが見つかりました。最初のページと2ページ目の最後には、1ページに挙げたライブラリ(JTidy、Xalan、FOP)でこのようなプログラムを実現する方法のコード例があります。HTMLをPDFに変換する - インスタンシエートされたオブジェクトが表示されない

私はSpring Tool Suiteで新しいMavenプロジェクトを作成し、ライブラリの依存関係をpom.xmlに追加しました。この新しく作成されたテストプログラムにコード部分をコピーして、それが動作するかどうかを確認しました。最後のコード部分まですべてうまくいきました。最初の春で

public static byte[] fo2PDF(Document foDocument) { 
    DocumentInputSource fopInputSource = new DocumentInputSource(
                foDocument); 
    try { 
     ByteArrayOutputStream out = new ByteArrayOutputStream(); 
     Logger log = new ConsoleLogger(ConsoleLogger.LEVEL_WARN); 
     Driver driver = new Driver(fopInputSource, out); 
     driver.setLogger(log); 
     driver.setRenderer(Driver.RENDER_PDF); 
     driver.run(); 
     return out.toByteArray(); 
    } catch (Exception ex) { 
     return null; 
    } 
} 

DocumentInputSource

の上にカーソルと一緒に行くときDocumentInputSourceがタイプ

に解決することはできないとして、特定のライブラリを追加するオプションがありませんでした。このメッセージを示しますMavenは通常提供しています。

違うことを試しました。例えば、クラス内の別のスコープにコードを入れて、独自のクラスを作成しました。別のIDEを使ってみましたが、フォルトがこれらのことは、明らかに助けにはなりませんでした。

私は、FOPライブラリがApacheライセンスバージョン2.0でライセンスされていることを読みましたが、プロジェクトの最後にライセンスを追加しました。問題は発生していないことを確認しました。 。

さらに私は、変換したものの必要があると読んだ別のライブラリを追加しようとしましたが、最初にリンクした記事には言及していませんでした。ライブラリはdom4jです。型DocumentInputSourceが

表示されていない、それだけの内側に「通常の方法」だとして、これは私には意味がありません

:今

、私は春DocumentInputSource上を行くことを私に示してあなたが見ることができるように、私は既にそれが可視であることを確認するために、変更をprivateからpublicに変更しました。

私は非常に簡単/基本的なものを見落としているように感じていますし、私はどんな助けでも非常に感謝しています。これを読んでいただきありがとうございます。

PS:これは私の最初のスタックオーバーフローに関する記事です。私はややプログラミングの面白いです。不足している情報がある場合。教えてください。

答えて

0

上記のリンクでは、DocumentInputSourceクラスはorg.apache.fop.toolsパッケージからのものです。

パッケージプライベートであるorg.dom4j.ioパッケージには、この名前で別のクラスがあります。これをインポートした場合、コンパイラはこのクラスが表示されていないことを警告します(ただし、クラスが同じパッケージに含まれていない限り)。

あなたは、ソースファイルの先頭近くに次の行を持っていることを確認:それはそれはdoesnの言うならば、次に

import org.dom4j.io.DocumentInputSource;

import org.apache.fop.tools.DocumentInputSource;

ではなく、この1をクラスorg.apache.fop.tools.DocumentInputSource(またはそのパッケージ)を見つけると、あなたのポップにfop依存関係がありません:

<dependency> 
    <groupId>fop</groupId> 
    <artifactId>fop</artifactId> 
    <version>0.20.5</version> 
</dependency> 

あなたが見つけたページと、それが参照するfopのバージョン(0.20.5)はかなり古いです(2006年5月、hereを参照)。あなたが探しているクラスは、最近のバージョンではもはや存在しません。としょうかん。 Maven依存関係で最新バージョンを使用しましたか?これはあなたの最初の問題を説明するでしょう( "型に解決できません")。

最新の安定版(2.1.1は2016年1月、hereを参照)にアップグレードし、公式のマニュアルhereの例を調べることをお勧めします(左側のメニューには「例」セクションがあります)。

幸運を祈る! :)

+0

お返事ありがとうございました。実際には、0.20.5のバージョンの代わりに間違ったバージョン(2.1)を使用していたのですが、私は、そのメソッド/クラスがまだライブラリの中にあるかどうかをチェックしませんでした。今バージョン0.20.5で動作します!私は(2.1)バージョンを見て、それにコードを適応させようとしますが、もう一度:ありがとう! :) – Monterato

+0

ようこそ。ハッピーコーディング! :) – lbndev

関連する問題