Faxy

Vít Hotárek, xhotarek@fi.muni.cz


Obsah


Úvod

V současné době existují 4 skupiny faxů, které rozdělujeme podle jimi podporovaného standardu kodování přenášeného obrazu GROUP. Nejstarší Group 1 byly někdy v 70-tých letech nahrazeny Group 2. Dnes už se většinou používají jen Group 3. Existují i Group 4, které jsou určeny pro digitální ISDN linky.

Pro řízení komunikace mezi počítačem a faxem (faxmodemem) byly definovány protokoly (příkazové sady) typově označené jako CLASS, a to Class 1, Class 2 a Class 2.0. Hlavní rozdíl spočívá v tom, nakolik je samotné kódování a dekódování faxového obrazu prováděno programem či samotným modemem.

Před samotným faxováním si ověřte, zda je váš modem i faxmodem:

hyla% cu -l ttyf2
Connected
at+fclass=?
0,1,2
OK
~[hyla].
Disconnected
Příkaz at+fclass=? se zeptá, které příkazové sady modem podporuje. Class 1, 2 a 2.0 jsou pro faxování.

Formáty faxových stránek

Existují 2 typy G3 souborů, které jsou definovány standardem ITU T.4:

Šířka faxové stránky je většinou 1728 pixelů, délka je libovolná (někdy může být omezena na délku A4ky). Celá stránka A4 má pak typicky délku okolo 2100 pixelů ve vysokém rozlišení.


Komprese

Standardními metodami komprese jsou MNP 5 a V.42bis. MNP 5 je kompresní algoritmus, který dokáže data stlačit v poměru až 2:1, nevýhodou však je, že při kompresi již pakovaných dat dochází k jejich prodloužení. V.42biz je rozšíření opravného protokolu V.42 a dokáže data zhustit až v poměru 4:1, přičemž umožňuje vypnout kompresi v případě, že data již nelze dále pakovat.

Generování stránek

Samotné G3 soubory je možné vygenerovat několika způsoby. Můžete využít programu pbm2g3 z balíku 'mgetty+sendfax' nebo použít GhostScript či program hp2hig3 z balíku 'hp2pbm', který převádí tiskové soubory HP Laserjet.

Příklad použití GhostScriptu: gs -sDEVICE=ovladač -sOutputFile=fax.g3.%d vas_postscript.ps, kde ovladač je buď 'dfaxlow' nebo 'dfaxhigh'.

Nebo můžete převést prosté ASCII soubory do PostScriptu použitím psify taktéž z GhostScript distribuce a ty pak výše uvedeným opět převést do formátu G3.

Použití pbm2g3: cat soubor | pbmtext > soubor.pbm; pbm2g3 soubor.pbm > soubor.g3


Příjem faxů přes mgetty

Příjem faxů probíhá tak, že mgetty naslouchá na modemové lince a případě, že příchozí volání je fax, přijme jej a dále zpracovává a následně ukládá do adresáře fax_spool_in (obvykle /var/spool/fax/incoming) , který je definován v mgetty.config v adresáři /etc/mgetty+sendfax/. Po přijetí je možné také zaslat mail (direktiva notify).

Některé další direktivy mgetty.config:

fax-id - telefonní číslo faxu

fax-owner - vlastník faxu

fax-group - skupina vlastníků faxu

port-mode - nastavení práv zařízení

diskspace - nastavení velikosti místa určeného pro příjem faxů (default 1MB)

fax-only yes|no - modem může sloužit jen pro faxová spojení


Tisk a prohlížení faxových stránek

Příchozí faxy je možné si vytisknout pomocí několika prográmků. Nejčastějším postupem je převést si G3 soubory do pbm formátu a ten pak do PostScriptu, který vytiskneme:

cat faxsoubor.g3 | g32pbm -d <DPI> | pbmtops | lp

Speciálně pro HP LaserJet tiskárny existuje příkaz g3tolj nebo přidáte volbu g32pbm -l pro vytvoření LaserJet souborů.

Chceme-li např. spojit více G3 souborů dohromady, můžeme použít g3cat.

Prohlížet faxy pod Xwindow si lze například:

viewfax -v faxsoubor.g3

cat faxsoubor.g3 | g32pbm >fax.pbm ; xloadimage fax.pbm

g32pbm faxsoubor.g3 | xv -

- nebo převést G3 soubor do PostScriptu a zobrazit jej v GhostView


Generování faxů lokálně

Tímto chápeme samotné vytváření stránek pro fax, které se následné odesílají. Pro tyto účely je zde příkaz sendfax, který je přítomen v obou nejpoužívanějších programech pro faxování - zmínil jsem mgetty-sendfax a druhém, propracovanějším - HylaFAXu.

Konfigurační soubor sendfaxu pro mgetty-sendfax se nalézá v /etc/mgetty+sendfax/sendfax.config

V obou systémech je automatické odesílání faxů založeno na spoolingu. V mgetty-sendfax to má na starosti démon faxrunqd, který kontroluje frontu faxů (/var/spool/fax/outgoing) vytvořenou programem faxspool. Pro kontrolu a správu fronty je zde program faxq a faxrm.


HylaFAX

V HylaFAXu je to obdobně, kde běží server hfaxd (buď jako standalone nebo přes inetd). Jedním z konfiguračních souborů je /etc/hosts.hfaxd, který definuje přístupová práva. Pro konfiguraci modemu jsou v /etc soubory config.devid, kde devid je jméno zařízení, na kterém se modem nachází (ttym2 pro /dev/ttym2). Nicméně asi raději použijete program faxsetup, který slouží ke globálnímu nastavení celého systému. Odtud je také volán skript faxaddmodem pro instalaci a konfiguraci modemu. Stav serveru zjistíme příkazem faxstat.


Faxy ze stanic pod Windows

Jsou 2 způsoby jak z Windows faxovat. První a zřejmě o trošku složitější je použití Samby a síťové tiskárny. K tomu je zapotřebí mít na unixovém stroji běžící HylaFAX server, funkční Sambu a vytvořenou síťovou tiskárnu.

Příklad definice ze souboru smb.conf:

; for use with printfax.pl V1.3
;
[fax]
   comment       = Fax
   postscript    = yes
   print command = ( /usr/bin/printfax.pl %I %s\
                     %U %m; rm %s ) &
   printable     = yes
   writable      = no
   path          = /your/samba/print/dir

Dále je potřeba vědět, kam se má fax poslat. Může se to provést tak, že se do textu faxu zakomponuje řádek typu Fax-Nr : 012-345-6789 a následně na serveru vhodným filtrem vyseparuje. Problémy s tímto mohou vyvstat v situaci, kdy chcete poslat třeba obrázek, do kterého je obtížné číslo schovat. Řešit se to dá pomocí programů respond+printfax (http://www.boerde.de/~horstf/) tak, že kdykoliv klient něco odešle na síťovou tiskárnu, chopí se práce program printfax (viz ukázka ze smb.conf) a otevře spojení na respond spouštěným ve Windows, který se nás dotáže na informace potřebné k odeslání faxu. Tyto se pak předají na vstup programu faxspool.

Po odeslání faxu a nebo při chybě se klientovi např. pošle mail nebo zpráva přes winpopup.

Druhou alternativou jsou klienti napsaní pro Windows, kteří komunikují s HylaFax serverem svým vlastním definovaným protokolem na svém portu. Namátkou jmenujme WHFC, RelayFax, Cypheus, w2hfax...


Odkazy na dokumentaci

mgetty+sendfax
HylaFAX
Článek o modemech/faxech
Stručné rozdělení faxových přístrojů
Článek o faxech z Linuxových novin