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>