Jacob 调用金税系统

1.调用打印方法时,若是有预览弹窗提示,程序会阻塞住,并在控制台打印一行:

C:Program Files (x86)��Ʊ���914601007603699430.0ConfigPrintPrinterManager.xml  (乱码部分是金税盘中文路径名)

经检测,此文件是打印机选择文件,已安装过的的打印机,此文件编码未知,用编辑器试了好几种编码格式打开打开都是一堆乱码。若是删掉此文件之后再打印,则会生成新的PrinterManager.xml文件,但是找不到金税发票专用打印机,不过能找到别的打印机(若是主机上还有连的话)。解决办法是将新的PrinterManager.xml文件删除,旧的PrinterManager.xml文件从回收站里还原。

不过金税系统的打印预览窗口并不一定是跳到桌面最前端(10次可能有2次,还极有可能是后面2次),还以为功能没实现,金税接口有bug,一度为此而焦躁卡壳。后来偶然发现是隐藏到了打开的IDE和其他软件后面,将这些软件最小化后或关闭后终于发现了这个令人无比蛋疼的预览弹窗。

 

   @PostConstruct
    public void postConstruct() {
        ComThread.InitSTA(); // 启动线程
        goldTaxCOM = ActiveXComponent.createNewInstance(taxComName);
        BillHelper.TaxCOM = taxComName;
        ComThread.Release();    //不能在此释放资源,否则出现如下错误
    }

   @PreDestroy
    public void postDestroy() {
        ComThread.Release();    //在此释放OK
    }
 1 java.lang.IllegalStateException: Dispatch not hooked to windows memory
 2 at com.jacob.com.Dispatch.throwIfUnattachedDispatch(Dispatch.java:288) ~[jacob-1.19.jar:na]
 3 at com.jacob.com.Dispatch.call(Dispatch.java:528) ~[jacob-1.19.jar:na]
 4 at com.everjiankang.goldentax.util.BillHelper.openCard(BillHelper.java:42) ~[classes/:na]
 5 at com.everjiankang.goldentax.service.impl.GoldentaxServiceImpl.printInvoice(GoldentaxServiceImpl.java:147) [classes/:na]
 6 at com.everjiankang.goldentax.controller.GoldentaxController.printInvoice(GoldentaxController.java:67) [classes/:na]
 7 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_152]
 8 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_152]
 9 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_152]
10 at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_152]
11 。。。。。。
原文地址:https://www.cnblogs.com/guchunchao/p/9967214.html