网站默认已经启动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开发基本接近尾声了