1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| PROCEDURE TwainMultiPageVersPDF(sNomPDF,nQualite est un entier=90,bInterfaceUtilisateur=Faux, nTypeImages=0,
nNombreBitsParPixel=0 , nRésolutionImages=0, nContrasteImages=0, nBrillanceImages=0 , bModeRectoVerso=Faux)
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
LargeurScan = TwainLargeurSource()
HauteurScan = TwainHauteurSource()
TwainZoneScan(0, 0, LargeurScan, HauteurScan)
// Scanne
SI nTypeImages = TwainNoirBlanc ALORS
// SI N&B un scanne 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)
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)
FIN
// Scanne 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 scanne, 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 ELEMENT sNomFichierScanne DE ListeFichierTemps
fSupprime(sNomFichierScanne)
FIN
Sablier(Faux) |
Partager