word回転pdf実現総括


以前のプロジェクトは需要があって、javaコードにword転pdf机能を実现するように要求しました.多くの技术を调査しましたが、あまり成熟していません.特に中国语の文字化けしの问题です.大部分のフレームワークは中国语の部分で问题が発生しました.(私は英语の国で生まれることを望んでいます).最终的な技术の选択型はjacobを利用してwordのpdf机能を実现します.しかしサーバーはlinuxサーバーの上で配置します.だからまた新しい问题が発生しました:linuxとwindowsのインタラクティブなファイル.この问题はやはり比较的に解决しやすいです.windowsの上でpscp.exeがlinuxにファイルを返送します.linuxはftpを使ってwindowにファイルを送信します.
 
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フォルダの下に送信される.