103 lines
4.0 KiB
PHP
103 lines
4.0 KiB
PHP
|
<head>
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||
|
<title>Scanimage Web GUI</title>
|
||
|
</head>
|
||
|
<body>
|
||
|
<?php
|
||
|
if (isset($_POST["scan"])) {
|
||
|
$findScanner = array(
|
||
|
0 => array("pipe", "r"), // stdin is a pipe that the child will read from
|
||
|
1 => array("pipe", "w"), // stdout is a pipe that the child will write to
|
||
|
2 => array("pipe", "w") // stderr is a file to write to
|
||
|
);
|
||
|
$env=array();
|
||
|
$process = proc_open("/usr/bin/sane-find-scanner", $findScanner, $pipes, '/tmp', $env);
|
||
|
if (is_resource($process)) {
|
||
|
$data = stream_get_contents($pipes[2]);
|
||
|
$data .= stream_get_contents($pipes[1]);
|
||
|
}
|
||
|
proc_close($process);
|
||
|
$match = preg_match('/libusb:\d+:\d+/', $data, $matches);
|
||
|
if ($match&&count($matches)) {
|
||
|
$address=$matches[0];
|
||
|
}
|
||
|
$fileName = "Scan_".date("Y-m-d_H.i.s");
|
||
|
$descriptorspec = array(
|
||
|
0 => array("pipe", "r"), // stdin is a pipe that the child will read from
|
||
|
1 => array("pipe", "w"), // stdout is a pipe that the child will write to
|
||
|
2 => array("pipe", "w") // stderr is a file to write to
|
||
|
);
|
||
|
$cwd = '/tmp';
|
||
|
$env = array();
|
||
|
|
||
|
$process = proc_open("/usr/bin/scanadf -d epkowa:net:pr01.lzu01.point808.com --output-file ".
|
||
|
"/var/www/scanout/$fileName-%04d --quick-format Letter".
|
||
|
" --mode $_POST[mode] --resolution $_POST[quality] --source Automatic Document Feeder", $descriptorspec, $pipes, $cwd, $env);
|
||
|
|
||
|
if (is_resource($process)) {
|
||
|
$errors = stream_get_contents($pipes[2]);
|
||
|
$output = stream_get_contents($pipes[1]);
|
||
|
}
|
||
|
|
||
|
$dirList = scandir("/var/www/scanout");
|
||
|
$inputFiles = array();
|
||
|
$firstFile = "";
|
||
|
foreach ($dirList as $file) {
|
||
|
if (stristr($file, $fileName)) {
|
||
|
//this is one of our input files
|
||
|
if ($firstFile=="") $firstFile = $file;
|
||
|
array_push($inputFiles, $file);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (count($inputFiles))
|
||
|
{
|
||
|
$path="";
|
||
|
foreach ($inputFiles as $file) {
|
||
|
$path .= "pnm:/var/www/scanout/$file ";
|
||
|
}
|
||
|
$output = `/usr/bin/convert pnm:/var/www/scanout/$firstFile -resize '>300x' -strip /var/www/scanout/$firstFile.jpg`;
|
||
|
$output .= `/usr/bin/convert -page a4 $path /var/www/scanout/$fileName.pdf`;
|
||
|
echo "Scan Successful!";
|
||
|
} else {
|
||
|
echo "Scan Failed! No pages were scanned. Is there a document in the scanner?";
|
||
|
}
|
||
|
ob_flush();
|
||
|
echo "";
|
||
|
}
|
||
|
?>
|
||
|
<h1>Scan A Document</h1>
|
||
|
<h3>Use the drop-downs below to set preferences.<br />
|
||
|
Load documents in the feeder and press "Scan". When<br />
|
||
|
the job completes, you will be able to pick your file<br />
|
||
|
from the selection at the bottom of the page.</h3>
|
||
|
<form action="index.php" method="post">
|
||
|
Color or Black & White?
|
||
|
<select name="mode">
|
||
|
<option value="Binary" selected="selected">Black & White</option>
|
||
|
<option value="Gray">Grayscale</option>
|
||
|
<option value="Color">Color</option>
|
||
|
</select><br />
|
||
|
Regular, high, low quality?
|
||
|
<select name="quality">
|
||
|
<option value="72dpi">Low (FAST!)</option>
|
||
|
<option value="150dpi" selected="selected">Standard</option>
|
||
|
<option value="300dpi">High (EXTREMELY SLOW!!!)</option>
|
||
|
</select><br />
|
||
|
|
||
|
<input type="hidden" name="scan" value="yes" />
|
||
|
<input type="submit" onclick="this.disabled=true;this.value='Scanning - PLEASE be patient!';this.form.submit();" value="Scan!" />
|
||
|
</form>
|
||
|
|
||
|
<h2>Previous Scans</h2>
|
||
|
<h4>(Newest scan is on top!)</h4>
|
||
|
<?php
|
||
|
$phpfiles = array_reverse(glob("scanout/*.pdf"));
|
||
|
foreach($phpfiles as $phpfile) {
|
||
|
echo "<a target=\"_blank\" href=$phpfile>".basename($phpfile)."</a><br>";
|
||
|
}
|
||
|
?>
|
||
|
|
||
|
</body>
|
||
|
</html>
|