tag:forum.selfhtml.org,2005:/self
Wer hat Linux, PHP und einen Scanner? (Ich brauch mal Hilfe....) – SELFHTML-Forum
2021-11-08T09:01:59Z
https://forum.selfhtml.org/self/2021/nov/03/wer-hat-linux-php-und-einen-scanner-ich-brauch-mal-hilfe/1793233#m1793233
Raketenwilli
2021-11-03T11:03:25Z
2021-11-03T11:03:25Z
Wer hat Linux, PHP und einen Scanner? (Ich brauch mal Hilfe....)
<p>Ich schreibe gerade ein PHP-Skript zum Einscannen von Dokumenten/Bildern und brauche dazu ein wenig Hilfe.</p>
<p><strong>Helfen kann, wer Linux, PHP und einen Scanner hat.</strong></p>
<p>Das Skript stellt fest, welche Scanner erreichbar sind und ermittelt deren Eigenschaften. Diese müssen aber „geparst“ werden, wozu ich leider nur die Daten meines Scanners habe.</p>
<ul>
<li>Ich hätte gerne weitere Scanner damit getestet.</li>
</ul>
<p>Wer es ausführt muss Mitglied der Gruppe „sane“ scanner sein (also scannen können. Das Skript ändert nichts am System.</p>
<p><strong>Bitte in einem Terminal ausführen, die Ausgaben posten.</strong></p>
<p>Das Skript läuft, ist aber nicht fertig (Es fehlen z.B. auch noch Fehlerbehandlungen). Deshalb habe ich es als „bad“ markiert</p>
<pre><code class="block bad language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">class</span> <span class="token class-name-definition class-name">allScanners</span> <span class="token punctuation">{</span>
<span class="token keyword">public</span> <span class="token variable">$scanners</span><span class="token punctuation">;</span>
<span class="token keyword">function</span> <span class="token function-definition function">__construct</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token variable">$output</span> <span class="token operator">=</span> <span class="token string backtick-quoted-string">`/usr/bin/scanimage -L 2> /dev/null`</span><span class="token punctuation">;</span>
<span class="token variable">$lines</span> <span class="token operator">=</span> <span class="token function">explode</span> <span class="token punctuation">(</span><span class="token string double-quoted-string">"\n"</span><span class="token punctuation">,</span> <span class="token variable">$output</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">foreach</span> <span class="token punctuation">(</span> <span class="token variable">$lines</span> <span class="token keyword">as</span> <span class="token variable">$line</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token variable">$line</span> <span class="token operator">=</span> <span class="token function">trim</span><span class="token punctuation">(</span> <span class="token variable">$line</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$line</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token variable">$device</span> <span class="token operator">=</span> <span class="token function">str_replace</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'device `'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">,</span> <span class="token variable">$line</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$device</span> <span class="token operator">=</span> <span class="token function">preg_replace</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'/\'.*$/'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">,</span> <span class="token variable">$device</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$name</span> <span class="token operator">=</span> <span class="token function">preg_replace</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'/^.* is a /'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">,</span> <span class="token variable">$line</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$name</span> <span class="token operator">=</span> <span class="token function">preg_replace</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'/ scanner$/'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">,</span> <span class="token variable">$name</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$this</span><span class="token operator">-></span><span class="token property">scanners</span><span class="token punctuation">[</span><span class="token variable">$device</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'name'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token variable">$name</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token keyword">foreach</span> <span class="token punctuation">(</span> <span class="token function">array_keys</span><span class="token punctuation">(</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token property">scanners</span> <span class="token punctuation">)</span> <span class="token keyword">as</span> <span class="token variable">$device</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token variable">$output</span> <span class="token operator">=</span> <span class="token string backtick-quoted-string">`scanimage --help -Av -d "$device" 2> /dev/null| grep -P 'All options specific to device|^ +-'`</span><span class="token punctuation">;</span>
<span class="token keyword">echo</span> <span class="token string single-quoted-string">'-----------------------------------------------------------'</span> <span class="token operator">.</span> <span class="token constant">PHP_EOL</span><span class="token punctuation">;</span>
<span class="token keyword">echo</span> <span class="token variable">$output</span><span class="token operator">.</span> <span class="token constant">PHP_EOL</span><span class="token punctuation">;</span>
<span class="token keyword">echo</span> <span class="token string single-quoted-string">'-----------------------------------------------------------'</span> <span class="token operator">.</span> <span class="token constant">PHP_EOL</span><span class="token punctuation">;</span>
<span class="token variable">$isHelp</span> <span class="token operator">=</span> <span class="token constant boolean">true</span><span class="token punctuation">;</span>
<span class="token keyword">foreach</span> <span class="token punctuation">(</span> <span class="token function">explode</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"\n"</span><span class="token punctuation">,</span> <span class="token variable">$output</span> <span class="token punctuation">)</span> <span class="token keyword">as</span> <span class="token variable">$line</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token variable">$line</span> <span class="token operator">=</span> <span class="token function">trim</span><span class="token punctuation">(</span> <span class="token variable">$line</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$line</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$isHelp</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token number">0</span> <span class="token operator">===</span> <span class="token function">strpos</span><span class="token punctuation">(</span> <span class="token variable">$line</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'All options'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token variable">$isHelp</span> <span class="token operator">=</span> <span class="token constant boolean">false</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
<span class="token keyword">list</span><span class="token punctuation">(</span> <span class="token variable">$optionName</span><span class="token punctuation">,</span> <span class="token variable">$optionString</span> <span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token function">explode</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">' '</span><span class="token punctuation">,</span> <span class="token variable">$line</span><span class="token punctuation">,</span> <span class="token number">2</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$optionName</span><span class="token operator">=</span><span class="token function">trim</span><span class="token punctuation">(</span><span class="token variable">$optionName</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'-'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">switch</span> <span class="token punctuation">(</span> <span class="token variable">$optionName</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">case</span> <span class="token string double-quoted-string">"l"</span><span class="token punctuation">:</span>
<span class="token variable">$this</span><span class="token operator">-></span><span class="token property">scanners</span><span class="token punctuation">[</span><span class="token variable">$device</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'options'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token variable">$optionName</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token function">parseValueFromTo</span><span class="token punctuation">(</span> <span class="token variable">$optionName</span><span class="token punctuation">,</span> <span class="token variable">$optionString</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">break</span><span class="token punctuation">;</span>
<span class="token keyword">case</span> <span class="token string double-quoted-string">"t"</span><span class="token punctuation">:</span>
<span class="token variable">$this</span><span class="token operator">-></span><span class="token property">scanners</span><span class="token punctuation">[</span><span class="token variable">$device</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'options'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token variable">$optionName</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token function">parseValueFromTo</span><span class="token punctuation">(</span> <span class="token variable">$optionName</span><span class="token punctuation">,</span> <span class="token variable">$optionString</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">break</span><span class="token punctuation">;</span>
<span class="token keyword">case</span> <span class="token string double-quoted-string">"x"</span><span class="token punctuation">:</span>
<span class="token variable">$this</span><span class="token operator">-></span><span class="token property">scanners</span><span class="token punctuation">[</span><span class="token variable">$device</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'options'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token variable">$optionName</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token function">parseValueFromTo</span><span class="token punctuation">(</span> <span class="token variable">$optionName</span><span class="token punctuation">,</span> <span class="token variable">$optionString</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">break</span><span class="token punctuation">;</span>
<span class="token keyword">case</span> <span class="token string double-quoted-string">"y"</span><span class="token punctuation">:</span>
<span class="token variable">$this</span><span class="token operator">-></span><span class="token property">scanners</span><span class="token punctuation">[</span><span class="token variable">$device</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'options'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token variable">$optionName</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token function">parseValueFromTo</span><span class="token punctuation">(</span> <span class="token variable">$optionName</span><span class="token punctuation">,</span> <span class="token variable">$optionString</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">break</span><span class="token punctuation">;</span>
<span class="token keyword">case</span> <span class="token string double-quoted-string">"resolution"</span><span class="token punctuation">:</span>
<span class="token variable">$this</span><span class="token operator">-></span><span class="token property">scanners</span><span class="token punctuation">[</span><span class="token variable">$device</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'options'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token variable">$optionName</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token function">parseValueList</span><span class="token punctuation">(</span> <span class="token variable">$optionName</span><span class="token punctuation">,</span> <span class="token variable">$optionString</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">break</span><span class="token punctuation">;</span>
<span class="token keyword">case</span> <span class="token string double-quoted-string">"mode"</span><span class="token punctuation">:</span>
<span class="token variable">$this</span><span class="token operator">-></span><span class="token property">scanners</span><span class="token punctuation">[</span><span class="token variable">$device</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'options'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token variable">$optionName</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token function">parseValueList</span><span class="token punctuation">(</span> <span class="token variable">$optionName</span><span class="token punctuation">,</span> <span class="token variable">$optionString</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">break</span><span class="token punctuation">;</span>
<span class="token keyword">case</span> <span class="token string double-quoted-string">"source"</span><span class="token punctuation">:</span>
<span class="token variable">$this</span><span class="token operator">-></span><span class="token property">scanners</span><span class="token punctuation">[</span><span class="token variable">$device</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'options'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token variable">$optionName</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token function">parseValueList</span><span class="token punctuation">(</span> <span class="token variable">$optionName</span><span class="token punctuation">,</span> <span class="token variable">$optionString</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">break</span><span class="token punctuation">;</span>
<span class="token keyword">default</span><span class="token punctuation">:</span>
<span class="token function">user_error</span><span class="token punctuation">(</span> <span class="token string double-quoted-string">"Unbekannte Option: '${optionName}' mit String '${optionString}'"</span><span class="token punctuation">,</span> <span class="token constant">E_USER_NOTICE</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token keyword">function</span> <span class="token function-definition function">parseValueFromTo</span><span class="token punctuation">(</span> <span class="token variable">$optionName</span><span class="token punctuation">,</span> <span class="token variable">$s</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token variable">$ret</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token variable">$FromTo</span> <span class="token operator">=</span> <span class="token constant boolean">false</span><span class="token punctuation">;</span>
<span class="token variable">$default</span> <span class="token operator">=</span> <span class="token constant boolean">false</span><span class="token punctuation">;</span>
<span class="token keyword">list</span><span class="token punctuation">(</span> <span class="token variable">$FromTo</span><span class="token punctuation">,</span> <span class="token variable">$default</span><span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token function">explode</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">' '</span><span class="token punctuation">,</span> <span class="token function">trim</span><span class="token punctuation">(</span> <span class="token variable">$s</span> <span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token number">2</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$FromTo</span> <span class="token keyword">and</span> <span class="token variable">$default</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">list</span><span class="token punctuation">(</span> <span class="token variable">$ret</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'min'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token variable">$ret</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'max'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token function">explode</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'..'</span><span class="token punctuation">,</span> <span class="token variable">$FromTo</span><span class="token punctuation">,</span> <span class="token number">2</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$ret</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'type'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'FromTo'</span><span class="token punctuation">;</span>
<span class="token variable">$ret</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'min'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">floatval</span><span class="token punctuation">(</span> <span class="token variable">$ret</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'min'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$ret</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'max'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">floatval</span><span class="token punctuation">(</span> <span class="token variable">$ret</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'max'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$ret</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'default'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">floatval</span><span class="token punctuation">(</span> <span class="token function">trim</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'['</span><span class="token punctuation">,</span> <span class="token function">trim</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">']'</span><span class="token punctuation">,</span> <span class="token variable">$default</span><span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">return</span> <span class="token variable">$ret</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
<span class="token function">user_error</span><span class="token punctuation">(</span> <span class="token string double-quoted-string">"Werte für Option ${optionName} sind nicht feststellbar"</span><span class="token punctuation">,</span> <span class="token constant">E_USER_NOTICE</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">return</span> <span class="token constant boolean">false</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token keyword">function</span> <span class="token function-definition function">parseValueList</span><span class="token punctuation">(</span> <span class="token variable">$optionName</span><span class="token punctuation">,</span> <span class="token variable">$s</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token variable">$ret</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token variable">$s</span> <span class="token operator">=</span> <span class="token function">trim</span><span class="token punctuation">(</span> <span class="token variable">$s</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$ret</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'type'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'ValueList'</span><span class="token punctuation">;</span>
<span class="token variable">$ret</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'default'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token constant boolean">false</span><span class="token punctuation">;</span>
<span class="token variable">$ret</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'options'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token constant boolean">false</span><span class="token punctuation">;</span>
<span class="token variable">$o</span> <span class="token operator">=</span> <span class="token function">preg_replace</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'/ \[.*\]$/'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">,</span> <span class="token variable">$s</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$o</span> <span class="token operator">=</span> <span class="token function">preg_replace</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'/dpi$/'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">,</span> <span class="token variable">$o</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$ret</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'options'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">explode</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'|'</span><span class="token punctuation">,</span> <span class="token variable">$o</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$ret</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'default'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">preg_replace</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'/^.*\[/'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">,</span> <span class="token variable">$s</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$ret</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'default'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">trim</span><span class="token punctuation">(</span> <span class="token variable">$ret</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'default'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">']'</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">return</span> <span class="token variable">$ret</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token variable">$sallScanners</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">allScanners</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token function">print_r</span> <span class="token punctuation">(</span><span class="token variable">$sallScanners</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
<p>Ziel ist übrigens, einen Raspi oder dergleichen mit einem nicht netzwerkfähigen Scanner zu verknüpfen und dann das Scannen via http[s] anzubieten.</p>
https://forum.selfhtml.org/self/2021/nov/03/wer-hat-linux-php-und-einen-scanner-ich-brauch-mal-hilfe/1793234#m1793234
Felix Riesterer
https://felix-riesterer.de
2021-11-03T14:45:27Z
2021-11-03T14:45:27Z
Wer hat Linux, PHP und einen Scanner? (Ich brauch mal Hilfe....)
<p>Lieber Raketenwilli,</p>
<blockquote>
<p>Ziel ist übrigens, einen Raspi oder dergleichen mit einem nicht netzwerkfähigen Scanner zu verknüpfen und dann das Scannen via http[s] anzubieten.</p>
</blockquote>
<p>warum genügt es Dir nicht, einen passenden Printserver auf dem Raspi einzusetzen? Schnelles Suchen liefert mir: <a href="https://pimylifeup.com/raspberry-pi-print-server/" rel="nofollow noopener noreferrer">https://pimylifeup.com/raspberry-pi-print-server/</a></p>
<p>Liebe Grüße</p>
<p>Felix Riesterer</p>
https://forum.selfhtml.org/self/2021/nov/03/wer-hat-linux-php-und-einen-scanner-ich-brauch-mal-hilfe/1793320#m1793320
Raketenwilli
2021-11-05T12:59:04Z
2021-11-05T12:59:04Z
Ohne PHP: Wer hat Linux und einen Scanner? (Bettelposting.)
<p>Es geht auch ohne PHP. Handlungsanleitung:</p>
<pre><code class="block">~> LANG=c /usr/bin/scanimage -L 2> /dev/null
</code></pre>
<p>liefert bei mir folgende Ausgabe:</p>
<pre><code class="block">device `BrotherADS2200:libusb:001:009' is a Brother ADS2200 USB scanner
</code></pre>
<p>(Werden mehrere Scanner erkannt, dann gibt es auch mehr Ausgabezeilen.)</p>
<p>„BrotherADS2200:libusb:001:009“ ist bei mir der Gerätename.</p>
<p>Mit diesem dann also:</p>
<pre><code class="block">~> LANG=c scanimage --help -Av -d "BrotherADS2200:libusb:001:009" 2> /dev/null
</code></pre>
<p>Ich brauche die Ausgaben wirklich…</p>
https://forum.selfhtml.org/self/2021/nov/03/wer-hat-linux-php-und-einen-scanner-ich-brauch-mal-hilfe/1793447#m1793447
Camping_RIDER
janosch.zoller@selfhtml.org
http://www.campingrider.de
2021-11-08T00:22:22Z
2021-11-08T00:22:22Z
Wer hat Linux, PHP und einen Scanner? (Ich brauch mal Hilfe....)
<p>Moin :)</p>
<p>Ich helfe gerne soweit ich kann.</p>
<pre><code class="block language-txt">campingrider@WISHMASTERSCAVE:~$ php ./scanner.php
-----------------------------------------------------------
--format=pnm|tiff|png|jpeg file format of output file
--batch-count=# how many pages to scan in batch mode
--batch-increment=# increase page number in filename by #
--batch-double increment page number by two, same as
--batch-increment=2
--batch-print print image filenames to stdout
--batch-prompt ask for pressing a key before scanning a page
--accept-md5-only only accept authorization requests using md5
--mode Lineart|Gray|Color [Lineart]
--depth 8bit [inactive]
--halftoning None|Halftone A (Hard Tone)|Halftone B (Soft Tone)|Halftone C (Net Screen)|Dither A (4x4 Bayer)|Dither B (4x4 Spiral)|Dither C (4x4 Net Screen)|Dither D (8x4 Net Screen)|Text Enhanced Technology|Download pattern A|Download pattern B [inactive]
--dropout None|Red|Green|Blue [None]
--brightness 0..0 [inactive]
--sharpness -2..2 [inactive]
--gamma-correction User defined (Gamma=1.0)|User defined (Gamma=1.8) [User defined (Gamma=1.8)]
--color-correction None|Built in CCT profile|User defined CCT profile [inactive]
--resolution 75|100|150|300|600|1200dpi [75]
--threshold 0..255 [128]
--mirror[=(yes|no)] [inactive]
--auto-area-segmentation[=(yes|no)] [inactive]
--red-gamma-table 0..255,...
--green-gamma-table 0..255,...
--blue-gamma-table 0..255,...
--wait-for-button[=(yes|no)] [no]
--cct-type Automatic|Reflective|Colour negatives|Monochrome negatives|Colour positives [inactive]
--cct-profile -2..2,...
--preview[=(yes|no)] [no]
-l 0..215.9mm [0]
-t 0..297.18mm [0]
-x 0..215.9mm [215.9]
-y 0..297.18mm [297.18]
--source Flatbed [inactive]
--auto-eject[=(yes|no)] [inactive]
--film-type Positive Film|Negative Film|Positive Slide|Negative Slide [inactive]
--focus-position Focus on glass|Focus 2.5mm above glass [inactive]
--bay 1|2|3|4|5|6 [inactive]
--eject [inactive]
--adf-mode Simplex|Duplex [inactive]
All options specific to device `epson2:net:192.168.178.21':
--mode Lineart|Gray|Color [Lineart]
--depth 8bit [inactive]
--halftoning None|Halftone A (Hard Tone)|Halftone B (Soft Tone)|Halftone C (Net Screen)|Dither A (4x4 Bayer)|Dither B (4x4 Spiral)|Dither C (4x4 Net Screen)|Dither D (8x4 Net Screen)|Text Enhanced Technology|Download pattern A|Download pattern B [inactive]
--dropout None|Red|Green|Blue [None]
--brightness 0..0 [inactive]
--sharpness -2..2 [inactive]
--gamma-correction User defined (Gamma=1.0)|User defined (Gamma=1.8) [User defined (Gamma=1.8)]
--color-correction None|Built in CCT profile|User defined CCT profile [inactive]
--resolution 75|100|150|300|600|1200dpi [75]
--threshold 0..255 [128]
--mirror[=(yes|no)] [inactive]
--auto-area-segmentation[=(yes|no)] [inactive]
--red-gamma-table 0..255,...
--green-gamma-table 0..255,...
--blue-gamma-table 0..255,...
--wait-for-button[=(yes|no)] [no]
--cct-type Automatic|Reflective|Colour negatives|Monochrome negatives|Colour positives [inactive]
--cct-profile -2..2,...
--preview[=(yes|no)] [no]
-l 0..215.9mm [0]
-t 0..297.18mm [0]
-x 0..215.9mm [215.9]
-y 0..297.18mm [297.18]
--source Flatbed [inactive]
--auto-eject[=(yes|no)] [inactive]
--film-type Positive Film|Negative Film|Positive Slide|Negative Slide [inactive]
--focus-position Focus on glass|Focus 2.5mm above glass [inactive]
--bay 1|2|3|4|5|6 [inactive]
--eject [inactive]
--adf-mode Simplex|Duplex [inactive]
-----------------------------------------------------------
PHP Notice: Unbekannte Option: 'depth' mit String '8bit [inactive]' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'halftoning' mit String 'None|Halftone A (Hard Tone)|Halftone B (Soft Tone)|Halftone C (Net Screen)|Dither A (4x4 Bayer)|Dither B (4x4 Spiral)|Dither C (4x4 Net Screen)|Dither D (8x4 Net Screen)|Text Enhanced Technology|Download pattern A|Download pattern B [inactive]' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'dropout' mit String 'None|Red|Green|Blue [None]' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'brightness' mit String '0..0 [inactive]' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'sharpness' mit String '-2..2 [inactive]' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'gamma-correction' mit String 'User defined (Gamma=1.0)|User defined (Gamma=1.8) [User defined (Gamma=1.8)]' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'color-correction' mit String 'None|Built in CCT profile|User defined CCT profile [inactive]' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'threshold' mit String '0..255 [128]' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'mirror[=(yes|no)]' mit String '[inactive]' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'auto-area-segmentation[=(yes|no)]' mit String '[inactive]' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'red-gamma-table' mit String '0..255,...' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'green-gamma-table' mit String '0..255,...' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'blue-gamma-table' mit String '0..255,...' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'wait-for-button[=(yes|no)]' mit String '[no]' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'cct-type' mit String 'Automatic|Reflective|Colour negatives|Monochrome negatives|Colour positives [inactive]' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'cct-profile' mit String '-2..2,...' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'preview[=(yes|no)]' mit String '[no]' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'auto-eject[=(yes|no)]' mit String '[inactive]' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'film-type' mit String 'Positive Film|Negative Film|Positive Slide|Negative Slide [inactive]' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'focus-position' mit String 'Focus on glass|Focus 2.5mm above glass [inactive]' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'bay' mit String '1|2|3|4|5|6 [inactive]' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'eject' mit String '[inactive]' in /home/campingrider/scanner.php on line 61
PHP Notice: Unbekannte Option: 'adf-mode' mit String 'Simplex|Duplex [inactive]' in /home/campingrider/scanner.php on line 61
allScanners Object
(
[scanners] => Array
(
[epson2:net:192.168.178.21] => Array
(
[name] => Epson PID 0864 flatbed
[options] => Array
(
[mode] => Array
(
[type] => ValueList
[default] => Lineart
[options] => Array
(
[0] => Lineart
[1] => Gray
[2] => Color
)
)
[resolution] => Array
(
[type] => ValueList
[default] => 75
[options] => Array
(
[0] => 75
[1] => 100
[2] => 150
[3] => 300
[4] => 600
[5] => 1200
)
)
[l] => Array
(
[min] => 0
[max] => 215.9
[type] => FromTo
[default] => 0
)
[t] => Array
(
[min] => 0
[max] => 297.18
[type] => FromTo
[default] => 0
)
[x] => Array
(
[min] => 0
[max] => 215.9
[type] => FromTo
[default] => 0
)
[y] => Array
(
[min] => 0
[max] => 297.18
[type] => FromTo
[default] => 0
)
[source] => Array
(
[type] => ValueList
[default] => inactive
[options] => Array
(
[0] => Flatbed
)
)
)
)
)
)
</code></pre>
<p>Es handelt sich um ein Multifunktionsgerät mit Kennung EPSON Stylus SX420W, angeschlossen über dessen WLAN-Schnittstelle.</p>
<p>Grüße,</p>
<p>RIDER</p>
<div class="signature">-- <br>
Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Albers-Zoller<br>
# <a href="https://twitter.com/Camping_RIDER" rel="nofollow noopener noreferrer">Twitter</a> # <a href="http://steamcommunity.com/id/Camping_RIDER" rel="nofollow noopener noreferrer">Steam</a> # <a href="https://www.youtube.com/user/RidersFlame" rel="nofollow noopener noreferrer">YouTube</a> # <a href="http://wiki.selfhtml.org/wiki/Benutzer:Camping_RIDER" rel="nofollow noopener noreferrer">Self-Wiki</a> #
<a href="http://community.de.selfhtml.org/fanprojekte/selfcode.htm" rel="nofollow noopener noreferrer">Selfcode</a>: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[
</div>
https://forum.selfhtml.org/self/2021/nov/03/wer-hat-linux-php-und-einen-scanner-ich-brauch-mal-hilfe/1793235#m1793235
Felix Riesterer
https://felix-riesterer.de
2021-11-03T14:46:29Z
2021-11-03T14:46:29Z
Wer hat Linux, PHP und einen Scanner? (Ich brauch mal Hilfe....)
<p>Lieber Felix,</p>
<p>wer lesen kann, ist klar im Vorteil. Es ging nicht um Drucker, sondern um Scanner. Das ist nicht wirklich das Gleiche... :-/</p>
<p>Liebe Grüße</p>
<p>Felix Riesterer</p>
https://forum.selfhtml.org/self/2021/nov/03/wer-hat-linux-php-und-einen-scanner-ich-brauch-mal-hilfe/1793236#m1793236
Raketenwilli
2021-11-03T15:04:06Z
2021-11-03T15:04:06Z
Wer hat Linux, PHP und einen Scanner? (Ich brauch mal Hilfe....)
<p>Naja. Mit cups und samba komme ich gut klar :-)</p>
<p>Aber etwas wie</p>
<pre><code class="block">scanimage --help -Av -d "BrotherADS2200:libusb:001:009"
</code></pre>
<p>liefert Ergebnisse, die halt vom Scanner und dessen Treiber abhängen und „geparst“ werden müssen, damit ich ein Formular bauen kann, mit dessen Hilfe man dann wieder so scannen kann wie man es will…</p>
<p>Deshalb brauche ich Vergleichsdaten von Scannern.</p>
https://forum.selfhtml.org/self/2021/nov/03/wer-hat-linux-php-und-einen-scanner-ich-brauch-mal-hilfe/1793442#m1793442
seth
2021-11-07T17:34:59Z
2021-11-07T17:38:31Z
Ohne PHP: Wer hat Linux und einen Scanner? (Bettelposting.)
<p>gudn tach!</p>
<pre><code class="block">$ scanimage --help -Av -d "brother2:bus1;dev1"
Usage: scanimage [OPTION]...
Start image acquisition on a scanner device and write image data to
standard output.
Parameters are separated by a blank from single-character options (e.g.
-d epson) and by a "=" from multi-character options (e.g. --device-name=epson).
-d, --device-name=DEVICE use a given scanner device (e.g. hp:/dev/scanner)
--format=pnm|tiff|png|jpeg file format of output file
-i, --icc-profile=PROFILE include this ICC profile into TIFF file
-L, --list-devices show available scanner devices
-f, --formatted-device-list=FORMAT similar to -L, but the FORMAT of the output
can be specified: %d (device name), %v (vendor),
%m (model), %t (type), %i (index number), and
%n (newline)
-b, --batch[=FORMAT] working in batch mode, FORMAT is `out%d.pnm' `out%d.tif'
`out%d.png' or `out%d.jpg' by default depending on --format
This option is incompatible with --output-file. --batch-start=# page number to start naming files with
--batch-count=# how many pages to scan in batch mode
--batch-increment=# increase page number in filename by #
--batch-double increment page number by two, same as
--batch-increment=2
--batch-print print image filenames to stdout
--batch-prompt ask for pressing a key before scanning a page
--accept-md5-only only accept authorization requests using md5
-p, --progress print progress messages
-o, --output-file=PATH save output to the given file instead of stdout.
This option is incompatible with --batch.
-n, --dont-scan only set options, don't actually scan
-T, --test test backend thoroughly
-A, --all-options list all available backend options
-h, --help display this help message and exit
-v, --verbose give even more status messages
-B, --buffer-size=# change input buffer size (in kB, default 32)
-V, --version print version information
Output format is not set, using pnm as a default.
scanimage: rounded value of br-x from 215.9 to 215.88
scanimage: rounded value of br-y from 355.6 to 355.567
Options specific to device `brother2:bus1;dev1':
Mode:
--mode Black & White|Gray[Error Diffusion]|True Gray|24bit Color|24bit Color[Fast] [24bit Color]
Select the scan mode
--resolution 100|150|200|300|400|600|1200|2400|4800|9600dpi [200]
Sets the resolution of the scanned image.
--source FlatBed|Automatic Document Feeder [Automatic Document Feeder]
Selects the scan source (such as a document-feeder).
--brightness -50..50% (in steps of 1) [inactive]
Controls the brightness of the acquired image.
--contrast -50..50% (in steps of 1) [inactive]
Controls the contrast of the acquired image.
Geometry:
-l 0..215.9mm (in steps of 0.0999908) [0]
Top-left x position of scan area.
-t 0..355.6mm (in steps of 0.0999908) [0]
Top-left y position of scan area.
-x 0..215.9mm (in steps of 0.0999908) [215.88]
Width of scan-area.
-y 0..355.6mm (in steps of 0.0999908) [355.567]
Height of scan-area.
All options specific to device `brother2:bus1;dev1':
Mode:
--mode Black & White|Gray[Error Diffusion]|True Gray|24bit Color|24bit Color[Fast] [24bit Color]
Select the scan mode
--resolution 100|150|200|300|400|600|1200|2400|4800|9600dpi [200]
Sets the resolution of the scanned image.
--source FlatBed|Automatic Document Feeder [Automatic Document Feeder]
Selects the scan source (such as a document-feeder).
--brightness -50..50% (in steps of 1) [inactive]
Controls the brightness of the acquired image.
--contrast -50..50% (in steps of 1) [inactive]
Controls the contrast of the acquired image.
Geometry:
-l 0..215.9mm (in steps of 0.0999908) [0]
Top-left x position of scan area.
-t 0..355.6mm (in steps of 0.0999908) [0]
Top-left y position of scan area.
-x 0..215.9mm (in steps of 0.0999908) [215.88]
Width of scan-area.
-y 0..355.6mm (in steps of 0.0999908) [355.567]
Height of scan-area.
</code></pre>
<p>ausserdem habe ich noch gefunden: <a href="https://en.opensuse.org/SDB:Configuring_Scanners#Frontend" rel="nofollow noopener noreferrer">https://en.opensuse.org/SDB:Configuring_Scanners#Frontend</a></p>
<p>prosit</p>
<p>seth</p>
https://forum.selfhtml.org/self/2021/nov/03/wer-hat-linux-php-und-einen-scanner-ich-brauch-mal-hilfe/1793452#m1793452
Raketenwilli
2021-11-08T09:00:38Z
2021-11-08T09:00:38Z
Danke!
<p>Oh! Danke!</p>
https://forum.selfhtml.org/self/2021/nov/03/wer-hat-linux-php-und-einen-scanner-ich-brauch-mal-hilfe/1793453#m1793453
Raketenwilli
2021-11-08T09:01:59Z
2021-11-08T09:01:59Z
Danke!
<p>Das ist ja “fett Futter“.</p>