Split scans.php in console.php, scanner.php and main.php
This commit is contained in:
30
code/console.php
Normal file
30
code/console.php
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$Commands=array();
|
||||||
|
|
||||||
|
function ExecCommand($command){
|
||||||
|
global $Commands;
|
||||||
|
$loggedCommand=array();
|
||||||
|
$loggedCommand["Command"]=$command;
|
||||||
|
list($returnCode, $stdout, $stderr)=ExecFull($command);
|
||||||
|
$loggedCommand["Result"]=$stdout;
|
||||||
|
$loggedCommand["Error"]=$stderr;
|
||||||
|
$loggedCommand["ReturnCode"]=$returnCode;
|
||||||
|
$Commands[]=$loggedCommand;
|
||||||
|
return $stdout;
|
||||||
|
}
|
||||||
|
|
||||||
|
function RenderCommandLog(){
|
||||||
|
global $Commands;
|
||||||
|
$renderLog="";
|
||||||
|
foreach($Commands as $loggedCommand){
|
||||||
|
$renderLog.=RenderParagraph($loggedCommand["Command"],"command");
|
||||||
|
$renderLog.=RenderParagraph($loggedCommand["Result"]);
|
||||||
|
$renderLog.=RenderParagraph($loggedCommand["Error"],"error");
|
||||||
|
}
|
||||||
|
|
||||||
|
return RenderDiv("divConsoleContainer",
|
||||||
|
RenderButton("btnToggle","Log","var elem=document.getElementById('divConsole');if(elem.style.display==''){elem.style.display='none';}else{elem.style.display='';}return false;").
|
||||||
|
RenderDiv("divConsole",$renderLog,null,"display:none;")
|
||||||
|
);
|
||||||
|
}
|
||||||
69
code/main.php
Normal file
69
code/main.php
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
include_once "config.php";
|
||||||
|
include_once "utils.php";
|
||||||
|
include_once "ui.php";
|
||||||
|
include_once "console.php";
|
||||||
|
include_once "scanner.php";
|
||||||
|
|
||||||
|
function RenderDocument($filePath){
|
||||||
|
$filename=pathinfo($filePath)["basename"];
|
||||||
|
$filePathFixed=htmlentities($filePath,ENT_HTML5, "UTF-8");
|
||||||
|
$filenameFixed=htmlentities($filename,ENT_HTML5, "UTF-8");
|
||||||
|
$render="";
|
||||||
|
$render.='<div><a href="'.$filePathFixed.'" class="button" download="'.$filenameFixed.'">'.
|
||||||
|
'Download</a></div>'."\n";
|
||||||
|
$render.='<iframe src="'.$filePathFixed.'" '.
|
||||||
|
'class="previewDoc" ></iframe>';
|
||||||
|
return $render;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Detect scanner
|
||||||
|
$Scanner=array();
|
||||||
|
$Scanner["ScanDevice"]=RequestParm("hidScanDevice","");
|
||||||
|
$Scanner["ScanModel"]=RequestParm("hidScanModel","");
|
||||||
|
if($Scanner["ScanDevice"]=="" || $Scanner["ScanModel"]==""){
|
||||||
|
$Scanner=ScannerDetect();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Configure with formdata
|
||||||
|
$Resolution=RequestParm("ddlResolution",$Resolution);
|
||||||
|
$Format=RequestParm("ddlFormat",$Format);
|
||||||
|
$Size=RequestParm("ddlSize",$Size);
|
||||||
|
$Crop=RequestParm("chkCrop",$Crop)!=false;
|
||||||
|
$CropFuzz=RequestParm("txtCropFuzz",$CropFuzz);
|
||||||
|
|
||||||
|
// Preprocess
|
||||||
|
$DestFile=null;
|
||||||
|
if(RequestParm("btnScan",false)){
|
||||||
|
CleanUp();
|
||||||
|
$baseName="Scan-".date("Y-m-d_H_i_s");
|
||||||
|
$DestFile=Scan($Scanner["ScanDevice"],$Resolution,$Format,$Size,$baseName);
|
||||||
|
if($Crop){
|
||||||
|
CropImage($DestFile);
|
||||||
|
}
|
||||||
|
MoveToDest($DestFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Render Form
|
||||||
|
$formFields="";
|
||||||
|
$formFields.=RenderFieldInfo("Scanner",$Scanner["ScanModel"]);
|
||||||
|
$formFields.=RenderFieldCombo("Resolution","ddlResolution",$Resolutions,$Resolution);
|
||||||
|
$formFields.=RenderFieldCombo("Format","ddlFormat",$Formats,$Format);
|
||||||
|
$formFields.=RenderFieldCombo("Size","ddlSize",$Sizes,$Size);
|
||||||
|
$formFields.=RenderFieldCheckText("Cropping","chkCrop",$Crop,"txtCropFuzz",$CropFuzz);
|
||||||
|
$formFields.=RenderFieldButton("","btnScan","Scan");
|
||||||
|
$formFields.=RenderHidden("hidScanDevice",$Scanner["ScanDevice"]);
|
||||||
|
$formFields.=RenderHidden("hidScanModel",$Scanner["ScanModel"]);
|
||||||
|
$columns="";
|
||||||
|
$columns.=renderDiv("divColLeft",$formFields);
|
||||||
|
$result="";
|
||||||
|
if($DestFile!=null){
|
||||||
|
$result.=RenderDocument($DestFile);
|
||||||
|
}
|
||||||
|
$columns.=renderDiv("divColRight",$result);
|
||||||
|
$columns.=RenderCommandLog();
|
||||||
|
echo RenderForm("frmMain",$columns);
|
||||||
|
|
||||||
|
|
||||||
107
code/scanner.php
Normal file
107
code/scanner.php
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
include_once "config.php";
|
||||||
|
include_once "utils.php";
|
||||||
|
include_once "ui.php";
|
||||||
|
include_once "console.php";
|
||||||
|
|
||||||
|
function ScannerDetect(){
|
||||||
|
global $ScanImage;
|
||||||
|
$Command=$ScanImage." -f\"%d|%v %m%n\"";
|
||||||
|
$scansResults=ExecCommand($Command);
|
||||||
|
$devicesResults=explode("\n",$scansResults);
|
||||||
|
list($ScannerDevice,$ScannerModel)=explode("|",$devicesResults[0]);
|
||||||
|
|
||||||
|
$Scanner=array();
|
||||||
|
$Scanner["ScanDevice"]=$ScannerDevice;
|
||||||
|
$Scanner["ScanModel"]=$ScannerModel;
|
||||||
|
|
||||||
|
return $Scanner;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Scan($device,$resolution,$format,$size,$destFileBase){
|
||||||
|
global $PreviewDir;
|
||||||
|
global $ScanImage;
|
||||||
|
global $PNMtoJPEG;
|
||||||
|
global $PNMtoPNG;
|
||||||
|
global $PNMtoPS;
|
||||||
|
global $PStoPDF;
|
||||||
|
|
||||||
|
$DestFile=$PreviewDir.$destFileBase;
|
||||||
|
$Command=$ScanImage." -d ".$device.
|
||||||
|
" --resolution ".$resolution."dpi";
|
||||||
|
|
||||||
|
// Apply size
|
||||||
|
if($size=="A4"){
|
||||||
|
$Command.=" -x 210 -y 297";
|
||||||
|
}
|
||||||
|
if($size=="A5Port"){
|
||||||
|
$Command.=" -x 148 -y 210";
|
||||||
|
}
|
||||||
|
if($size=="A5Land"){
|
||||||
|
$Command.=" -x 210 -y 148";
|
||||||
|
}
|
||||||
|
if($size=="Letter"){
|
||||||
|
$Command.=" -x 216 -y 279";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply format
|
||||||
|
if($format=="jpg"){
|
||||||
|
$DestFile.=".jpg";
|
||||||
|
$Command.=" | {$PNMtoJPEG} --quality=100 > ".$DestFile;
|
||||||
|
$Scan=ExecCommand($Command);
|
||||||
|
}
|
||||||
|
if($format=="png"){
|
||||||
|
$DestFile.=".png";
|
||||||
|
$Command.=" | {$PNMtoPNG} > ".$DestFile;
|
||||||
|
$Scan=ExecCommand($Command);
|
||||||
|
}
|
||||||
|
if($format=="pdf"){
|
||||||
|
$DestFile2=$DestFile.".pnm";
|
||||||
|
$Command.=" > {$DestFile2}";
|
||||||
|
$Scan=ExecCommand($Command);
|
||||||
|
|
||||||
|
$DestFile.=".pdf";
|
||||||
|
$Command="cat {$DestFile2} | {$PNMtoPS}";
|
||||||
|
if($size=="A4"){
|
||||||
|
$Command.=" -width=8.3 -height=11.7 ";
|
||||||
|
}
|
||||||
|
if($size=="A5Port"){
|
||||||
|
$Command.=" -width=5.8 -height=8.3 ";
|
||||||
|
}
|
||||||
|
if($size=="A5Land"){
|
||||||
|
$Command.=" -width=8.3 -height=5.8 ";
|
||||||
|
}
|
||||||
|
if($size=="Letter"){
|
||||||
|
$Command.=" -width=8.5 -height=11 ";
|
||||||
|
}
|
||||||
|
$Command.=" | {$PStoPDF} - {$DestFile}";
|
||||||
|
$Convert=ExecCommand($Command);
|
||||||
|
}
|
||||||
|
return $DestFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
function CleanUp(){
|
||||||
|
global $PreviewDir;
|
||||||
|
$Command="rm -rf "
|
||||||
|
.$PreviewDir."*.pnm "
|
||||||
|
.$PreviewDir."*.png "
|
||||||
|
.$PreviewDir."*.jpg "
|
||||||
|
.$PreviewDir."*.pdf ";
|
||||||
|
$Delete=ExecCommand($Command);
|
||||||
|
}
|
||||||
|
|
||||||
|
function MoveToDest($origFile){
|
||||||
|
global $FinalDestDir;
|
||||||
|
$destFile=basename($origFile);
|
||||||
|
$destFile=$FinalDestDir.$destFile;
|
||||||
|
$Command="cp ".$origFile." ".$destFile;
|
||||||
|
$Copy=ExecCommand($Command);
|
||||||
|
}
|
||||||
|
|
||||||
|
function CropImage($file){
|
||||||
|
global $ImageMagik;
|
||||||
|
global $CropFuzz;
|
||||||
|
$Command=$ImageMagik." ".$file.' -fuzz '.$CropFuzz.'% -trim '.$file."\n";
|
||||||
|
$Cropping=ExecCommand($Command);
|
||||||
|
}
|
||||||
200
code/scans.php
200
code/scans.php
@@ -1,200 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
include_once "config.php";
|
|
||||||
include_once "utils.php";
|
|
||||||
include_once "ui.php";
|
|
||||||
|
|
||||||
|
|
||||||
$Commands=array();
|
|
||||||
|
|
||||||
function ExecCommand($command){
|
|
||||||
global $Commands;
|
|
||||||
$loggedCommand=array();
|
|
||||||
$loggedCommand["Command"]=$command;
|
|
||||||
list($returnCode, $stdout, $stderr)=ExecFull($command);
|
|
||||||
$loggedCommand["Result"]=$stdout;
|
|
||||||
$loggedCommand["Error"]=$stderr;
|
|
||||||
$loggedCommand["ReturnCode"]=$returnCode;
|
|
||||||
$Commands[]=$loggedCommand;
|
|
||||||
return $stdout;
|
|
||||||
}
|
|
||||||
|
|
||||||
function RenderCommandLog(){
|
|
||||||
global $Commands;
|
|
||||||
$renderLog="";
|
|
||||||
foreach($Commands as $loggedCommand){
|
|
||||||
$renderLog.=RenderParagraph($loggedCommand["Command"],"command");
|
|
||||||
$renderLog.=RenderParagraph($loggedCommand["Result"]);
|
|
||||||
$renderLog.=RenderParagraph($loggedCommand["Error"],"error");
|
|
||||||
}
|
|
||||||
|
|
||||||
return RenderDiv("divConsoleContainer",
|
|
||||||
RenderButton("btnToggle","Log","var elem=document.getElementById('divConsole');if(elem.style.display==''){elem.style.display='none';}else{elem.style.display='';}return false;").
|
|
||||||
RenderDiv("divConsole",$renderLog,null,"display:none;")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function ScannerDetect(){
|
|
||||||
global $ScanImage;
|
|
||||||
$Command=$ScanImage." -f\"%d|%v %m%n\"";
|
|
||||||
$scansResults=ExecCommand($Command);
|
|
||||||
$devicesResults=explode("\n",$scansResults);
|
|
||||||
list($ScannerDevice,$ScannerModel)=explode("|",$devicesResults[0]);
|
|
||||||
|
|
||||||
$Scanner=array();
|
|
||||||
$Scanner["ScanDevice"]=$ScannerDevice;
|
|
||||||
$Scanner["ScanModel"]=$ScannerModel;
|
|
||||||
|
|
||||||
return $Scanner;
|
|
||||||
}
|
|
||||||
|
|
||||||
function Scan($device,$resolution,$format,$size,$destFileBase){
|
|
||||||
global $PreviewDir;
|
|
||||||
global $ScanImage;
|
|
||||||
global $PNMtoJPEG;
|
|
||||||
global $PNMtoPNG;
|
|
||||||
global $PNMtoPS;
|
|
||||||
global $PStoPDF;
|
|
||||||
|
|
||||||
$DestFile=$PreviewDir.$destFileBase;
|
|
||||||
$Command=$ScanImage." -d ".$device.
|
|
||||||
" --resolution ".$resolution."dpi";
|
|
||||||
|
|
||||||
// Apply size
|
|
||||||
if($size=="A4"){
|
|
||||||
$Command.=" -x 210 -y 297";
|
|
||||||
}
|
|
||||||
if($size=="A5Port"){
|
|
||||||
$Command.=" -x 148 -y 210";
|
|
||||||
}
|
|
||||||
if($size=="A5Land"){
|
|
||||||
$Command.=" -x 210 -y 148";
|
|
||||||
}
|
|
||||||
if($size=="Letter"){
|
|
||||||
$Command.=" -x 216 -y 279";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Apply format
|
|
||||||
if($format=="jpg"){
|
|
||||||
$DestFile.=".jpg";
|
|
||||||
$Command.=" | {$PNMtoJPEG} --quality=100 > ".$DestFile;
|
|
||||||
$Scan=ExecCommand($Command);
|
|
||||||
}
|
|
||||||
if($format=="png"){
|
|
||||||
$DestFile.=".png";
|
|
||||||
$Command.=" | {$PNMtoPNG} > ".$DestFile;
|
|
||||||
$Scan=ExecCommand($Command);
|
|
||||||
}
|
|
||||||
if($format=="pdf"){
|
|
||||||
$DestFile2=$DestFile.".pnm";
|
|
||||||
$Command.=" > {$DestFile2}";
|
|
||||||
$Scan=ExecCommand($Command);
|
|
||||||
|
|
||||||
$DestFile.=".pdf";
|
|
||||||
$Command="cat {$DestFile2} | {$PNMtoPS}";
|
|
||||||
if($size=="A4"){
|
|
||||||
$Command.=" -width=8.3 -height=11.7 ";
|
|
||||||
}
|
|
||||||
if($size=="A5Port"){
|
|
||||||
$Command.=" -width=5.8 -height=8.3 ";
|
|
||||||
}
|
|
||||||
if($size=="A5Land"){
|
|
||||||
$Command.=" -width=8.3 -height=5.8 ";
|
|
||||||
}
|
|
||||||
if($size=="Letter"){
|
|
||||||
$Command.=" -width=8.5 -height=11 ";
|
|
||||||
}
|
|
||||||
$Command.=" | {$PStoPDF} - {$DestFile}";
|
|
||||||
$Convert=ExecCommand($Command);
|
|
||||||
}
|
|
||||||
return $DestFile;
|
|
||||||
}
|
|
||||||
|
|
||||||
function CleanUp(){
|
|
||||||
global $PreviewDir;
|
|
||||||
$Command="rm -rf "
|
|
||||||
.$PreviewDir."*.pnm "
|
|
||||||
.$PreviewDir."*.png "
|
|
||||||
.$PreviewDir."*.jpg "
|
|
||||||
.$PreviewDir."*.pdf ";
|
|
||||||
$Delete=ExecCommand($Command);
|
|
||||||
}
|
|
||||||
|
|
||||||
function MoveToDest($origFile){
|
|
||||||
global $FinalDestDir;
|
|
||||||
$destFile=basename($origFile);
|
|
||||||
$destFile=$FinalDestDir.$destFile;
|
|
||||||
$Command="cp ".$origFile." ".$destFile;
|
|
||||||
$Copy=ExecCommand($Command);
|
|
||||||
}
|
|
||||||
|
|
||||||
function CropImage($file){
|
|
||||||
global $ImageMagik;
|
|
||||||
global $CropFuzz;
|
|
||||||
$Command=$ImageMagik." ".$file.' -fuzz '.$CropFuzz.'% -trim '.$file."\n";
|
|
||||||
$Cropping=ExecCommand($Command);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function RenderDocument($filePath){
|
|
||||||
$filename=pathinfo($filePath)["basename"];
|
|
||||||
$filePathFixed=htmlentities($filePath,ENT_HTML5, "UTF-8");
|
|
||||||
$filenameFixed=htmlentities($filename,ENT_HTML5, "UTF-8");
|
|
||||||
$render="";
|
|
||||||
$render.='<div><a href="'.$filePathFixed.'" class="button" download="'.$filenameFixed.'">'.
|
|
||||||
'Download</a></div>'."\n";
|
|
||||||
$render.='<iframe src="'.$filePathFixed.'" '.
|
|
||||||
'class="previewDoc" ></iframe>';
|
|
||||||
return $render;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Detect scanner
|
|
||||||
$Scanner=array();
|
|
||||||
$Scanner["ScanDevice"]=RequestParm("hidScanDevice","");
|
|
||||||
$Scanner["ScanModel"]=RequestParm("hidScanModel","");
|
|
||||||
if($Scanner["ScanDevice"]=="" || $Scanner["ScanModel"]==""){
|
|
||||||
$Scanner=ScannerDetect();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Configure with formdata
|
|
||||||
$Resolution=RequestParm("ddlResolution",$Resolution);
|
|
||||||
$Format=RequestParm("ddlFormat",$Format);
|
|
||||||
$Size=RequestParm("ddlSize",$Size);
|
|
||||||
$Crop=RequestParm("chkCrop",$Crop)!=false;
|
|
||||||
$CropFuzz=RequestParm("txtCropFuzz",$CropFuzz);
|
|
||||||
|
|
||||||
// Preprocess
|
|
||||||
$DestFile=null;
|
|
||||||
if(RequestParm("btnScan",false)){
|
|
||||||
CleanUp();
|
|
||||||
$baseName="Scan-".date("Y-m-d_H_i_s");
|
|
||||||
$DestFile=Scan($Scanner["ScanDevice"],$Resolution,$Format,$Size,$baseName);
|
|
||||||
if($Crop){
|
|
||||||
CropImage($DestFile);
|
|
||||||
}
|
|
||||||
MoveToDest($DestFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Render Form
|
|
||||||
$formFields="";
|
|
||||||
$formFields.=RenderFieldInfo("Scanner",$Scanner["ScanModel"]);
|
|
||||||
$formFields.=RenderFieldCombo("Resolution","ddlResolution",$Resolutions,$Resolution);
|
|
||||||
$formFields.=RenderFieldCombo("Format","ddlFormat",$Formats,$Format);
|
|
||||||
$formFields.=RenderFieldCombo("Size","ddlSize",$Sizes,$Size);
|
|
||||||
$formFields.=RenderFieldCheckText("Cropping","chkCrop",$Crop,"txtCropFuzz",$CropFuzz);
|
|
||||||
$formFields.=RenderFieldButton("","btnScan","Scan");
|
|
||||||
$formFields.=RenderHidden("hidScanDevice",$Scanner["ScanDevice"]);
|
|
||||||
$formFields.=RenderHidden("hidScanModel",$Scanner["ScanModel"]);
|
|
||||||
$columns="";
|
|
||||||
$columns.=renderDiv("divColLeft",$formFields);
|
|
||||||
$result="";
|
|
||||||
if($DestFile!=null){
|
|
||||||
$result.=RenderDocument($DestFile);
|
|
||||||
}
|
|
||||||
$columns.=renderDiv("divColRight",$result);
|
|
||||||
$columns.=RenderCommandLog();
|
|
||||||
echo RenderForm("frmMain",$columns);
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user