使用java应用程序管理许多文档扫描

时间:2016-02-24 16:16:00

标签: java twain

我正在尝试创建一个应用程序来扫描扫描仪中的文档,我找到了一个基于mithcomputing免费库的应用程序,我在github https://github.com/ashishkataria/browserWebScanning中找到了

它显示了一个面板,您可以从中选择可用扫描仪列表并扫描文档。

public void getScan() 
{

    try 
    {   
        scanner.acquire();
    } 
    catch (ScannerIOException e1) 
    {
        IJ.showMessage("Access denied! \nTwain dialog maybe already opened!");
        e1.printStackTrace();
    }
}



 public Image getImage()
 { 
     Image image = imp.getImage();
     return image;
 }



public void update(ScannerIOMetadata.Type type, ScannerIOMetadata metadata) {



    if (type.equals(ScannerIOMetadata.ACQUIRED)) 
    {   

if(imp!=null)
{
    jContentPane.remove(ipanel);
    jContentPane.remove(cpanel);
    jContentPane.remove(crpdpanel);
}


         imp = new ImagePlus("Scan", metadata.getImage());

         im = imp.getImage();

         imagePanel = new ImagePanel(im);
         imagePanel.updateUI();

         imagePanel.repaint();
         imagePanel.revalidate();

         ClipMover mover = new ClipMover(imagePanel);
         imagePanel.addMouseListener(mover);
         imagePanel.addMouseMotionListener(mover);

          ipanel = imagePanel.getPanel();

         ipanel.setBorder(new LineBorder(Color.blue,1));
         ipanel.setBorder(BorderFactory.createTitledBorder("Scanned Image"));
         ipanel.setBounds(0, 30,600, 600);
         ipanel.repaint();
         ipanel.revalidate();
         ipanel.updateUI();
         jContentPane.add(ipanel);
         jContentPane.getRootPane().revalidate();
         jContentPane.updateUI();

         cpanel = imagePanel.getUIPanel();
         cpanel.setBounds(700, 30,300, 150);
         cpanel.repaint();
         cpanel.setBorder(new LineBorder(Color.blue,1));
         cpanel.setBorder(BorderFactory.createTitledBorder("Cropping Image"));
         cpanel.setBackground(Color.white);
         jContentPane.add(cpanel);


         jContentPane.repaint();
         jContentPane.revalidate();




        metadata.setImage(null);
        try {
            new uk.co.mmscomputing.concurrent.Semaphore(0, true).tryAcquire(2000, null);
        } catch (InterruptedException e) {
            IJ.error(e.getMessage());

        }

    } 




    else if (type.equals(ScannerIOMetadata.NEGOTIATE)) {
        ScannerDevice device = metadata.getDevice();
        try {
            device.setResolution(100);
        } catch (ScannerIOException e) {
            IJ.error(e.getMessage());
        }

          try{

          device.setShowUserInterface(true);
          device.setResolution(100); }catch(Exception e){
          e.printStackTrace(); }

    }


    else if (type.equals(ScannerIOMetadata.STATECHANGE)) {
        System.out.println("Scanner State "+metadata.getStateStr());
        System.out.println("Scanner State "+metadata.getState());

        if ((metadata.getLastState() == 3) && (metadata.getState() == 4)){} 

    } else if (type.equals(ScannerIOMetadata.EXCEPTION)) {
        IJ.error(metadata.getException().toString());

    }

}

我试图让它处理多个文档并保存在pdf文件中,此库现在只处理1个文档。 我想知道如何将图像保存在缓冲区或其他内容中,并重新扫描,直到用户完成。 是否有一个功能可以将这些图像保存在pdf文件中?

0 个答案:

没有答案