加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java Twain 直接打印/界面打印

发布时间:2020-12-15 08:02:26 所属栏目:Java 来源:网络整理
导读:这两天,在搞归档系统。需要用到Twain协议来驱动打印机。 找了两天,java的twain操作资料真的不多。而且我还是要找直接打印的功能。 后来只能静下心来看类库和源码。最后搞定他。 ? 打印方式分为2种, 1 直接打印:就是程序跑起来,打印机一起跑 2 界面打印

这两天,在搞归档系统。需要用到Twain协议来驱动打印机。

找了两天,java的twain操作资料真的不多。而且我还是要找直接打印的功能。

后来只能静下心来看类库和源码。最后搞定他。

?

打印方式分为2种,

1 直接打印:就是程序跑起来,打印机一起跑

2 界面打印:程序跑起来,只是调用打印的默认界面,打印操作在界面完成。

废话不多说了。上攻略:

?

一 ,首先下载 Twain相关架包

1 直接下载:(我用的方案1。)

https://imagej.nih.gov/ij/plugins/twain-scan.html

?

?

2 github:

https://github.com/alex73/mmscomputing/tree/master/src/uk/co/mmscomputing/device

主要是 Twain和Scanner

二 ,准备

架包,该导入的导入。github下载的话,可以直接放java类。

扫描机,该装驱动的装驱动。确保自己打印机能正常工作。

需要打印的材料放好。

我用的是EPSON GT-1500。

?

三 ,上代码

1 直接打印:

package com.kintech.scanAF.controllerScan;
 
import uk.co.mmscomputing.device.scanner.Scanner;
import uk.co.mmscomputing.device.scanner.ScannerIOException;
import uk.co.mmscomputing.device.scanner.ScannerIOMetadata;
import uk.co.mmscomputing.device.scanner.ScannerListener;
import uk.co.mmscomputing.device.twain.TwainScanner;
import uk.co.mmscomputing.device.twain.jtwain;
 
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
 
/**
 * @author Tyler
 * @date 2019/8/16
 */
public class testTwain_Source implements ScannerListener {
 
    static int index=0;
    static String filename=System.getProperty("user.home")+"My Documentstest";
 
    Scanner scanner = Scanner.getDevice();
 
    public testTwain_Source(String[] var1) throws ScannerIOException {
        TwainScanner twainScanner = new TwainScanner();
        twainScanner.addListener(this);
        jtwain.setScanner(twainScanner);
        jtwain.getSource().setShowUI(false);
        jtwain.acquire(twainScanner);
    }
 
    public void update(ScannerIOMetadata.Type var1,ScannerIOMetadata var2) {
        if (var1.equals(ScannerIOMetadata.ACQUIRED)) {
            System.out.println("ACQUIRED");
            BufferedImage var3 = var2.getImage();
            try {
                ImageIO.write(var3,"png",new File(filename+index+".png"));
            } catch (Exception var5) {
                var5.printStackTrace();
            }
        } else if (var1.equals(ScannerIOMetadata.NEGOTIATE)) {
            System.out.println("NEGOTIATE");
//            ScannerDevice var6 = var2.getDevice();
            BufferedImage var3 = var2.getImage();
            try {
                ImageIO.write(var3,new File(filename+index+".png"));
            } catch (Exception var5) {
                var5.printStackTrace();
            }
        } else if (var1.equals(ScannerIOMetadata.STATECHANGE)) {
            System.out.println("STATECHANGE");
            System.err.println(var2.getStateStr());
            if (var2.isFinished()) {
                System.exit(0);
            }
        } else if (var1.equals(ScannerIOMetadata.EXCEPTION)) {
            System.out.println("EXCEPTION");
            var2.getException().printStackTrace();
        }
 
    }
 
    public static void main(String[] var0) throws ScannerIOException {
        new testTwain_Source(var0);
    }
}

?

2 界面打印

这个就简单了。(下载的jar里面有)

可以直接写一个class,main中 new TwainExample就可以了。

源码如下:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
 
package uk.co.mmscomputing.device.twain;
 
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import uk.co.mmscomputing.device.scanner.Scanner;
import uk.co.mmscomputing.device.scanner.ScannerDevice;
import uk.co.mmscomputing.device.scanner.ScannerIOException;
import uk.co.mmscomputing.device.scanner.ScannerIOMetadata;
import uk.co.mmscomputing.device.scanner.ScannerListener;
import uk.co.mmscomputing.device.scanner.ScannerIOMetadata.Type;
 
public class TwainExample implements ScannerListener {
    static TwainExample app;
    Scanner scanner = Scanner.getDevice();
 
    public TwainExample(String[] var1) throws ScannerIOException {
        this.scanner.addListener(this);
        this.scanner.acquire();
    }
 
    public void update(Type var1,ScannerIOMetadata var2) {
        if (var1.equals(ScannerIOMetadata.ACQUIRED)) {
            BufferedImage var3 = var2.getImage();
            System.out.println("Have an image now!");
 
            try {
                ImageIO.write(var3,new File("mmsc_image.png"));
            } catch (Exception var5) {
                var5.printStackTrace();
            }
        } else if (var1.equals(ScannerIOMetadata.NEGOTIATE)) {
            ScannerDevice var6 = var2.getDevice();
        } else if (var1.equals(ScannerIOMetadata.STATECHANGE)) {
            System.err.println(var2.getStateStr());
            if (var2.isFinished()) {
                System.exit(0);
            }
        } else if (var1.equals(ScannerIOMetadata.EXCEPTION)) {
            var2.getException().printStackTrace();
        }
 
    }
 
    public static void main(String[] var0) {
        try {
            app = new TwainExample(var0);
        } catch (Exception var2) {
            var2.printStackTrace();
        }
 
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读