DOCXファイルをPDFファイルに変換しようとしましたが、DOCXをPDFファイルに完全に変換するvbスクリプトコードが見つかりました。コードはjavaを介して実行することができます。Apache TomcatにデプロイされたJavaコードからコマンドを実行
ローカルマシンでコードを実行するとファイルが生成されますが、サーバーにアプリケーションをデプロイすると、コードはエラーなしで実行されますが、ファイルは生成されません。
javaからコマンドを実行する権限が必要ですか?
Serverオペレーティングシステム:のWindows Server 2012 R2の標準
アプリケーションサーバ:Apache Tomcatの7.0.75
コード: 1)Javaの
public static void generatePDF() {
try {
File file = new File("C:\\Docx_To_Pdf_Converter\\errorLog.txt");
PrintStream printStreamToFile = new PrintStream(file);
System.setOut(printStreamToFile);
String docToPdf = "C:\\Docx_To_Pdf_Converter\\doc2pdf.bat";
File docPath = new File("C:\\Docx_To_Pdf_Converter\\Letter1.docx");
File pdfPath = new File("C:\\Docx_To_Pdf_Converter\\LetterPDF.pdf");
String command = String.format("%s %s %s", docToPdf, docPath, pdfPath);
Process process = Runtime.getRuntime().exec(command);
// The next line is optional and will force the current Java
//thread to block until the script has finished its execution.
process.waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
以下は詳細です
と.batファイルコード:
@Echo off
pushd %~dp0
cscript C:\Docx_To_Pdf_Converter\doc2pdf.vbs %1 %2
実際に私達があなたの展開サーバーへのアクセス権を持っていないとして、あなたに100%の保証答えを与えることは不可能であるが、ここで私が考えるものだPDF
Const wdFormatPDF = 17 ' PDF format.
Const wdFormatXPS = 18 ' XPS format.
Const WdDoNotSaveChanges = 0
Dim arguments
Set arguments = WScript.Arguments
Function CheckUserArguments()
If arguments.Unnamed.Count < 1 Or arguments.Unnamed.Count > 2 Then
WScript.Echo "Use:"
WScript.Echo "<script> input.doc"
WScript.Echo "<script> input.doc output.pdf"
WScript.Quit 1
End If
End Function
// Transforms a doc to a pdf
Function DocToPdf(docInputFile, pdfOutputFile)
Dim fileSystemObject
Dim wordApplication
Dim wordDocument
Dim wordDocuments
Dim baseFolder
Set fileSystemObject = CreateObject("Scripting.FileSystemObject")
Set wordApplication = CreateObject("Word.Application")
Set wordDocuments = wordApplication.Documents
docInputFile = fileSystemObject.GetAbsolutePathName(docInputFile)
baseFolder = fileSystemObject.GetParentFolderName(docInputFile)
If Len(pdfOutputFile) = 0 Then
pdfOutputFile = fileSystemObject.GetBaseName(docInputFile) + ".pdf"
End If
If Len(fileSystemObject.GetParentFolderName(pdfOutputFile)) = 0 Then
pdfOutputFile = baseFolder + "\" + pdfOutputFile
End If
//' Disable any potential macros of the word document.
wordApplication.WordBasic.DisableAutoMacros
// 'from below line the code does not executes
Set wordDocument = wordDocuments.Open(docInputFile)
wordDocument.SaveAs pdfOutputFile, wdFormatPDF
wordDocument.Close WdDoNotSaveChanges
wordApplication.Quit WdDoNotSaveChanges
Set wordApplication = Nothing
Set fileSystemObject = Nothing
End Function
// ' Execute script
Call CheckUserArguments()
If arguments.Unnamed.Count = 2 Then
Call DocToPdf(arguments.Unnamed.Item(0), arguments.Unnamed.Item(1))
Else
Call DocToPdf(arguments.Unnamed.Item(0), "")
End If
Set arguments = Nothing
サーバーのオペレーティングシステムとは何ですか?コンバータはインストールされていますか?それは同じディレクトリにありますか?あなたの質問にはたくさんの情報がありません。それがなければ誰もあなたを助けません。このサイトの使い方を知るには、[help]にアクセスして[ask]を読んでください。今あなたを助けるように頼まれている人の立場に立つようにしてください。あなたが手助けするためにどのような情報を見たいでしょうか?また、あなたのコードが十分に表示されていない...例外がスローされたらどうなりますか?あなたはそれをキャッチしますか? –
こんにちはジム、短い説明のために申し訳ありません、私は自分のコードを更新しました。 –
@JimGarrison私は、必要に応じて詳細、まだ更新や提案、私の質問を編集した否定的な投票やそれ以上の情報が必要ですか?私に教えてください....ありがとう。 –