私はC#でWord docxファイルをPDFに変換する必要があるWebサービスを開発しています。長い時間を捜した後、私は変換を行うために、docx4j、Javaライブラリに定住しました。 .jarファイルは、私は、コマンドラインから実行すると、期待どおりに動作しますが、私はSystem.Diagnostics.Processを通じて私のC#コードからそれを起動したとき、私は次のエラーを取得:C#からの.jarファイルの開始 - .propertiesファイルが見つかりません
log4j:WARN No appenders could be found for logger (org.docx4j.jaxb.Context).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
を...
WARN org.docx4j.utils.ResourceUtils .getResource line 84 - Couldn't get resource: docx4j.properties
WARN org.docx4j.Docx4jProperties .init line 22 - Couldn't find/read docx4j.properties; docx4j.properties not found via classloader.
呼び出しを行うC#コードは次のようになります。
Process javaCall = new Process();
var dir = HttpContext.Current.Server.MapPath("~");
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.Arguments = "-Xmx2048m -jar \"" + dir + "\\App_Data\\DocxToPDF.jar\" \"" + sourcePath + "\"";
startInfo.FileName = "\"" + System.Configuration.ConfigurationManager.AppSettings["JdkFilePath"] + "\"";
startInfo.UseShellExecute = false;
javaCall.StartInfo = startInfo;
javaCall.Start();
javaCall.WaitForExit();
私は.jarファイルと、それは内のディレクトリに、Windowsのセキュリティ設定をチェックしましたし、両方のは、すべてのユーザーに完全な権限に設定されています。手動コマンドラインコールとSystem.Diagnostics.Processからの結果が異なる理由は分かりません。
私は本当にいくつかの助けていただきありがとうございます、必要な場合は、より多くの情報を提供します。
オープニングのJavaがどこにあるデフォルトのコマンドラインで
は、Javaのパスが、ProcessStartInfodoesを知っているか分かりませんの?これは最善の解決策ではありません – ControlAltDel
@ControlAltDel、私の最初のアイデアはWord.Interopライブラリを使用していましたが、私のコードは質問から外れたサーバー上で動作するはずです。私の選択肢は、Asposeのライセンス料を払い、サーバーにLibreOfficeをインストールし、そのソリューションを使用するか、このオープンソースのJavaライブラリを使用することでした。 –