我一直在尝试使用procrun将documents4j作为Windows服务安排进行RTF到PDF的转换,但它不断抛出以下错误:
com.documents4j.throwables.ConversionInputException: The sent input is invalid
at com.documents4j.util.Reaction$ConversionInputExceptionBuilder.make(Reaction.java:159) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na]
at com.documents4j.util.Reaction$ExceptionalReaction.apply(Reaction.java:75) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na]
at com.documents4j.ws.ConverterNetworkProtocol$Status.resolve(ConverterNetworkProtocol.java:97) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na]
at com.documents4j.job.WebserviceRequestFutureWrapper.handle(WebserviceRequestFutureWrapper.java:48) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na]
at com.documents4j.job.WebserviceRequestFutureWrapper.get(WebserviceRequestFutureWrapper.java:38) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na]
at com.documents4j.job.WebserviceRequestFutureWrapper.get(WebserviceRequestFutureWrapper.java:13) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na]
at com.documents4j.job.AbstractFutureWrappingPriorityFuture.run(AbstractFutureWrappingPriorityFuture.java:78) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_31]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_31]
at java.lang.Thread.run(Unknown Source) [na:1.8.0_31]
我为procrun
创建了以下bat文件
@echo off
set SELF=%CD%
set SERVICE_NAME=PCNService
set SERVICE_URL=
set PR_INSTALL=%SELF%\prunsrv.exe
set PRMGR_INSTALL=%SELF%\prunmgr.exe
@REM Service Log Configuration
set PR_LOGPREFIX=%SERVICE_NAME%
set PR_LOGPATH=%SELF%\logs
set PR_STDOUTPUT=auto
set PR_STDERROR=auto
set PR_LOGLEVEL=Debug
@REM Path to Java Installation
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_05
set PR_JVM=%JAVA_HOME%\jre\bin\server\jvm.dll
set PR_CLASSPATH=%SELF%\documents4j-server-standalone-0.3-SNAPSHOT-shaded.jar
@REM JVM Configuration
set PR_JVMOPTIONS=
@REM Startup Configuration
set JETTY_START_CLASS=com.documents4j.standalone.StandaloneServer
set PR_STARTUP=auto
set PR_STARTMODE=java
set PR_STARTCLASS=%JETTY_START_CLASS%
set PR_STARTMETHOD=start
set PR_STARTPARAMS=http://localhost:9998
@REM Shutdown Configuration
set PR_STOPMODE=java
set PR_STOPCLASS=%JETTY_START_CLASS%
set PR_STOPMETHOD=stop
set PR_STOPPARAMS=
if "x%1x" == "xx" goto displayUsage
set SERVICE_CMD=%1
shift
if "x%1x" == "xx" goto checkServiceCmd
:checkServiceCmd
if /i %SERVICE_CMD% == install goto doInstall
if /i %SERVICE_CMD% == delete goto doDelete
if /i %SERVICE_CMD% == stop goto doStop
if /i %SERVICE_CMD% == start goto doStart
if /i %SERVICE_CMD% == monitor goto doMonitor
if /i %SERVICE_CMD% == run goto doRun
if /i %SERVICE_CMD% == console goto doConsole
echo Unknown parameter "%SERVICE_CMD%"
:displayUsage
echo.
echo Usage: service.bat install/start/stop/delete
goto end
:doInstall
rem Install the service
echo Installing the service '%SERVICE_NAME%' ...
%PR_INSTALL% //IS//%SERVICE_NAME% ^
--DisplayName="%SERVICE_NAME%" ^
--Install="%PR_INSTALL%" ^
--Startup="%PR_STARTUP%" ^
--LogPath="%PR_LOGPATH%" ^
--LogPrefix="%PR_LOGPREFIX%" ^
--LogLevel="%PR_LOGLEVEL%" ^
--StdOutput="%PR_STDOUTPUT%" ^
--StdError="%PR_STDERROR%" ^
--JavaHome="%JAVA_HOME%" ^
--Jvm="%PR_JVM%" ^
--JvmMs="" ^
--JvmMx="" ^
--JvmSs="" ^
--JvmOptions="%PR_JVMOPTIONS%" ^
--Classpath="%PR_CLASSPATH%" ^
--StartMode="%PR_STARTMODE%" ^
--StartClass="%PR_STARTCLASS%" ^
--StartMethod="%PR_STARTMETHOD%" ^
--StartParams="%PR_STARTPARAMS%" ^
--StopMode="%PR_STOPMODE%" ^
--StopClass="%PR_STOPCLASS%" ^
--StopMethod="%PR_STOPMETHOD%" ^
--StopParams="%PR_STOPPARAMS%" ^
--Type interactive
if not errorlevel 1 goto installed
echo Failed to install "%SERVICE_NAME%" service. Refer to log in %PR_LOGPATH%
goto end
:doStart
rem Starting the service
echo Starting the service '%SERVICE_NAME%' ...
%PR_INSTALL% //ES//%SERVICE_NAME%
if not errorlevel 1 goto started
echo Failed to start "%SERVICE_NAME%" service. Refer to log in %PR_LOGPATH%
goto end
:doStop
rem Stop the service
echo Stopping the service '%SERVICE_NAME%' ...
%PR_INSTALL% //SS//%SERVICE_NAME%
if not errorlevel 1 goto stopped
echo Failed to stop "%SERVICE_NAME%" service. Refer to log in %PR_LOGPATH%
goto end
:doDelete
rem Delete the service
echo Deleting the service '%SERVICE_NAME%' ...
%PR_INSTALL% //DS//%SERVICE_NAME%
if not errorlevel 1 goto deleted
echo Failed to delete "%SERVICE_NAME%" service. Refer to log in %PR_LOGPATH%
goto end
:doMonitor
rem Monitor the service
echo Monitoring the service '%SERVICE_NAME%' ...
echo Look for the service in the system tray. You can modify the properties in the GUI.
%PRMGR_INSTALL% //MR//%SERVICE_NAME%
goto end
:doRun
rem Run the service
echo Running the service '%SERVICE_NAME%' ...
%PR_INSTALL% //RS//%SERVICE_NAME%
goto end
:doEdit
rem Edit the service
echo Editing the service '%SERVICE_NAME%' ...
%PRMGR_INSTALL% //ES//%SERVICE_NAME%
goto end
:doConsole
rem Running the service as console application
%PR_INSTALL% //TS//%SERVICE_NAME%
goto end
:installed
echo The Service "%SERVICE_NAME%" has been installed
goto logging
goto end
:started
echo The Service "%SERVICE_NAME%" has been started
goto logging
goto end
:deleted
echo The Service "%SERVICE_NAME%" has been deleted
goto end
:stopped
echo The Service "%SERVICE_NAME%" has been stopped
goto logging
goto end
:logging
echo Refer to log in %PR_LOGPATH%
:end
</code>
我能够成功安装jar作为Windows服务并启动/停止它
此外,当通过命令行执行com.documents4j.standalone.StandaloneServer类时,转换会正确发生。
答案 0 :(得分:2)
您是否阅读过使用Word作为Windows服务运行documents4j的信息?
当作为Windows服务一起运行时,documents4j可能会出现故障 与MS Office转换。请注意,MS Office没有正式发布 支持在服务上下文中执行。当作为服务运行时,MS Office始终使用MS Window的本地服务帐户启动 不配置桌面。但是,MS Office希望桌面能够 存在是为了正常运行。没有这样的桌面配置, MS Office将正确启动但无法读取任何输入文件。在 为了让MS Office在服务上下文中运行,有两个 可能的方法,更推荐第一种方法:
在32位系统上,创建文件夹C:\ Windows \ System32 \ config \ systemprofile \ Desktop。在64位系统上, 创建文件夹C:\ Windows \ SysWOW64 \ config \ systemprofile \ Desktop。
可在MSDN上找到更多信息。 您可以操作MS Window的注册表,以便MS Office应用程序使用除本地服务之外的其他帐户运行 帐户。这种方法记录在MSDN上。请注意,这会破坏MS Window的沙箱模型并对其施加了额外的安全威胁 运行MS Office的机器。