Got some variables and errors sorted... posting for cleanup

This commit is contained in:
Josh North 2014-08-25 21:44:59 -04:00
parent 8e263f5987
commit 6482ce187e
4 changed files with 72 additions and 34 deletions

View File

@ -9,6 +9,7 @@
$date_format = "Y-m-d_H.i.s"; // Date format to use for file naming - in PHP date code format
// PROGRAM LOCATIONS
$scanimage = "/usr/bin/scanimage"; //Absolute path to scanimage binary
$scanadf = "/usr/bin/scanadf"; // Absolute path to scanadf binary
$convert = "/usr/bin/convert"; //Absolute path to scanimage binary
?>
<html>
@ -34,33 +35,32 @@
<div class="pure-control-group">
<legend><h3>Device Setup</h3></legend>
<label for="device">Device</label>
<select id="device" class="pure-input-rounded">
<select name="device" id="device" class="pure-input-rounded">
<option value="epkowa:net:pr01.lzu01.point808.com" selected="selected">pr01 (Epson WF-2540)</option>
<option value="hpaio:/net/Deskjet_F4500_series?ip=192.168.101.222">pr02 (HP DeskJet F4580)</option>
</select>
</div>
<div class="pure-control-group">
<label for="source">Feed Source</label>
<select id="source" class="pure-input-rounded">
<select name="source" id="source" class="pure-input-rounded">
<option value="Automatic Document Feeder" selected="selected">Automatic Document Feeder</option>
<option value="Flatbed">Flatbed</option>
</select>
</div>
<div class="pure-control-group">
<label for="mode">Colors</label>
<select id="mode" class="pure-input-rounded">
<select name="mode" id="mode" class="pure-input-rounded">
<option value="Binary">Black & White</option>
<option value="Gray" selected="selected">Grayscale</option>
<option value="Color">Color</option>
</select>
</div>
<div class="pure-control-group">
<label for="resolution">Resolution</label>
<select id="resolution" class="pure-input-rounded">
<option value="75">75dpi (FASTEST!)</option>
<option value="300" selected="selected">300dpi (FAST!)</option>
<label for="sResolution">Resolution</label>
<select name="sResolution" id="sResolution" class="pure-input-rounded">
<option value="75" selected="selected">75dpi (FASTEST!)</option>
<option value="300">300dpi</option>
<option value="600">600dpi (SLOW!)</option>
<option value="1200">1200dpi (SLOWEST!)</option>
</select>
</div>
<input type="hidden" name="scan" value="yes" />
@ -70,33 +70,33 @@
<div class="pure-control-group">
<legend><h3>File Options</h3></legend>
<label for="filetype">File Type</label>
<select id="filetype" class="pure-input-rounded">
<select name="filetype" id="filetype" class="pure-input-rounded">
<option value="pdf" selected="selected">PDF (multipage)</option>
<option value="jpg">JPG (image)</option>
</select>
</div>
<div class="pure-control-group">
<label for="filenaming">File Naming</label>
<input id="filenaming" class="pure-input-rounded" placeholder="Append to filename">
<input name="filenaming" type="text" id="filenaming" class="pure-input-rounded" placeholder="Append to filename">
</div>
</div>
<div class="pure-u-1 pure-u-md-1-3">
<div class="pure-control-group">
<legend><h3>Page Size</h3></legend>
<label for="l">X-Start (top-left, mm)</label>
<input type="number" id="l" class="pure-input-rounded" value="0">
<legend><h3>Page Size (in mm)</h3></legend>
<label for="l">X-Start (top-left)</label>
<input name="l" type="number" id="l" class="pure-input-rounded" value="0">
</div>
<div class="pure-control-group">
<label for="t">Y-Start (top-left, mm)</label>
<input type="number" id="t" class="pure-input-rounded" value="0">
<label for="t">Y-Start (top-left)</label>
<input name="t" type="number" id="t" class="pure-input-rounded" value="0">
</div>
<div class="pure-control-group">
<label for="x">Width (mm)</label>
<input type="number" id="x" class="pure-input-rounded" value="215.9">
<label for="sX">Width (215.9=8.5in)</label>
<input name="sX" type="number" id="sX" class="pure-input-rounded" value="215.9">
</div>
<div class="pure-control-group">
<label for="y">Height (mm)</label>
<input type="number" id="y" class="pure-input-rounded" value="279">
<label for="y">Height (279=11in)</label>
<input name="y" type="number" id="y" class="pure-input-rounded" value="279">
</div>
</fieldset>
</div>
@ -105,20 +105,27 @@
<?php
// initialize scanned files directory path
$scans_dir = $app_dir . $scan_dir;
// append to filename if set, otherwise date only
if (isset($_POST["filenaming"])) {
$filename = date("Y-m-d_H.i.s")."_".$filenaming;
// set post variables
if(isset($_POST['sResolution'])) { $pResolution = $_POST['sResolution']; };
if(isset($_POST['sX'])) { $pX = $_POST['sX']; };
// decide to use scanimage if Flatbed or scanadf if ADF
if (isset($_POST['source'])) {
if ($_POST['source']=="Flatbed") {
$scanprog = $scanimage;
} else {
$filename = date("Y-m-d_H.i.s");
$scanprog = $scanadf;
}
} else {
$scanprog = $scanimage;
}
// are we being called as a result of a scan or just initial page view?
if (isset($_POST["scan"])) {
if (isset($_POST['scan'])) {
$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
@ -126,8 +133,19 @@ if (isset($_POST["scan"])) {
);
$cwd = '/tmp';
$env = array();
$process = proc_open("$scanimage -d $_POST[device] --output-file $scans_dir$fileName-%04d --source $_POST[source] --mode ".
"$_POST[mode] --resolution $_POST[resolution] -l $_POST[l] -t $_POST[t] -x $_POST[x] -y $_POST[y]", $descriptorspec, $pipes, $cwd, $env);
// append to filename if set, otherwise date only
if (isset($_POST['filenaming'])) {
if (empty($_POST['filenaming'])) {
$filename = date($date_format);
} else {
$filename = date($date_format)."_".$_POST['filenaming'];
}
} else {
$filename = date($date_format);
}
// do it!
$process = proc_open($scanprog . " -d " . $_POST['device'] . " --output-file " . $scans_dir . $filename . "-%04d --source " . $_POST['source'] . " --mode " . $_POST['mode'] . " --resolution " . $sResolution . " -l " . $_POST['l'] . " -t " . $_POST['t'] . " -x " . $sX . " -y " . $_POST['y'], $descriptorspec, $pipes, $cwd, $env);
if (is_resource($process)) {
$errors = stream_get_contents($pipes[2]);
$output = stream_get_contents($pipes[1]);
@ -136,7 +154,7 @@ if (isset($_POST["scan"])) {
$inputFiles = array();
$firstFile = "";
foreach ($dirList as $file) {
if (stristr($file, $fileName)) {
if (stristr($file, $filename)) {
if ($firstFile=="") $firstFile = $file;
array_push($inputFiles, $file);
}
@ -146,21 +164,26 @@ if (isset($_POST["scan"])) {
foreach ($inputFiles as $file) {
$path .= "pnm:" . $scans_dir . $file;
}
$output = `/usr/bin/convert pnm:$scans_dir$firstFile -resize '>300x' -strip $scans_dir$firstFile.jpg`;
$output .= `/usr/bin/convert -page a4 $path $scans_dir$fileName.pdf`;
//exec($convert . " pnm:" . $scans_dir . $firstFile . " -strip " . $scans_dir . $firstFile . ".jpg");
// make a (multi-page) pdf file from the scanned pnm files
// we have to set density to match the scan resolution and then calculate the width to pixels in order to make the pdf correct
exec($convert . ' -density ' . $sResolution . ' -page ' . $sX . ' ' . $path . ' ' . $scans_dir . $filename . '.pdf');
// $output = $convert . " pnm:" . $scans_dir . $firstFile . " -strip " . $scans_dir . $firstFile . ".jpg";
// $output .= ($convert . " " . $path . " " . $scans_dir . $filename . ".pdf");
echo "Scan Successful!";
} else {
echo "Scan Failed! No pages were scanned. Is there a document in the scanner?";
}
ob_flush();
echo "";
}
?>
<div class="pure-g">
<div class="pure-u-1 pure-u-md-1-2">
<h2>Previous Document Scans (PDF)</h2>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long