DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions standard / Fonctions de gestion de Windows / Fonctions Périphériques Twain
  • Exemple de procédure pour numériser les documents du chargeur dans un fichier PDF
Exemple de procédure pour numériser les documents du chargeur dans un fichier PDF
Etats et Requêtes Cet exemple utilise une procédure WLangage pour numériser les documents présents dans le chargeur au format PDF.
// Sélection du driver
SI TwainSelectSource() = Faux ALORS RETOUR
 
// Information de la fenêtre d'impression
iFenêtreAbandon(Vrai, "Scan au format PDF")
// Mise en place des paramètres du PDF
iParamètrePDF(iProtectionAucune, "", "", iSignetAucun + iQualitéMinimale)
// Nom du PDF
sNomFichierScanne est une chaîne
sNomFichierScanne = fRepDonnées() + ["\"] + "Scan_" + DateSys() + "_" + HeureSys() + ".PDF"
 
// Lancement de la génération du PDF (voir détail de la procédure ci-après)
nNbPages est un entier
nNbPages = TwainMultiPageVersPDF(sNomFichierScanne, 90, Faux, TwainNoirBlanc, 1)
// Au moins une page numérisée ?
SI nNbPages = 0 ALORS
// Erreur durant le scan
Erreur("Echec de la numérisation", ErreurInfo())
SINON
// Affichage du fichier généré
LanceAppliAssociée(sNomFichierScanne)
// Affichage d'un message d'information
Info(ChaîneConstruit("%1 pages ont été numérisées dans le fichier %2.", ...
nNbPages, sNomFichierScanne))
FIN
//------- Avec la procédure TwainMultiPageVersPDF suivante :
 
// Résumé : Enregistre les documents présents dans le chargeur du périphérique Twain
// dans un fichier PDF
// Syntaxe :
//[ <Résultat> = ] TwainMultiPageVersPDF (<sNomPDF> [, <nQualite> est entier
// [, <bInterfaceUtilisateur> [, <nTypeImages> [, <nNombreBitsParPixel> [, <nRésolutionImages>
// [, <nContrasteImages> [, <nBrillanceImages> [, <bModeRectoVerso>
// [, <bChargementAutomatique>]]]]]]]]])
//
// Paramètres :
// sNomPDF : Nom du PDF en sortie
// nQualite (entier - valeur par défaut=90) :
// Qualité de l'image du document
// (valeur comprise entre 1 et 100, ignorée si nTypeImages=TwainNoirBlanc).
// Plus la qualité de l'image sera faible,
// plus le taux de compression de l'image sera élevé
// et plus la taille du fichier sera petite.
// bInterfaceUtilisateur (valeur par défaut=Faux) :
// Vrai (valeur par défaut),
// si l'interface utilisateur du périphérique Twain utilisé doit être affichée.
// Lors de l'enregistrement du document, le <Fichier BMP> sera proposé par défaut.
// nTypeImages (valeur par défaut=0) :
// Type d'image utilisé pour enregistrer le document
// (classé par ordre de gestion des couleurs)
// nNombreBitsParPixel (valeur par défaut=0) :
// Quantité d'informations sur les couleurs
// (pour afficher ou imprimer chaque pixel dans une image)
// Plus le nombre de bits (d'informations) par pixel est important,
// plus la représentation des couleurs sera précise.
// nRésolutionImages (valeur par défaut=0) :
// Nombre de pixels par pouce (valeurs possibles selon le périphérique utilisé).
// nContrasteImages (valeur par défaut=0) :
// Contraste de l'image (valeur comprise entre -1000 et 1000).
// nBrillanceImages (valeur par défaut=0) :
// Brillance de l'image (valeur comprise entre -1000 et 1000).
// bModeRectoVerso (valeur par défaut=0) :  
// Permet de scanner un document en mode recto-verso,
// Faux (par défaut) pour scanner le document d'un seul coté.
// bChargementAutomatique (valeur par défaut=1) :  
// Permet d'initialiser le scanner pour un chargement rapide
// dans le cas d'un chargeur,
// Faux (par défaut)
// Valeur de retour :
// Type indéterminé : Nombre de pages numérisées, 0 en cas d'erreur de numérisation
 
PROCÉDURE TwainMultiPageVersPDF(sNomPDF, nQualite est un entier=90, ...
bInterfaceUtilisateur=Faux, nTypeImages=0, nNombreBitsParPixel=0, ...
nRésolutionImages=0, nContrasteImages=0, nBrillanceImages=0, ...
bModeRectoVerso=Faux, bChargementAutomatique=Vrai)
ListeFichierTemps est une Liste de chaînes
Sablier(Vrai)
 
// Le fichier destination existe ?
SI fFichierExiste(sNomPDF) = Vrai ALORS
// Oui, suppression du fichier
SI fSupprime(sNomPDF) = Faux ALORS
// Erreur en cas d'échec de suppression
RENVOYER Faux
FIN
FIN
 
// Génération d'un PDF avec les ordres d'impression
iDestination(iPDFGénérique, sNomPDF)
 
// Nom de fichier destination temporaire
sNomFichierScanne est une chaîne
 
bResScan est un booléen
nNbPage est un entier = 0
BOUCLE
// Format A4
TwainZoneScan(0, 0, 210, 297)
// Scan
SI nTypeImages = TwainNoirBlanc ALORS
// SI N&B un scan dans un BMP monochrome est plus petit
sNomFichierScanne = fExtraitChemin(fFichierTemp(), ...
fFichier + fDisque + fRépertoire) + ".BMP"
bResScan = TwainVersBMP(sNomFichierScanne, bInterfaceUtilisateur, ...
nTypeImages, 1, nRésolutionImages, nContrasteImages, ...
nBrillanceImages, bModeRectoVerso, bChargementAutomatique)
SINON
// Sinon dans un JPG
sNomFichierScanne = fExtraitChemin(fFichierTemp(), ...
fFichier + fDisque + fRépertoire) + ".JPG"
bResScan = TwainVersJPEG(sNomFichierScanne, nQualite, bInterfaceUtilisateur, ...
nTypeImages, nNombreBitsParPixel, nRésolutionImages, ...
nContrasteImages, nBrillanceImages, bModeRectoVerso, ...
bChargementAutomatique)
FIN
// Scan OK ?
SI bResScan ALORS
// Oui, mémorise le nom du fichier image temporaire (pour le supprimer à la fin)
Ajoute(ListeFichierTemps, sNomFichierScanne)
nNbPage++
// C'est la première page ?
SI nNbPage > 1 ALORS
// Non, donc on fait un saut de page
iSautePage()
FIN
// Vers impression sur toute la page
iImprimeImage(sNomFichierScanne, 0, 0, iLargeurPage(), iHauteurPage(), ...
iAffichageHomothétique)
// Abandon utilisateur (sur la fenêtre d'annulation de l'impression) ?
SI iImpressionAbandonnée() ALORS SORTIR
SINON
// Pb de scan, on arrête ?
SI OuiNon(ErreurInfo(), "Continuer la numérisation ?") = Faux ALORS SORTIR
FIN
// Encore des pages ?
SI TwainEtat() = teNonChargé ALORS SORTIR
// Oui, donc page suivante
FIN
 
// Renvoie le nombre de pages scannées
RENVOYER nNbPage
 
FIN:
// L'impression a au moins commencé ?
SI nNbPage > 0 ALORS
// Oui, donc fin génération du PDF (fin de l'impression)
iFinImprime()
FIN
// Suppression des images temporaires
POUR TOUT ÉLÉMENT sNomFichierScanne DE ListeFichierTemps
fSupprime(sNomFichierScanne)
FIN
Sablier(Faux)
Version minimum requise
  • Version 15
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale