Faxy
Obsah
Formáty faxových stránek, komprese
-
Formát g3
Pro posílání faxů je použiván formát g3 (group 3), což
je všeobecně uznávaná norma CCITT pro přenos dat mezi faxy.
Tento formát ale ještě sám o sobě není zcela jednoznačný.
Existují totiž dva druhy g3 souborů.
- S vysokým rozlišením 204x196 dpi a
- S nízkým (normálním) rozlišením 204X98 dpi.
Pokdu se tato dvě rozlišní pomýchají, tak stránky faxu budou
o polovinu kratší nebo 2x delší. Mgetty+sendfax umí zpracovat
oba dva typy. Tento problém může nastat při používání
utilit ze standardního balíku pbm (pbmtog3, g3topbm ...). Místo
nich se doporučuje používat jejich ekvivalenty z balíku Mgetty+Sendfax
(pbm2g3, g32pbm ...).
-
Komprese ve formátu g3
Formát g3 zahrnuje velmi propracovanou kompresi. Je použita
zjednodušená verze Huffmanova kódování MH (Modified Huffman).
Ve faxovém obraze je kódován kažý horizontalní řádek zvlášť.
V řádku nejsou kódovány jednotlivé body, ale seskupení bodů.
Tento druh komprese vede (pří kódování běžného textu) k průměrnému
poměru asi 1:10. V okrajových případech je ale možné dosáhnout
i "negativní" :-) komprese.
-
Rozlišitelné formáty pro faxspool
K odeslání faxu ale není bezpodmínečně nutné mít tento
fax připraven v g3 formátu. Faxované soubory jsou vždy
nejprve předávány spoolovacímu programu (faxspool), který
je schopen rozlišit (podle přípony či jiné magie) následující
formáty (ps, ascii text, dvi, pbm, pgm, ppm, g3, lj, xwd ..)
a tyto konverotvat do žádaného g3 formátu.
Příjem faxů přes mgetty
Probíhá to následovně. Když nám někdo zavolá a
na druhé straně linky je fax, náš faxmodem to
pozná (měl by to poznat) a "poví" :-) to programu
mgetty, který poslouchá na na modemové lince.
Ten zabezpečí, aby se daná faxová data přijala,
zkontolovala a po stranách uložila na určené
místo (defaultně adresář FAX_SPOOL_IN)
v podobě unixových souborů. Potom mgetty
spustí předem určený program (defaultně
/usr/local/bin/new_fax) který zabezpečí další
zpracování (tisk, založení) přijatého faxu.
Vše je konfigurovatelné před samotnou kompilací
v souboru "policy.h".
Se samotným rozpoznáním faxového volání mohou
nastat potíže. Aby byl modem schopen rozpoznat
faxová volání od datových, musí mít vypnutý
"autoanswer" (ATS0=0). Pokud ani tehdy není modem
schopen tato volání rozlišit, nezbývá než ho natvrdo
přepnout do příslušného módu. K tomuto účelu slouží
parametr modem-type.
Tisk/prohlížení faxových stránek
-
Tisk faxů
Vše je opět konfigurovatelné v souboru policy.h před
samotnou kompilaci mgetty. Je tu možno nastavit
adresář, kam se budou příchozí faxy ukládat a obslužný
program, kterému budou příchozí faxy předány. Chceme
li například tisknout faxy na HP LJ, můžeme použít
programu g3tolj nebo program g3toxwd, který příchozí
fax (ve formátu g3) převede na X-Windowsovskou bitmapu
(formát xwd). Výše uvedené programy nalezneme v adresáří
contrib/
-
Prohlížení faxů
K prohlížení faxů bych doporučil program viewfax, který
"má být" hodně rychlý, umožňující zoom in-out, rotaci ...
Tento program by se měl vyskytovat v adresáři mgetty/frontends/X11
Generování stránek
K tomuto účelu slouží celá řada utilitek dodávaných buď v balíku
nebo vzniklých při kompilaci. Jako ukázku bych uvedl jednoduchý
příklad vygenerování a odeslání faxu.
pbmtext -font\
/usr/local/lib/mgetty+sendfax/cour25.pbm \
>/tmp/fax.pbm
Na stdandardní vstup napíšeme nějaký text, ukončný CTRL-D. pbmtext
vygeneruje soubor /tmp/fax.pbm (možno prohlédnout pomocí xv). Tento
zkonvertujeme na g3 soubor následovně:
pbm2g3 /tmp/fax.pbm > /tmp/fax.g3
a soubor připravím k odeslání:
faxspool -F -f \
/tmp/fax.g3
Dále bych ještě zmínil utilitu g3cat, sloužící ke
konkatenaci g3 souborů.
Generování stránek lokálně
... tedy fyzické generování stránek a jejich následné odeslání
na modem. K tomuto účelu se v balíku
Mgetty+Sendfax používá právě program sendfax. Démon
faxrunqd, který má na starosti obsluhu spoolu předává
JOBy ze spoolu také právě Sendfaxu (s parametry nastavenými v
konfiguračním souboru sendfax.config. Sendfax lze použít také
samostantně:
sendfax [-p] [-x] [-v] [-l]\
[-m] [-d] [-C] [-S] [-n]\
[-r] [-D] phone-number [g3file(s)]
-x : úroveň logování 1-5 (pokud něco nefunguje, doporučuji 5)
-n : odeslat fax v "normálním" módu (204x98 dpi). Defaultně se
používá
"fine" mód (204x196 dpi)
-r : sendfax přídá k úspěšně odeslánému g3 souboru příponu
.done
Faxy ze stanic pod Windows
Za tímto účelém je vhodné použít SAMBU, v níž
vytvoříme tiskárnu na níž mohou tisknout všechny
programy. Po odeslání stránek na sambovou tiskárnu
je samba předá příslušnému konverznímu programu a pak
se vše příkazem faxspool naspooluje a připraví k odeslání.
Poté se uživateli prostřednictvím winpopu pošle zpráva,
že fax byl umístěn do spoolu. Problém nastává s předáním
telefoního čísla příjemce programu faxspool. Jsou dvě možnosti
jak číslo předat.
-
Zakomponovat číslo v textu aby bylo neviditelné (MS WORD)
a pak v konverzním programu toto číslo vyextrahovat
-
Použijeme spec. program respond, který běží na pracovní
stanici a který si na příkaz konverzního programu vyžádá
jméno a tel. číslo příjemce, jež doplní do volání faxspool.
O faxy ve spoolu se potom stará faxrunqd, který je odtud
vyzvedává a předává programu sendfax, který je fyzicky odešle.
Konfigurační soubory
Konfigurační soubory naleznete po instalaci v adresáři:
/usr/local/etc/mgetty+sendfax
- pokud jste kompilovali sami
/etc/mgetty+sendfax
- pokud jste instalovali z rpm
-
mgetty.config Pokud jsme balík kompilovali sami,
tak v mgetty.config jsou uloženy hodnoty námi zadané před
kompilací v souboru policy.h
-
sendfax.config: Konfigurační soubor pro sendfax
-
faxrunq.config: Konfigurační soubor pro démona faxrunqd.
-
fax.allow, fax.deny
Pokud neexistuje ani jeden z těchto souborů, může faxy posílat pouze
root. Pokud existuje jen fax.deny, tak mohou všichni, kromě těch, kteří
jsou v tomto souboru vyjmenovaní a pokud existuje pouze fax.allow, nemůže
nikdo, kromě vyjmenovaných uživatelů.
Linky