PC SOFT

WINDEVWEBDEV AND WINDEV MOBILE
ONLINE HELP

Home | Sign in | English UK
  • Example of procedure for digitizing the documents of the driver in a PDF file
TwainState (Example)
Example of procedure for digitizing the documents of the driver in a PDF file
WINDEVReports and QueriesUser code (UMC) This example uses a WLanguage procedure to digitize the documents found in the driver in PDF format.
// Select the driver
IF TwainSelectSource() = False THEN RETURN

// Information of the print window
iWindowCancel(True, "Scan in PDF format")
// Implement the parameters of PDF
iParameterPDF(iProtectionNone, "" , "" , iBookmarkNone + iMinimumQuality)
// Name of PDF
sNameScannedFile is string
sNameScannedFile = fDataDir() + ["\"] + "Scan_" + DateSys() + "_" + TimeSys() + ".PDF"

// Start generating the PDF (see the detailed procedure below)
nNbPages is int
nNbPages = TwainMultiPageToPDF(sNameScannedFile, 90, False, TwainBlackWhite, 1)
// At least one digitized page?
IF nNbPages = 0 THEN
// Error during the scan
Error("The digitization failed", ErrorInfo())
ELSE
// Display the generated file
ShellExecute(sNameScannedFile)
// Display an information message
Info(StringBuild("%1 pages have been digitized in %2 file.", ...
nNbPages, sNameScannedFile))
END
//------- With the following TwainMultiPageToPDF procedure:
 
// Summary: Saves the documents found in the driver of the Twain device
// in a PDF file
// Syntax:
//[ <Result> = ] TwainMultiPageToPDF (<sPDFName> [, <nQuality> is int
// [, <bUserInterface> [, <nImageType> [, <nNumberBitsPerPixel> [, <nImageResolution>
// [, <nImageContrast> [, <nImageBrightness> [, <bDuplexMode>
// [, <bAutomaticLoad>]]]]]]]]])
//
// Parameters:
// sPDFName: Name of PDF in output
// nQuality (integer - default value=90):
// Quality of the document image
// (value included between 1 and 100, ignored if nImageType=TwainBlackWhite).
// The lower the image quality will be,
// the higher the compression rate of the image will be
// and the smaller the size of the file will be.
// bUserInterface (default value=False):
// True (default value),
// if the user interface of the Twain device used must be displayed.
// When saving the document, the <BMP file> will be proposed by default.
// nImageType (default value=0):
// Type of image used to save the document
// (classified by order of color management)
// nNumberBitsPerPixel (default value=0):
// Amount of information about the colors
// (to display or print each pixel in an image)
// The higher the number of bits per pixel is,
// the sharper the color rendering will be.
// nImageResolution (default value=0):
// Number of pixels per inch (the possible values depend on the device used).
// nImageContrast (default value=0):
// Contrast of the image (value included between -1000 and 1000).
// nImageBrightness (default value=0):
// Brightness of the image (value included between -1000 and 1000).
// bDuplexMode (default value=0):  
// Used to scan a document in duplex mode,
// False (by default) to scan the document on a single side.
// bAutomaticLoad (default value=1):  
// Used to initialize the scan for a quick load
// in case of feeder,
// False (by default)
// Return value:
// Undefined type: Number of digitized pages, 0 if an error occurred
 
PROCEDURE TwainMultiPageToPDF(sPDFName, nQuality is int=90, ...
bUserInterface=False, nImageType=0, nNumberBitsPerPixel=0, ...
nImageResolution=0, nImageContrast=0, nImageBrightness=0, ...
bDuplexMode=False, bAutomaticLoad=True)
ListTempFiles is List of strings
HourGlass(True)
 
// Does the destination file exist?
IF fFileExist(sPDFName) = True THEN
// Yes, delete the file
IF fDelete(sPDFName) = False THEN
// Error if the deletion failed
RESULT False
END
END
 
// Generate a PDF with the print commands
iDestination(iGenericPDF, sPDFName)
 
// Name of temporary destination file
sNameScannedFile is string
 
bResScan is boolean
nNbPages is int = 0
LOOP
// A4 format
TwainScanZone(0, 0, 210, 297)
// Scan
IF nTypeImages = TwainBlackWhite THEN
// If B&W, a scan in a monochrome BMP is smaller
sNameScannedFile = fExtractPath(fTempFile(), ...
fFileName + fDrive + fDirectory) + ".BMP"
bResScan = TwainToBMP(sNameScannedFile, bUserInterface, ...
nImageType, 1, nImageResolution, nImageContrast, ...
nImageBrightness, bDuplexMode, bAutomaticLoad)
ELSE
// Otherwise, in a JPG
sNameScannedFile = fExtractPath(fTempFile(), ...
fFileName + fDrive + fDirectory) + ".JPG"
bResScan = TwainToJPEG(sNameScannedFile, nQuality, bUserInterface, ...
nImageType, nNumberBitsPerPixel, nImageResolution, ...
nImageContrast, nImageBrightness, bDuplexMode, ...
bAutomaticLoad)
END
// Scan OK?
IF bResScan THEN
// Yes, stores the name of the temporary image file (to delete it at the end)
Add(ListTempFiles, sNameScannedFile)
nNbPages++
// Is it the first page?
IF nNbPages > 1 THEN
// No, therefore page break
iSkipPage()
END
// To print on the entire page
iPrintImage(sNameScannedFile, 0, 0, i PageWidth(), iPageHeight(), ...
iHomotheticDisplay)
// User cancelation (on the window for print cancelation)?
IF iDocumentCanceled() THEN BREAK
ELSE
// Problem with the scan, stop?
IF NOT YesNo(ErrorInfo(), "Continue to digitize?") = False THEN BREAK
END
// More pages?
IF TwainState() = tsUnloaded THEN BREAK
// Yes, therefore next page
END
 
// Returns the number of scanned pages
RESULT nNbPages
 
END:
// Was the print started?
IF nNbPages > 0 THEN
// Yes, therefore end of PDF generation (end of print)
iEndPrinting()
END
// Delete the temporary images
FOR EACH ELEMENT sNameScannedFile OF ListTempFiles
fDelete(sNameScannedFile)
END
HourGlass(False)
Minimum version required
  • Version 15
This page is also available for…
Comments
Click [Add] to post a comment