Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java应用程序管理多个文档扫描_Java_Twain - Fatal编程技术网

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

使用java应用程序管理多个文档扫描,java,twain,Java,Twain,我正在尝试制作一个应用程序来扫描扫描仪上的文档,我发现了一个基于我在github中找到的mmscomputing免费库的应用程序 它显示一个面板,从中可以从可用扫描仪列表中选择扫描仪并扫描文档 public void getScan() { try { scanner.acquire(); } catch (ScannerIOException e1) { IJ.showMessage("Access den

我正在尝试制作一个应用程序来扫描扫描仪上的文档,我发现了一个基于我在github中找到的mmscomputing免费库的应用程序

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

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文件中,这个库现在只处理一个文档。 我想知道如何将图像保存在缓冲区或其他地方,然后重新扫描,直到用户完成操作。
有没有一个功能可以将这些图像保存在pdf文件中

欢迎来到StackOverflow。一定要看一看。我们帮助您解决特定的编程问题,但您的问题超出了本网站的范围。您尝试了什么?您面临哪些具体问题?此外,请不要在此处删除大量代码,而是尝试将其归结为。对不起,我将尝试进行编辑以澄清问题,我的问题是有一个缓冲区,我可以在其中存储图像并要求再次扫描,直到用户完成扫描,然后将所有内容保存在同一个pdf文档中?我只是想知道该去哪里找