📄 00000002.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: wxb1 (ben), 信区: Linux <BR>标 题: [3/8] 在Linux上使用中文传真 <BR>发信站: BBS 水木清华站 (Fri Jun 11 14:14:41 1999) <BR> <BR> <BR>以Linux实作 语音/传真/EMAIL/BBC 整合系统 <BR>3.在Linux上使用中文传真 <BR> <BR>在Linux上使用广范,颇为普遍的传真软体,应该就是EFAX这套软体了,若您安 <BR>装的是RedHat Linux时,可直接由选单上选取它,而不用再额外上网下载了! <BR>EFAX除了安装容易、易於使用外,且提供转档工具 EFIX,可以作 TEXT、TIFFG3 <BR>、TIFFRAW、PBM、PGM、PS、PCL、FAX 等格式之间的转换,对讯息的交互使用, <BR>即为便利;例如您可将WWW的输入、EMAIL信件等,经过处理後,抓取其中的文字 <BR>部份,透过 EFIX转成TIFFG3的格式(EFAX使用的格式),再由EFAX传真出去, <BR>很自然的就成为一个 WWW/EMAIL 至FAX的管道,关键性的指令仅有两行: <BR> <BR>efix -i text -o tiffg3 < MyText.txt > FaxOut.G3 <BR>efax -d /dev/ttyS0 -t "xxxxxxxx" FaxOut.G3 <BR> <BR>第一行是利用EFIX将纯文字档 MyText.txt 转成 TIFFG3 格式的档案 FaxOut.G3 <BR>,接者将此档案透过EFAX,利用连接於ttyS0 (COM1)的FAX数据机,拨通对方传 <BR>真机电话"xxxxxxxx",即可传真出去。 <BR> <BR>EFAX的中文化问题 <BR> <BR> 由於EFAX并非国人发展的软体,并不支援双位元的中文字,虽然传真的 <BR>收发皆是使用图档格式(EFAX用TIFFG3),并无影响;但当您用EFIX要将纯文字 <BR>档转为图形或FAX的格式时,所有的中文字,因无中文字型的缘故,皆无法正确 <BR>转换,在做讯息整合时就显得力不从心了!还好Linux的诸多先进,在Linux的中 <BR>文问题上,已投入了不少心血,也提供了许多解决方案,并提供原始程式码,供 <BR>人研究使用,因此可以将EFIX稍做改写,在格式转换时加入双位元字码的判别, <BR>并将中文字型加入,即可解决此一问题!以下即为部分修改过的efaxlib.h、 <BR>efaxlib.c(仅需改这一组档案即可),内中原始码,大部分来自「王佑中」先 <BR>生 CHDRV 的程式码,同时您也需先安装CHDRV或是将国乔字型档kcchin16.f00 <BR>放在 /usr/local/lib/chinese目录下才可顺利转换! <BR> <BR>在efaxlib.h的结尾加入以下的宣告: <BR> <BR>/* Add by hybj for chinese font */ <BR>int tran_code(int b1, int b2); <BR>int FileOffset(int code, int *start); <BR>int FileOpen(int offset, int len, u_char* chfont); <BR> <BR>其中tran_code是判断双位元(b1是高位元组,b2是低位元组)是否是合理的BIG5 <BR>码,若不是的话,return 16进位的FFFF,不然 return 该BIG5码在字型中的排序 <BR>码,再透过FileOffset算出其在字型档中的起始位置,并由FileOpen抓取该字一 <BR>连串的字型资料,以下是efaxlib.c此三副程式的原始码: <BR> <BR>/* Add by hybj for chinese font May/3/98 */ <BR>int tran_code(int b1,int b2) <BR>{ <BR> int code; <BR> <BR> if (b2 < 0x40) <BR> return 0xffff; <BR> else if (b2 <0x7f) <BR> code = b2 - 0x40; <BR> else if (b2 < 0xa1) <BR> return 0xffff; <BR> else if (b2 < 0xff) <BR> code = b2 - 0xa1 + 0x3f; <BR> <BR> if (b1 < 0x81) <BR> return 0xffff; <BR> else if (b1 <= 0x8d) <BR> code += 0xeeb8 - 0x8001 + (b1 - 0x81)*157; <BR> else if (b1 <= 0xa0) <BR> code += 0xe311 - 0x8001 + (b1 - 0x8e)*157; <BR> else if (b1 <= 0xa3) <BR> code += 0x8400 - 0x8001 + (b1 - 0xa1)*157; <BR> else if (b1 < 0xc6) <BR> code += 0x8800 - 0x8001 + (b1 - 0xa4)*157; <BR> else if (b1 == 0xc6) <BR> { <BR> if (b2 < 0x7f) <BR> code += 0x8800 - 0x8001 + (b1 - 0xa4)*157; <BR> else <BR> code = 0x8001 - 0x8001 + (b2 -0xa1); <BR> } <BR> else if (b1 <= 0xc8) <BR> code += 0x803f - 0x8001 + (b1 - 0xc7)*157; <BR> else if (b1 <= 0xf9) <BR> code += 0x9d19 - 0x8001 + (b1 -0xc9)*157; <BR> else if (b1 <= 0xfe) <BR> code += 0xe000 -0x8001 + (b1 - 0xfa)*157; <BR> else <BR> return 0xffff; <BR> <BR> return code; <BR>} <BR> <BR>int FileOff <BR># *新加入此段的结尾* <BR> <BR> esac <BR> <BR># Hang-up. <BR>hang_up <BR> <BR> <BR>结语 <BR> <BR> 以上的讨论为在Linux上,使用EFAX软体传真的一些作法及范例,结合 <BR>上篇讨论的语音录放,即可成为一双向留言及传真的伺服器,下一篇将试著探讨 <BR>结合语音、传真、EMAIL,做讯息的交换与整合! <BR> <BR>撰文:朱先宇 1998/12/15 <BR>EMAIL: <A HREF="mailto:hybj@ms1.hinet.net">hybj@ms1.hinet.net</A> <BR> <BR> <BR>-- <BR>just a test <BR> <BR>※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.116.130.100] <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -