Saya sedang menguji berbagai cara untuk menggunakan dokumen4J menggunakan toples teduh di Windows 10. Saya menggunakan yang berikut:

SERVER: documents4j-server-standalone-1.1.5-shaded.jar
Command Line: java -jar %~dp0documents4j-server-standalone-1.1.5-shaded.jar http://localhost:9998 -L%~dp0server-log.log -Vall 

CLIENT: documents4j-client-standalone-1.1.5-shaded.jar
Command Line: java -jar %~dp0documents4j-client-standalone-1.1.5-shaded.jar http://localhost:9998 -L%~dp0client-log.log -Vall

Di konsol klien saya masuk 0 dan path file lengkap I.E. C:\temp2\Sample.docx

Pesan ini kemudian ditampilkan: konversi terjadwal: C:\temp2\Sample.docx -> C:\temp2\Sample.docx.txt

Konversi berhasil ketika server mandiri dimulai sebagai pengguna yang login tetapi gagal (tidak ada file konversi yang dihasilkan) ketika dimulai dengan izin administrator.

Berikut ini adalah ekstrak dari log (terlampir):

log klien

Line 2220

FAILED [ADMINISTRATOR]
2021-04-03 13:39:02,731 WARN  [main] c.documents4j.standalone.StandaloneClient - Converter com.documents4j.job.RemoteConverter@475b7792 is not operational

SUCCESSFUL [USER]
2021-04-03 13:54:49,694 INFO  [main] c.documents4j.standalone.StandaloneClient - Converter com.documents4j.job.RemoteConverter@160c3ec1 is operational

log server

LIne 303
FAILED [ADMINISTRATOR]
2021-04-03 13:39:01,862 TRACE [grizzly-http-server-0] c.d.c.msoffice.MicrosoftWordBridge - Execute no-argument script C:\Users\GRAEME~1.PTB\AppData\Local\Temp\1617419299961-0\word_assert1520023368.vbs
2021-04-03 13:39:01,862 DEBUG [grizzly-http-server-0] org.zeroturnaround.exec.ProcessExecutor - Executing [cmd, /S, /C, ""C:\Users\GRAEME~1.PTB\AppData\Local\Temp\1617419299961-0\word_assert1520023368.vbs""] in C:\Users\GRAEME~1.PTB\AppData\Local\Temp\1617419299961-0.
2021-04-03 13:39:01,872 DEBUG [grizzly-http-server-0] org.zeroturnaround.exec.ProcessExecutor - Started Process[pid=18600, exitValue="not exited"]
2021-04-03 13:39:01,873 TRACE [Thread-4] o.zeroturnaround.exec.stream.StreamPumper - org.zeroturnaround.exec.stream.StreamPumper@4e48de90 started.
2021-04-03 13:39:01,873 TRACE [Thread-5] o.zeroturnaround.exec.stream.StreamPumper - org.zeroturnaround.exec.stream.StreamPumper@786a36ca started.
2021-04-03 13:39:02,150 TRACE [Thread-4] o.zeroturnaround.exec.stream.StreamPumper - org.zeroturnaround.exec.stream.StreamPumper@4e48de90 finished.
2021-04-03 13:39:02,150 TRACE [Thread-5] o.zeroturnaround.exec.stream.StreamPumper - org.zeroturnaround.exec.stream.StreamPumper@786a36ca finished.
2021-04-03 13:39:02,153 DEBUG [WaitForProcess-Process[pid=18600, exitValue="not exited"]] org.zeroturnaround.exec.WaitForProcess - Process[pid=18600, exitValue=-6] stopped with exit code -6

SUCCESSFUL [USER]
2021-04-03 13:54:48,260 TRACE [grizzly-http-server-1] c.d.c.msoffice.MicrosoftWordBridge - Execute no-argument script C:\Users\GRAEME~1.PTB\AppData\Local\Temp\1617420258290-0\word_assert59744299.vbs
2021-04-03 13:54:48,261 DEBUG [grizzly-http-server-1] org.zeroturnaround.exec.ProcessExecutor - Executing [cmd, /S, /C, ""C:\Users\GRAEME~1.PTB\AppData\Local\Temp\1617420258290-0\word_assert59744299.vbs""] in C:\Users\GRAEME~1.PTB\AppData\Local\Temp\1617420258290-0.
2021-04-03 13:54:48,317 DEBUG [grizzly-http-server-1] org.zeroturnaround.exec.ProcessExecutor - Started Process[pid=1724, exitValue="not exited"]
2021-04-03 13:54:48,318 TRACE [Thread-5] o.zeroturnaround.exec.stream.StreamPumper - org.zeroturnaround.exec.stream.StreamPumper@11cbcb1c started.
2021-04-03 13:54:48,318 TRACE [Thread-4] o.zeroturnaround.exec.stream.StreamPumper - org.zeroturnaround.exec.stream.StreamPumper@2c99b36 started.
2021-04-03 13:54:48,750 TRACE [Thread-4] o.zeroturnaround.exec.stream.StreamPumper - org.zeroturnaround.exec.stream.StreamPumper@2c99b36 finished.
2021-04-03 13:54:48,750 TRACE [Thread-5] o.zeroturnaround.exec.stream.StreamPumper - org.zeroturnaround.exec.stream.StreamPumper@11cbcb1c finished.
2021-04-03 13:54:48,753 DEBUG [WaitForProcess-Process[pid=1724, exitValue="not exited"]] org.zeroturnaround.exec.WaitForProcess - Process[pid=1724, exitValue=3] stopped with exit code 3

Juga, peringatan ini muncul ketika klien mandiri dimulai:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.sun.xml.bind.v2.runtime.reflect.opt.Injector (file:/C:/documents4j/documents4j-server-standalone-1.1.5-shaded.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int)
WARNING: Please consider reporting this to the maintainers of com.sun.xml.bind.v2.runtime.reflect.opt.Injector
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
1
Graeme Wellington 3 April 2021, 08:50

2 jawaban

Jawaban Terbaik

Seperti yang ditunjukkan dalam dokumentasi dokumen4j, Anda mungkin perlu mempersiapkan pengguna yang biasanya diatur untuk menjalankan Word. Seperti yang dikatakan dalam dokumentasi:

  1. Pada sistem 32-bit, buat folder C: \ windows \ system32 \ config \ systemprofile \ desktop. Pada sistem 64-bit, buat folder C: \ windows \ syswow64 \ config \ systemprofile \ desktop. Informasi lebih lanjut dapat ditemukan di MSDN.
  2. Anda dapat memanipulasi registri MS Window sedemikian rupa sehingga aplikasi MS Office dijalankan dengan akun lain daripada akun layanan lokal. Pendekatan ini didokumentasikan pada MSDN. Perhatikan bahwa ini mematahkan model kotak pasir MS Window dan memaksakan ancaman keamanan tambahan pada mesin yang menjalankan MS Office.
0
Rafael Winterhalter 5 April 2021, 21:05

Terima kasih Rafael - sekarang terpecahkan! Saya kembali atas informasi itu dan sekarang saya mengerti apa yang terjadi. Untuk menjalankan Word / Excel dengan sukses membutuhkan profil pengguna yang valid - dalam kasus saya itu adalah profil yang diinstal oleh Word / Excel. Word / Excel membutuhkan izin untuk menulis file sementara ke% userprofile% \ lokal \ temp. Ketika sebuah program dijalankan sebagai administrator tampaknya baik sistem mencoba untuk menulis ke lokasi yang tidak ada atau sistem tidak memiliki izin ke% userprofile% \ temp lokal.

Selain dokumentasi dokumen4J satu langkah tambahan diperlukan.

Ini diuraikan dalam posting lama pada subjek ini pada 10 Oktober 2018 dari Céderic Missinne: mengotomatiskan MS Word di Server 2012 R2

Start - Run - mmc comexp.msc /32
Expand: Component Services –> Computers – My Computer – DCOM Config
Search for: Microsoft Word 97 –> 2003 Document
RMC – Properties – Go to tab: Identity Set from “The launching user” to “This user”.
Use a “local Administrator account” which has once signed in to the server machine and 
has opened Word at least once in an interactive desktop.

Dalam kasus saya, saya berubah dari 'pengguna interaktif' ke 'pengguna peluncuran'.

Standaloneserver kemudian bekerja dengan sukses ketika dijalankan sebagai administrator.

Ini juga memecahkan masalah serupa di mana saya memiliki standaloneserver berjalan sebagai layanan Windows menggunakan Apache Procrun!

Terima kasih lagi Rafael!

0
Graeme Wellington 5 April 2021, 22:36