begin process at 2012 02 13 05:11:14
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

VB.NET

 > OPENTWAIN.NET

OPENTWAIN.NET


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :VB.NET Source .NET ( DotNet ) Classé sous :TWAIN, SCANNER, IMAGES, SCAN, PDF Niveau :Débutant Date de création :18/05/2008 Date de mise à jour :06/06/2008 13:28:53 Vu / téléchargé :9 836 / 1 033

Auteur : bouv

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (46)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Le titre est assez explicite : il s'agit d'une source permettant d'exploiter n'importe quel périphérique compatible Twain.

Cependant, contrairement aux sources habituelles, celle-ci ne requiert aucune DLL externe. Elle exploite simplement les APIs fournies par twain_32.dll

Les images scannées peuvent être enregistrées aux formats : PDF, BMP, JPG, TIFF, PNG, GIF

Je pense ajouter prochainement la création de fichiers PDF regroupant toutes les images scannées.


Je précise que je ne suis pas vraiment l'auteur de cette source. Elle a initialement été écrite en C# par NETMaster (http://www.codeproject.com/KB/dotnet/twaindotnet. aspx).

J'ai simplement utilisé le traducteur C#<==>VB.NET fourni par Codes-Sources. J'ai tout de même du apporter quelques adaptation car ce n'est en fait pas si simple.

J'ai également modifié un peu l'interface et je l'ai traduite en français (mais ça chacun en fera ce qu'il veut).

Source

  • 'Inistalisation du scanner
  • TW.Init(Me.Handle)
  • 'Sélection de la source
  • TW.Select()
  • 'Nouveau scan
  • TW.Acquire()
  • 'Libération du scanner
  • TW.Dispose()
'Inistalisation du scanner
TW.Init(Me.Handle)

'Sélection de la source
TW.Select()

'Nouveau scan
TW.Acquire()

'Libération du scanner
TW.Dispose()

 Conclusion

Remerciez NETMaster à cette adresse :

http://www.codeproject.com/KB/dotnet/twaindotne t.aspx

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

06 juin 2008 13:28:55 :
Support format PDF

 Sources du même auteur

Source avec Zip Source .NET (Dotnet) ADO.NET SANS DOULEUR
Source avec Zip Source avec une capture Source .NET (Dotnet) OCR (UTILISATION DE TESSNET2.DLL)
Source avec Zip Source avec une capture Source .NET (Dotnet) LISTVIEWEX
Source avec Zip Source avec une capture Source .NET (Dotnet) SPAM ANTI SPAM
Source avec Zip Source .NET (Dotnet) UTILISER ADO.NET COMME EN ADO (RECORDSET)

 Sources de la même categorie

Source .NET (Dotnet) MODIFICATION DATE DE WINDOWS EN VB.NET ET VBA par us_30
Source avec Zip Source avec une capture Source .NET (Dotnet) ENVOI DE MAIL AVEC PIÈCE JOINTE par EhJoe
Source .NET (Dotnet) AMUSONS NOUS AVEC UN LABEL ^^ par Adn56
Source avec Zip Source avec une capture Source .NET (Dotnet) UN NAVIGATEUR INTERNET EN VB.NET par azrti
Source avec Zip Source .NET (Dotnet) CONVERSION DE DEVISE MONAITAIRE VIA UN SERVICE WEB par bigmonkey7

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture RECHERCHE & SAUVEGARDE DES FICHIERS PAR LEURS EXTENSIONS par hackoo
Source avec Zip ENCORE DES JEUX DE LOGIQUE? par oulipan
Source avec Zip Source .NET (Dotnet) SCANNER DE PORT VB.NET par avatardu062
Source avec Zip Source .NET (Dotnet) SCANNER UN DOCUMENT ET L'ENREGISTRER EN JPEG AVEC TWAIN par Jomba
Source avec Zip SCANNER D'IMAGE par max12

Commentaires et avis

Commentaire de FREMYCOMPANY le 18/05/2008 21:25:33

Merci pour l'info.
Je vais peut-?tre l'utiliser pour l'ajouter ? Paint.NET un de ses jours !

Commentaire de filou26 le 28/05/2008 08:10:42

bonjour bouv
merci pour ton travail
j'attends ça depuis longtemps
en vb6 je fais tourner twain32 sans difficultés
en vb2005express j'ai essayé divers codes trouvés ici et là
rien ne fonctionne
j'arrive à utiliser le tien mais je n'ai pas d'image
seule la dimension de l'image ou partie d'image scannée apparaît mais l'image est blanche-vide.
aurais tu une idée.
encore merci

Commentaire de bouv le 28/05/2008 09:25:28

Salut,
Je ne vois pas d'où cela peut venir.

Cependant, je suis en train de préparer une MAJ.
Actuellement l'image est dessinée directement sur le fond de la fenêtre frmTwainPicture.
J'ai ajouté une PictureBox afin que l'image y soit dessinée. Cela va peut être résoudre ton problème.

J'attend un peu pour poster cette MAJ car je travail également sur l'enregistrement des images en PDF et je ne peux pas poster en l'état.

Mais je te rassure cela devrait arriver bientôt. Ma class PDF est maintenant prête. cf :
http://www.vbfrance.com/codes/OPENPDF-NET_46727.aspx

Commentaire de bouv le 06/06/2008 13:32:08

MAJ effectuée avec 2 ou 3 changements.

- L'image s'affiche désormais à l'aide d'une PictureBox. (j'espere que cela résoud le problème de Filou26)

- Possibilité de choisir le mode d'affichage (Centré, Zoom, Etiré, Normal)

- Possibilité de sauvegarder en PDF.
Si vous choisissez un format image : seule l'image en cours sera enregistrée
Si vous choisissez le format PDF : toutes les images seront ajouter (une par page) dans un seul fichier PDF.

Bonne prog
++

Commentaire de filou26 le 16/06/2008 09:28:57

merci BOUV,
c'est impecc ,j'ai pu faire fonctionner mon code,
tu m'as apporté ce qui me manquait
ta source est purement super ,  sobre , claire ,efficace
du haut niveau
merci encore et bonne continuation
filou26

Commentaire de ppmax le 17/07/2008 16:56:45

J'ai une petite question, je me suis grandement inspiré de l'application de codeproject pour faire un logiciel de scan, mais je rencontre un petit probleme : si je scan disons 70 pages, mon appli prends aux alentours de 800mo de RAM, ça fait un peu beaucoup :=)

Des idées comment récupérer de la mémoire après l'enregistrement du fichier sur le disque dur ?

Commentaire de ppmax le 17/07/2008 17:07:39

En fait je viens de trouver, il existe la méthode GlobalFree( IntPtr handle )
Ca permet de supprimer l'espace mémoire occupé :=)
Hop, je passe de 850mo à 85 mo, la fête !

Commentaire de prog_christiano le 09/10/2008 04:39:47

Est-ce normal que dans cette fonction du module TWAIN, cette ligne tombre en erreur. Division par zéro.

Dim dWidth As Integer = ChildForm.BMI.biWidth * 72 / dReso

la variable dReso est à zéro.

Merci de votre aide.
Christian

Commentaire de prog_christiano le 09/10/2008 04:40:55

*** J'ai oublié de spécifié dans la fonction "SavePdf" ***
Est-ce normal que dans cette fonction du module TWAIN, cette ligne tombre en erreur. Division par zéro.

Dim dWidth As Integer = ChildForm.BMI.biWidth * 72 / dReso

la variable dReso est à zéro.

Merci de votre aide.
Christian

Commentaire de bouv le 09/10/2008 08:16:20

Non ce n'est pas normal du tout.
dReso est calculé d'après le BitmapHeader de chaque images scannées.
"Dim dReso As Double = ChildForm.BMI.biXPelsPerMeter / 39.37"

L'image que vous tentez de convertir provient-elle bien d'un scan ? ou faites-vous des essais avec des fichiers images ouverts depuis votre PC ?

Commentaire de prog_christiano le 09/10/2008 14:29:43

Salut Bouv, merci de ton retour très rapide !
Comme mon scanner ne fonctionne pas, je fais des test à partir d'image obtenu de ma caméra canon...

Commentaire de prog_christiano le 15/10/2008 15:31:42

Non, il s'agit d'images obtenu à partir d'un appareil photo. De plus j'ai un collegue qui a le meme probleme en scannant à partir d'un vrai scanner.

Merci.
Christian

Commentaire de bdl20042000 le 21/10/2008 17:23:48 10/10

Bonjour,
bravo pour la source.
petite question :
est ce qu'il est possible de modifier la résolution pour la numérisation ?
si oui, quel est le code.
merci

Commentaire de bouv le 26/10/2008 11:12:59

PROG_CHRISTIANO>>Le problème semble venir de la résolution utilisée par le périphérique. Elle doit être retournée à l'appli dans 'BMI.biXPelsPerMeter'. Peut-être ton appareil photo ne retourne-t-il pas cette valeur. Dans ce cas biXPelsPerMeter = 0 et on a plus loin une division par 0.
Par contre si le problème est rencontré avec un vrai scanner, là je vois pas.
Si tu arrives à localiser plus précisement le problème en mode pas-à-pas, je pourrais peut-être modifier le code.

BDL20042000>>Le code ouvre l'interface habituelle de ton scanner. C'est là que tu peux choisir ta résolution.

Bonne prog
++

Commentaire de bdl20042000 le 27/10/2008 11:11:06

Bonjour,
c'est un scanner : je voudrai que l'utilisateur n'ai pas la fenêtre justement (ça j'ai trouvé), par contre je n'ai pas réussi à mettre une résolution par défaut via le code.

Commentaire de bobertin89 le 18/03/2011 11:35:17

Salut à tous,
désolé de réveiller un vieux sujet mais je cherche une solution pour scanner à la volée plusieurs page en utilisant un scanner avec chargeur.
Apperement PPMax a trouvé une solution.
Si quelqu'un peut nous la faire partager, ce srait top.
Merci d'avance pour vos réponse.
Bon dev

Commentaire de bouv le 18/03/2011 11:40:20

Cette source permet de la faire

Commentaire de bobertin89 le 18/03/2011 12:33:45

Merci de ta réponse rapide.
Je dois faire une mauvaise manip.
Scanner utilisé : canon DR-4010C.
Même lorsque je me mets en "numérisation anticipé", il me scanne une seule page et me remet l'option une seule page.
Peut-être y a t-il une subtilité que je ne comprends pas.
Si tu as une piste...
Merci d'avance.

Commentaire de bouv le 18/03/2011 14:11:50

Etrange...
Cela fonctionne très bien chez moi avec une imprimante multifonction à chargeur (Epson PX800FW).

Regarde la procédure PreFilterMessage. Mets un point d'arrêt sur la ligne Dim MyPics As ArrayList = TW.TransferPictures()
MyPics doit contenir autant d'image qu'il y a de pages scannées. Peux se vérifier avec la propriété MyPics.Count

Commentaire de bobertin89 le 18/03/2011 14:58:42

J'ai donc mis un msgBox(MyPics.Count.Tostring) après la boucle for qui suit Dim MyPics As ArrayList = TW.TransferPictures().
Cela me renvoi 1 même si je scanne plusieurs page...
Du coup il ne fais qu'un tour et ne m'affiche que la premier image.
J'ai testé avec un autre scanner canon DR-3060 en obtenant le même résultat.
Ce qui est étonnant, c'est qu'il m'affiche ma MsgBox juste après avoir scanné  la 1ere image et non à la fin du scan de la dernière.
Encore merci de ton aide.

Commentaire de bouv le 18/03/2011 15:09:55

Etrange, ton scanner doit renvoyer un message de fin de scan.
J'avoue ne jamais avoir rencontré le problème, ni avec HP ni avec Epson. Mais je n'ai jamais essayé avec Canon.
Ton pilote est-il à jour ?
Les scanenr Canon ont peut-être une particularité que j'ignore. Dans ce cas il me sera difficile de t'aider étant donné que je n'en possède pas.

Commentaire de bouv le 18/03/2011 15:47:02

Une piste :

Ton scanner envoi peut-être les scan au fur et à mesure. Ce qui déclenche le message TwainCommand.TransferReady trop tôt (procédure PreFilterMessage)

Essaie de mettre un point d'arrêt sur ce message et saute les lignes qui suivent manuellement au premier scan pour voir s'il est appelé à nouveau lors des scans suivants.

Commentaire de bobertin89 le 18/03/2011 16:00:46

Cela semble être le cas.
En fait, il rentre dans le case TransferReady dès que le scanner est prêt à scanner, avant même d'avaler la première page.
Ensuite, il scanne toute les pages mais le scanner ne renvoi pas d'autre fois transferReady mais passe direct Transfer.Close.

Vu comment ton code est fait, j'ai l'impression qu'on devrait rentré dans TransferReady à la fin du scan et non quand le scanner est prêt.

Ce que je ne comprends pas non plus(peut-être n'est-ce pas lié),  c'est la boucle dans TransferPictures avec loop while pxfr.count<>0 alors que pxfr.count est défini à 0 et que rien ne semble modifié sa valeur.

Si tu as des pistes...
Encore merci de ton aide.

Commentaire de bouv le 18/03/2011 16:09:38

Sur les scanners que j'ai testé le message transferReady n'est envoyé que lorsque tous les scans sont terminés.
Dans ton cas essai de déplacer le code qui se trouve dans TransferReady vers CloseRequest ou CloseOk

Commentaire de bobertin89 le 18/03/2011 17:30:12

Encore merci du coup de main...
J'avais déjà tenté cette soluce mais sans succès...
Je vais essayer tout ça ce W-E ou lundi.
Je te tiens au courant si je trouve.
Bon w e.

Commentaire de bouv le 18/03/2011 17:35:10

Autre piste il est possible que TransferReady soit appelé à chaque scan.
Dans ce cas il faut récupérer les images à chaque appel sans fermer le Handle.
++

Commentaire de bobertin89 le 18/03/2011 17:39:07

Hey,
enfin la soluce, il faut remplacer la ligne
Dim cap As TwCapability = New TwCapability(TwCap.XferCount, 1)
par
Dim cap As TwCapability = New TwCapability(TwCap.XferCount, -1)
voili voilou, si cela peut aider d'autres personnes!
Encore merci pour ton aide

Commentaire de bouv le 18/03/2011 17:44:01

Merci du retour je me rencadre et je modifierai éventuellement la source
++

Commentaire de bobertin89 le 22/03/2011 13:41:07

Salut à tous,
à nouveau un petit souci...
PPmax a réussi à libérer la mémoire au fur et à mesure du scan grâce à la Méthode GlobalFree.
Si j'utilise cette méthode à la fin du TransferPictures, il libère la mémoire mais n'a plus les infos pour enregistrer.
Si je l'utilise après l'aafichage de l'image, il ne libère pas complétement la mémoire...
Si quelqu'un sait ou libérer la mémoire...
Merci d'avance.

Commentaire de bouv le 22/03/2011 17:37:46

Il ne faut appele GlobalFree qu'après avoir enregistrer le PDF.
Le reste de la mémoire se libère normalement après avoir fermé l'appli.

Commentaire de bobertin89 le 23/03/2011 10:04:54

Salut bouv,
en fait, j'appelle SaveFile dans TransferPictures. Cela enregistre les pages à la volée au lieu de passer par le tableau.
Du coup, je peux libérer la mémoire à chaque page et je reste constamment à 40Mo occupé quelque soit le nombre de page scanné.
++

Commentaire de bouv le 23/03/2011 10:12:16

Je pense que les 40Mo correspondent au driver du scanner.
Ils ne seront libérés qu'à la fermeture du programme.

Commentaire de bobertin89 le 23/03/2011 10:59:54

Les 40Mo sont plus que convenables...
C'était juste pour t'indiquer la solution que j'avais adoptée...
++

Commentaire de bouv le 23/03/2011 11:13:53

OK merci

Commentaire de PUJOLAIS44 le 03/02/2012 10:41:09

Bonjour
Existe-t'il une version fonctionnant en VBA Access par exemple ?
Grand merci
Greg

Commentaire de PUJOLAIS44 le 03/02/2012 11:06:09

Hello !

I'm looking for a solution to scan automatically documents in PDF format in an MS Access application
I've tried toi test your module in a VBA form.

1- I'd copied the code you developped
2- I'd write the test function below
Sub Test_Twain()
  Dim lRtn As Long
  lRtn = mdlTwain.TransferWithoutUI(300, BW, 1, 1, 2, 5, "noui_mono.bmp")                            
End Sub

but it is not working because an error in mdlTwain, var not definied.

Do you have the code you developped in VBA format ?
What do you think of this error ?

Sorry for my prog level .....
Thanks a lot !!!

Commentaire de bouv le 03/02/2012 11:23:20

Il s'agit d'un code VB.Net qui peut donc fonctionner en VBA. Je ne sais pas s'il existe un code similaire VBA.

This source code is for VB.Net and cannot run on VBA. I don't know if you can find a similar source code for VBA.

Commentaire de PUJOLAIS44 le 03/02/2012 11:40:18

En français ..... je corrige mon dernier message....

Bonjour,
je cherche une solution pour scanner en format PDF dans un module MS Access
J'ai essayé ta solution dans un module.
Ca a l'air de fonctionner mais uniquement en format BMP.

As-tu trouvé une solution pour scanner en PDF ?

UN GRAND GRAND merci

Greg

Commentaire de PUJOLAIS44 le 06/02/2012 18:52:33

Au secours !!!!..............

Commentaire de kayser77 le 07/02/2012 15:54:28

Bonjour,

Je voudrais modifier le code pour créer un fichier tiff (ou pdf) multipage. C'est à dire que le scanner numérise toutes les feuilles à la volé mais au lieu de creer un fichier par image scannée, je voudrais qu'il ne crée qu'un seul fichier mais avec plusieurs pages.

J'ai regardé du coté de gdi+ mais c'est pas facile pour un débutant... Quelqu'un aurait il déjà une solution ?

Commentaire de PUJOLAIS44 le 07/02/2012 16:03:40

Hi,

Ton code fonctionne en PDF ?

Commentaire de kayser77 le 07/02/2012 16:14:53

Salut PUJOLAIS44,

Oui le code fonctionne en pdf... d'ailleurs je viens de me rendre compte qu'avec ce format, il me crée des documents multipage...

Quand tu fais "enregistrer sous", est ce que tu choisis bien le type "pdf" dans la fenetre proposée ?

Commentaire de PUJOLAIS44 le 07/02/2012 16:30:37

Et tu travailles en quoi ? VB ? VBA ?
Tu peux m'envoyer du code là dessus ?.....
(gregoire.pujolais@free.fr)

Grand merci ! depuis le temps que je cherche ..

Commentaire de kayser77 le 07/02/2012 16:33:23

je travaille en vb.net
Le code est déjà fournit sur cette page !!

Commentaire de bouv le 07/02/2012 16:42:11

Je suis étonné que ce code fonctionne en Access mais si c'est bien le cas il devrait arrivé à faire du PDF aussi bien que du BMP ou du JPG.

Sinon, il est possible de convertir le BMP en JPG puis de créer un PDF à partir du JPG. Voir les sources suivantes :
VB6 : http://www.vbfrance.com/codes/WSPDF-CLASSE-GENE RATION-FICHIER-PDF-SANS-OCX-NI_25958.aspx
VB.Net : http://www.vbfrance.com/codes/OPENPDF-NET_46727.aspx

Commentaire de PUJOLAIS44 le 07/02/2012 16:55:39

Merci de l'info.
Mais je crois que pour des raisons de cadence de production ça risque d'etre trop long...
A suivre quand même !...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Scanner des doc avec un scan compatible Twain [ par yves29 ] Bonjour à tous, Je cherche une méthode pour scanner des doc via un contrôle compatible Twain. Ca fait plusieurs jours que je cherche et tout est payan scanner avec la librairie twain [ par filou26 ] bonjour je crée une appli qui scanne et archive rien de neufcependant en vb 2005 J'ai lu une seule source et elle marche pasj'y suis presque mais j'ai espionner un scanner [ par Guyarm ] j'aimerais savoir comment détecter les images numériseés a partir d'un scanner, nom de l'images , heure Piloter appareil photo par twain ? [ par Chrysostome ] Salut à tous !Est-ce qu'il serait possible de remplacer un scanner par un appareil photo en mode macro ( gain de vitesse ), afin de faire du jpeg? J'a Extraire des images d'un Fichier PDF ? et les sauvegarder en BMP, JPG ou PNG. [ par Afyn ] Y at il un moyen d'extraire des images d'un fichier PDF ?Pour le texte, c'est pas un problème, mais pour les images ?Merci d'avance Afyn Scanner multi-pages [ par atarimania ] Bonjour,Je dois connecter mon application à un scanner Kodak i250 avec chargeur de feuilles avec l'ocx imgscan.ocx.J'ai beau activer le mode multipage gestion des images à partir d'un scanner [ par ghasseng ] qq1 peut m'aider pour savoir comment on peut gérer des images venant d'un scanner puis les stocker dans une base de donnée ou sous format pdf.et merci comment appeler le prog TWAIN pour scanner ? [ par lechti62 ] Je voudrais pouvoir integrer une possibilité de scanner dans mon programme. Il me faut donc appeler le prog TWAIN, et ensuite l'image scannée serait scan de disque [ par Titou4u ] Bonsoir, j'ai un petit souci,je viens de recuperer une source qui permet de scanner mon disque dur, je l'ai modifier pour qu'ellene scanne que les fic simuler une webcam [ par pastis51forever ] Salut à tous!! J'aimerais créer un prog qui simulerait une webcam pour pouvoir par exemple lors d'une conversation msn envoyer des images ou vidéos pr


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,622 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales