Jak uložit zdroj pro skenování

crown

  • ****
  • 390
    • Zobrazit profil
Jak uložit zdroj pro skenování
« kdy: 21. 05. 2021, 18:14:52 »
Mam nextcloud instanci na Odroid HC2.

Na stejne siti je HP mutifunkce a chci nastavit skenovani z nextcloudu. Nainstaloval jsem sane-utils, netpbm, hplip, nastavil multifunkci pres hp-setup -i, upravil sudoers file, aby www-data mohl spoustet scanimage. Potom aplikace nextcloud-scanner.
Nakonec to celkem funguje, kdyz se dokument da do automatickeho podavace.

Potreboval bych ale nastavit, aby to skenovalo z plochy skeneru.

Skenovaci aplikace jednoduse spousti pod uzivatelem www-data
 
Kód: [Vybrat]
scanimage --mode color --resolution 300 -x 215 -y 297|pnmtojpeg > /tmp/img

Pokud to spustim rucne a pridam parametr
Kód: [Vybrat]
--source flatbed  tak to skenuje spravne z plochy.

Poradi mi nekdo prosim, v jakem konfiguranim souboru a jak to volbu --source flatbed ulozit?
« Poslední změna: 23. 05. 2021, 22:52:44 od Petr Krčmář »


« Poslední změna: 22. 05. 2021, 11:29:48 od IDontCare »

crown

  • ****
  • 390
    • Zobrazit profil
Re:Jak uložit zdroj pro skenování
« Odpověď #2 kdy: 24. 05. 2021, 10:16:33 »
Ja myslel, jestli to jde nastavit pro vsechny aplikace na danem pocitaci.

Kdyz budu editovat zdrojak aplikace "next-cloud" scanner, tak se mi to pri kazdem updatu na dalsi verzi zase prepise.

Rad bych, kdyby se nekde v configu prenastavil default zdroj a pri zavolani
Kód: [Vybrat]
scanimage --mode color --resolution 300 -x 215 -y 297|pnmtojpeg > /tmp/img to bralo rovnou z plochy. Tedy pokud to jde...

crown

  • ****
  • 390
    • Zobrazit profil
Re:Jak uložit zdroj pro skenování
« Odpověď #3 kdy: 24. 05. 2021, 14:41:04 »
@IDontCare: kazdopadne ale dekuju za najiti, kde se to v kodu vyskytuje. Muzu to upravit a pouzivat, dokud neobjevim globalni config na skenovani.

Re:Jak uložit zdroj pro skenování
« Odpověď #4 kdy: 24. 05. 2021, 16:36:25 »
Zadnou konfiguraci to nema:
Citace
Currently Scanner has no settings, so there is no in-app configuration.
Muzes na to zalozit Issue a poprosit autora, nebo si to dodelas sam:

https://github.com/e-alfred/nextcloud-scanner


crown

  • ****
  • 390
    • Zobrazit profil
Re:Jak uložit zdroj pro skenování
« Odpověď #5 kdy: 24. 05. 2021, 18:13:56 »
Ja myslel obecnou konfiguraci skenovani, ne jen pro tuto app.
Pokud bych pustil treba simple-scan, bude mit take jako prednastaveny zdroj podavac.

Autora kontaktovat zkusim


crown

  • ****
  • 390
    • Zobrazit profil
Re:Jak uložit zdroj pro skenování
« Odpověď #6 kdy: 26. 05. 2021, 11:37:59 »
Tak jsem navic zjistil, ze scanimage zpusobuje chybu, kdyz rozmer skenovane plochy je pres 210 x 250 bodu.
Kód: [Vybrat]
pnmtojpeg: EOF / read error reading a row of pixelsStandardni A4 je ale samozrejme vetsi, takze zmensit skenovanou plochu neni reseni.

Zjistil jsem, ze sice ohlasi chybu, ale vyprodukuje soubor a pnmtojpeg he prevede na jpeg. V souboru je chyba videt, posledni radek obrazku neni dokonceny, ale obecne to nevadi. 297 bodu uz je za koncem A4, takze obsah je zachovany cely.

Script ScannerStorage.php jsem musel upravit. Pridat do nej zdroj flatbed a vykomentovat kontrolu navratoveho stavu. Viz, ze chybu ohlasi vzdy a presto chci vysledek ulozit.

S timto hackem to uz funguje dobre.

Jeste jsem zapomnel popsat usecase:
- scanovani z pocitace, kde neni nainstalovany scanner
- scanovani z pocitace, ktery je pres vpn pripojen ven a nevidi tedy domaci sit (nextcloud je pristupny zvenku)


upravena sekce ScannerStorage.php
Kód: [Vybrat]
<------>public function scanFile($name, $mode = 0, $resolution = 300) {                                                                                                              <------><------>if ($this->storage->nodeExists($name)) {                                                                                                                             <------><------><------>// TODO: This can happen because we don't refresh the file listing                                                                                           <------><------><------>throw new StorageException($this->trans->t('File already exists'));
<------><------>}
<------><------>$file = $this->storage->newFile($name);
<------><------>// TODO: There's probably a way to stream this without the tempfile
<------><------>exec(
<------><------><------>"sudo scanimage --mode {$this->modes[$mode]} --source flatbed --resolution {$resolution} -x 215 -y 297| pnmtojpeg > /tmp/img",
<------><------><------>$output,
<------><------><------>$status
<------><------>);
#<-----><------>if ($status) {
#<-----><------><------>throw new StorageException($this->trans->t('Something went wrong while attempting to scan'));
#<-----><------>}
<------><------>$data = file_get_contents('/tmp/img');
<------><------>$file->putContent($data);
<------><------>return $this->trans->t('Success');
<------>}