Descrição do Projeto: Uma aplicação em Java que seja capaz, de digitalizar um documento e que me retorne uma BufferedImage, para que eu manipule como eu bem quiser.
Bibliotecas Utilizadas: [quote]IJ.jar | mmsc.jar | uk.co.mmscomputing.device.twain.jar[/quote]
Sistema Operacional: [quote]Windows 7 Professional ~ 64 bits[/quote]
Impressora/Scanner Utilizada(o): [quote]Epson Stylus CX7300[/quote]
Código de Exemplo : [code]/*
- To change this license header, choose License Headers in Project Properties.
- To change this template file, choose Tools | Templates
- and open the template in the editor.
*/
package paint;
/*
A scanner plugin for ImageJ which uses the free mm’s computing java library
(available at http://www.mms-computing.co.uk/)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.*/
import ij.IJ;
import ij.ImagePlus;
import ij.plugin.PlugIn;
import java.awt.Rectangle;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
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 javax.swing.WindowConstants;
import uk.co.mmscomputing.device.twain.TwainScanner;
public class Scan extends JFrame implements PlugIn, ScannerListener {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JButton jButton = null;
private JButton jButton1 = null;
private Scanner scanner;
public static void main(String[] args) {
new Scan().setVisible(true);
}
public void run(String arg0) {
new Scan().setVisible(true);
}
/**
* This is the default constructor
*/
public Scan() {
super();
initialize();
try {
scanner = (TwainScanner) Scanner.getDevice();
scanner.addListener(this);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300, 120);
this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
this.setResizable(false);
this.setContentPane(getJContentPane());
this.setTitle("Scan");
this.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
}
});
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJButton(), null);
jContentPane.add(getJButton1(), null);
}
return jContentPane;
}
/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setBounds(new Rectangle(4, 16, 131, 42));
jButton.setText("Select Device");
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
if (scanner.isBusy() == false) {
selectDevice();
}
}
});
}
return jButton;
}
/**
* This method initializes jButton1
*
* @return javax.swing.JButton
*/
private JButton getJButton1() {
if (jButton1 == null) {
jButton1 = new JButton();
jButton1.setBounds(new Rectangle(160, 16, 131, 42));
jButton1.setText("Scan");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
getScan();
}
});
}
return jButton1;
}
/* Select the twain source! */
public void selectDevice() {
try {
scanner.select();
} catch (ScannerIOException e1) {
IJ.error(e1.toString());
}
}
/* Get the scan! */
public void getScan() {
try {
scanner.acquire();
} catch (ScannerIOException e1) {
IJ.showMessage("Access denied! \nTwain dialog maybe already opened!");
// e1.printStackTrace();
}
}
public void update(ScannerIOMetadata.Type type, ScannerIOMetadata metadata) {
if (type.equals(ScannerIOMetadata.ACQUIRED)) {
ImagePlus imp = new ImagePlus("Scan", metadata.getImage());
imp.show();
metadata.setImage(null);
try {
new uk.co.mmscomputing.concurrent.Semaphore(0, true).tryAcquire(2000, null);
} catch (InterruptedException e) {
IJ.error(e.getMessage());
// e.printStackTrace();
}
} else if (type.equals(ScannerIOMetadata.NEGOTIATE)) {
ScannerDevice device = metadata.getDevice();
try {
device.setResolution(300);
} catch (ScannerIOException e) {
IJ.error(e.getMessage());
}
/*
* More options if necessary! try{
* device.setShowUserInterface(true);
* device.setShowProgressBar(true);
* device.setRegionOfInterest(0,0,210.0,300.0);
* device.setResolution(100); }catch(Exception e){
* e.printStackTrace(); }
*/
} else if (type.equals(ScannerIOMetadata.STATECHANGE)) {
// IJ.error(metadata.getStateStr());
} else if (type.equals(ScannerIOMetadata.EXCEPTION)) {
IJ.error(metadata.getException().toString());
} else if (metadata.isFinished()){
}
}
} // @jve:decl-index=0:visual-constraint=“95,130”
[/code]
Prints da Aplicação em Funcionamento: [quote]
[/quote]
Descrição do Problema: Então, como vocês estão vendo, no lugar onde era pra selecionar o Scanner, não existe nada/nenhuma
opção pra ser selecionada, e se for clicado em Scan sem selecionar nenhuma Impressora/Scanner, me é retornado as seguintes exceções.
Exceções de Execução:[quote]JarLib.load: Successfully loaded library [jar:file:/C:/Users/NexTI-Wolves/Desktop/twain/uk.co.mmscomputing.device.twain.jar!/uk/co/mmscomputing/device/twain/win64/jtwain.dll] from jar file location
uk.co.mmscomputing.device.twain.TwainIOException: uk.co.mmscomputing.device.twain.TwainScanner.setException:
Failed during call to twain source.
cc=No Data Source
rc=1
uk.co.mmscomputing.device.twain.TwainFailureException: Failed during call to twain source.
cc=No Data Source
rc=1
at uk.co.mmscomputing.device.twain.TwainSourceManager.call(TwainSourceManager.java:27)
at uk.co.mmscomputing.device.twain.TwainIdentity.open(TwainIdentity.java:70)
at uk.co.mmscomputing.device.twain.TwainSource.open(TwainSource.java:99)
at uk.co.mmscomputing.device.twain.TwainSourceManager.openSource(TwainSourceManager.java:93)
at uk.co.mmscomputing.device.twain.jtwain.cbexecute(jtwain.java:234)
at uk.co.mmscomputing.device.twain.jtwain.ncallSourceManager(Native Method)
at uk.co.mmscomputing.device.twain.jtwain.callSourceManager(jtwain.java:104)
at uk.co.mmscomputing.device.twain.TwainSourceManager.call(TwainSourceManager.java:24)
at uk.co.mmscomputing.device.twain.TwainIdentity.userSelect(TwainIdentity.java:66)
at uk.co.mmscomputing.device.twain.TwainSourceManager.selectSource(TwainSourceManager.java:46)
at uk.co.mmscomputing.device.twain.jtwain.cbexecute(jtwain.java:219)
at uk.co.mmscomputing.device.twain.jtwain.nstart(Native Method)
at uk.co.mmscomputing.device.twain.jtwain.access$200(jtwain.java:12)
at uk.co.mmscomputing.device.twain.jtwain$1.run(jtwain.java:338)
[/quote]
Observações: Por favor galera, no que vocês puderem me ajudar eu serei muito grato, cada um, com minimo de ajuda que seja estará me ajudando pra caramba, isto é uma pequena parte do meu TCC. Abraços.