网站默认已经启动https访问,这时候JRTClient发布wss需要浏览器信任证书才能访问打印。为此在JRTClient内部发布了HTTPS服务,有时候浏览器信任的证书会丢失或者被清理掉,这时候需要手工信任下,当然用JRTBrowser就不用信任证书,对开始和实施还是使用Chrome方便。所以给JRTClient加上右键HTTPS按钮和主界面加上按钮供开发和实施信任证书。
涉及到的技术就是找到谷歌exe地址,打开URL,需要在Windows下访问注册表得到。Linux用命令驱动,代码看下面。
驱动谷歌浏览器打开https链接
修复A4旋转纸张bug
java驱动谷歌浏览器
package Monitor.Util;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.nio.file.Paths;
import java.util.prefs.Preferences;
/**
* 用谷歌打开页面
*/
public class ChomeOpenUtil {
/**
* 打印页面
*
* @param url 路径
* @throws Exception
*/
public static void OpenUrl(String url) throws Exception {
//获取操作系统类型
String os = System.getProperty("os.name").toLowerCase();
//根据操作系统类型调用不同的命令
if (os.contains("win")) {
String path = GetChromePath();
if (!path.isEmpty()) {
File file = new File(path);
if (file.exists()) {
//使用Runtime.exec执行命令
Runtime.getRuntime().exec(path + " "+ url);
return;
}
}
//使用Runtime.exec执行命令
Runtime.getRuntime().exec("cmd /c start " + url);
} else if (os.contains("nix") || os.contains("nux") || os.contains("mac")) {
//Linux or Mac
//使用ProcessBuilder创建一个进程
ProcessBuilder pb = new ProcessBuilder("google-chrome", url);
Process p = pb.start();
} else {
System.out.println("Unsupported OS");
}
}
/**
* 得到谷歌程序地址
*
* @return
* @throws Exception
*/
private static String GetChromePath() throws Exception {
String path = GetExeRegedit("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\chrome.exe");
if (path.isEmpty()) {
path = GetExeRegedit("HKEY_LOCAL_MACHINE\\HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\chrome.exe");
}
if (!path.isEmpty()) {
path += "\\chrome.exe";
}
return path;
}
/**
* 得到注册表值
*
* @param path 执行路径
* @return
* @throws Exception
*/
private static String GetExeRegedit(String path) throws Exception {
Process ps = null;
//当路径中有空格时,要把路径打上引号。
ps = Runtime.getRuntime().exec("reg query \"" + path + "\"");
ps.getOutputStream().close();
InputStreamReader i = new InputStreamReader(ps.getInputStream());
String line;
BufferedReader ir = new BufferedReader(i);
String ret = "";
while ((line = ir.readLine()) != null) {
if (line.contains("Path")) {
String[] arr = line.split(" ");
ret = arr[arr.length - 1];
}
}
return ret;
}
}
JRT开发基本接近尾声了