word回転pdf実現総括
以前のプロジェクトは需要があって、javaコードにword転pdf机能を実现するように要求しました.多くの技术を调査しましたが、あまり成熟していません.特に中国语の文字化けしの问题です.大部分のフレームワークは中国语の部分で问题が発生しました.(私は英语の国で生まれることを望んでいます).最终的な技术の选択型はjacobを利用してwordのpdf机能を実现します.しかしサーバーはlinuxサーバーの上で配置します.だからまた新しい问题が発生しました:linuxとwindowsのインタラクティブなファイル.この问题はやはり比较的に解决しやすいです.windowsの上でpscp.exeがlinuxにファイルを返送します.linuxはftpを使ってwindowにファイルを送信します.
1.linuxはwindowsにファイルを送信し、次のスクリプトを使用します.
JAvaがlinuxスクリプトを呼び出す方法は次のとおりです.
ファイルがwindowsサーバーに正常に送信された後、springのhttpinvoker技術を利用してwindowsサーバーに新しいファイルが届いたことをリモートで通知します.httpinvokerの使用についてはこのファイルを見ることができます:http://blog.csdn.net/qq413041153/article/details/7971194
2.windowsはoffice 2007 sp 1以上のバージョンをインストールする必要がありますjacobコマンドを使用してwordインタフェースを呼び出してpdfを生成することができます.windows上のjavaはjacob wordを利用してpdfを回転するコードは以下の通りです.
3.windowはpscp.exeを使用してlinuxにファイルを送信します.httpinvokerを利用してlinuxサーバーのファイル変換が完了したことを通知します.pscp.exeを初めて使用するとヒントがあります.javaコードで直接呼び出すと直接発売されます.最初の使用はcmdで手動で実行してください.Windowsがlinuxにファイルを送信するbatスクリプトコードは以下の通りです.
ここで、-pwパラメータの後ろにはlinuxパスワードがあります.-pの後ろにはポート番号があり、後ろにはwindowローカルで送信するファイルがあります.%1はbatスクリプトを呼び出すときに渡された最初のパラメータを表します[email protected]:/usr/local/はwapユーザでxxx.xxx.xxx.xxxlinuxサーバにリンクすることを示し、ファイルは/user/localフォルダの下に送信される.
1.linuxはwindowsにファイルを送信し、次のスクリプトを使用します.
#!/bin/bash
ftp -v -n xxx.xxx.xxx.xxx << EOF
user
binary
hash
lcd /user/locale/ ( )
prompt
mput $1( )
bye
EOF
JAvaがlinuxスクリプトを呼び出す方法は次のとおりです.
Process process = Runtime.getRuntime().exec(command)
ファイルがwindowsサーバーに正常に送信された後、springのhttpinvoker技術を利用してwindowsサーバーに新しいファイルが届いたことをリモートで通知します.httpinvokerの使用についてはこのファイルを見ることができます:http://blog.csdn.net/qq413041153/article/details/7971194
2.windowsはoffice 2007 sp 1以上のバージョンをインストールする必要がありますjacobコマンドを使用してwordインタフェースを呼び出してpdfを生成することができます.windows上のjavaはjacob wordを利用してpdfを回転するコードは以下の通りです.
private synchronized void word2PDF(String docfile, String toFile) {
logger.info("WTopTools word2PDF begin");
ActiveXComponent app = new ActiveXComponent("Word.Application");
try {
app.setProperty("Visible", new Variant(false));
Dispatch docs = app.getProperty("Documents").toDispatch();
Dispatch doc = Dispatch.invoke(
docs,
"Open",
Dispatch.Method,
new Object[] { docfile, new Variant(false),
new Variant(true) }, new int[1]).toDispatch();
File file1 = new File(toFile);
File file2 = new File(toFile + ".pdf");
if (file1.exists()) {
file1.delete();
}
if (file2.exists()) {
file2.delete();
}
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
toFile, new Variant(17) }, new int[1]);
Variant f = new Variant(false);
Dispatch.call(doc, "Close", f);
logger.info(" :" + toFile);
} catch (Exception e) {
e.printStackTrace();
logger.info(" :" + docfile + ", " + e.getMessage());
} finally {
app.invoke("Quit", new Variant[] {});
}
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
logger.info("WTopTools word2PDF end");
}
3.windowはpscp.exeを使用してlinuxにファイルを送信します.httpinvokerを利用してlinuxサーバーのファイル変換が完了したことを通知します.pscp.exeを初めて使用するとヒントがあります.javaコードで直接呼び出すと直接発売されます.最初の使用はcmdで手動で実行してください.Windowsがlinuxにファイルを送信するbatスクリプトコードは以下の通りです.
pscp.exe -q -pw -P d:\file\%1 [email protected]:/usr/local/
ここで、-pwパラメータの後ろにはlinuxパスワードがあります.-pの後ろにはポート番号があり、後ろにはwindowローカルで送信するファイルがあります.%1はbatスクリプトを呼び出すときに渡された最初のパラメータを表します[email protected]:/usr/local/はwapユーザでxxx.xxx.xxx.xxxlinuxサーバにリンクすることを示し、ファイルは/user/localフォルダの下に送信される.