tiff2fax.sh.in
上传用户:weiyuanprp
上传日期:2020-05-20
资源大小:1169k
文件大小:6k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1. #! @SCRIPT_SH@
  2. # $Id: tiff2fax.sh.in,v 1.9 2008/01/11 20:12:59 faxguy Exp $
  3. #
  4. # HylaFAX Facsimile Software
  5. #
  6. # Copyright (c) 1990-1996 Sam Leffler
  7. # Copyright (c) 1991-1996 Silicon Graphics, Inc.
  8. # HylaFAX is a trademark of Silicon Graphics
  9. # Permission to use, copy, modify, distribute, and sell this software and 
  10. # its documentation for any purpose is hereby granted without fee, provided
  11. # that (i) the above copyright notices and this permission notice appear in
  12. # all copies of the software and related documentation, and (ii) the names of
  13. # Sam Leffler and Silicon Graphics may not be used in any advertising or
  14. # publicity relating to the software without the specific, prior written
  15. # permission of Sam Leffler and Silicon Graphics.
  16. # THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
  17. # EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
  18. # WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
  19. # IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  20. # ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  21. # OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  22. # WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
  23. # LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
  24. # OF THIS SOFTWARE.
  25. #
  26. #
  27. # Convert TIFF to fax as needed.
  28. #
  29. # tiff2fax [-o output] [-l pagelength] [-w pagewidth]
  30. # [-r resolution] [-m maxpages] [-1] [-2] [-3] file ...
  31. #
  32. # NB: This script uses the tiffcp program from the TIFF
  33. #     software distribution to do certain format conversions.
  34. #     The TIFF distribution is available by ftp at
  35. #     ftp://ftp.sgi.com/graphics/tiff/; be sure to get
  36. #     v3.4beta016 or later.
  37. #
  38. test -f etc/setup.cache || {
  39.     SPOOL=`pwd`
  40.     cat<<EOF
  41. FATAL ERROR: $SPOOL/etc/setup.cache is missing!
  42. The file $SPOOL/etc/setup.cache is not present.  This
  43. probably means the machine has not been setup using the faxsetup(@MANNUM1_8@)
  44. command.  Read the documentation on setting up HylaFAX before you
  45. startup a server system.
  46. EOF
  47.     exit 1
  48. }
  49. . etc/setup.cache
  50. CHECK=$SBIN/tiffcheck # program to check acceptability
  51. PS2FAX=bin/ps2fax # for hard conversions
  52. TIFFCP=$TIFFBIN/tiffcp # part of the TIFF distribution
  53. TIFF2PS=$TIFFBIN/tiff2ps # ditto
  54. TIFFINFO=$TIFFBIN/tiffinfo # ditto
  55. jobid=
  56. simple=no
  57. out=foo.tif # default output filename
  58. df=1d # default output is 1D-encoded
  59. fil=
  60. opt=
  61. while test $# != 0
  62. do case "$1" in
  63.     -i) shift; jobid=$1;;
  64.     -o) shift; out=$1 ;;
  65.     -l) shift; opt="$opt -l $1" ;;
  66.     -w) shift; opt="$opt -w $1" ;;
  67.     -r) shift; opt="$opt -r $1" ;;
  68.     -1) opt="$opt $1"; df="g3:1d" ;;
  69.     -2) opt="$opt $1"; df="g3:2d" ;;
  70.     -3) opt="$opt $1"; df=g4 ;;
  71.     -m) shift;; # NB: not implemented
  72.     -U) opt="$opt $1" ;;
  73.     -S) simple=yes;;
  74.     *) fil="$fil $1" ;;
  75.     esac
  76.     shift
  77. done
  78. test -z "$fil" && {
  79.     echo "$0: No input file specified."
  80.     exit 255
  81. }
  82. if [ "$simple" = "yes" ]; then
  83.     # simple, fast conversion for the benefit of intelligent RTFCC
  84.     $TIFFCP -i -c $df $fil $out
  85.     exit
  86. fi
  87. #
  88. # Apply customizations such as watermarking.   
  89. #
  90. if [ -f etc/FaxModify ]; then
  91.     . etc/FaxModify
  92. fi
  93. #
  94. # tiffcheck looks over a TIFF document and prints out a string
  95. # that describes what's needed (if anything) to make the file
  96. # suitable for transmission with the specified parameters (page
  97. # width, page length, resolution, encoding).  This string may
  98. # be followed by explanatory messages that can be returned to
  99. # the user.  The possible actions are:
  100. #
  101. # OK document is ok
  102. # REJECT something is very wrong (e.g. not valid TIFF)
  103. # REFORMAT data must be re-encoded
  104. # REVRES reformat to change vertical resolution
  105. # RESIZE scale or truncate the pages
  106. # REIMAGE image is not 1-channel bilevel data
  107. #
  108. # Note that these actions may be combined with "+";
  109. # e.g. REFORMAT+RESIZE.  If we cannnot do the necessary work
  110. # to prepare the document then we reject it here.
  111. #
  112. RESULT=`$CHECK $opt $fil 2>/dev/null`
  113. ACTIONS=`echo "$RESULT" | $SED 1q`
  114. case "$ACTIONS" in
  115. OK) # no conversion needed
  116.     #
  117.     # 1) We don't use hard links because it screws up faxqclean
  118.     #    logic that assumes the only hard links are used 
  119.     #    temporarily when document files are being created during
  120.     #    the job submission process.
  121.     # 2) We don't use symbolic links because the links get broken
  122.     #    when the source document is shared between jobs and
  123.     #    faxq removes the source document before all jobs complete.
  124.     #
  125.     # If we ever encounter problems where the client submits corrupt
  126.     # TIFF and we need to clean it up before transmission, then we
  127.     # can simply merge OK with REFORMAT.  For now we use $CP instead
  128.     # of $TIFFCP, however, to provide the client some control.
  129.     #
  130.     $CP -f $fil $out
  131.     exit 0 # successful conversion
  132.     ;;
  133. *REJECT*) # document rejected out of hand
  134.     echo "$RESULT" | $SED 1d
  135.     exit 254 # reject document
  136.     ;;
  137. REFORMAT) # only need format conversion (e.g. g4->g3)
  138.     rowsperstrip="-r 9999 "
  139.     if [ -n "`$TIFFINFO $fil | $GREP 'Compression Scheme: ISO JBIG'`" ]; then
  140. rowsperstrip=""
  141.     fi
  142.     $TIFFCP -i -c $df -f lsb2msb $rowsperstrip$fil $out
  143.     # libtiff 3.5.7 gives exit status 9 when there are unknown tags...
  144.     exitcode=$?
  145.     if [ $exitcode != 0 ] && [ $exitcode != 9 ]; then {
  146. $CAT<<EOF
  147. Unexpected failure converting TIFF document; the command
  148.     $TIFFCP -i -c $df -f lsb2msb $rowsperstrip$fil $out
  149. failed with exit status $?.  This conversion was done because:
  150. EOF
  151. echo "$RESULT" | $SED 1d; exit 254
  152.     }
  153.     fi
  154.     exit 0
  155.     ;;
  156. #
  157. # REVRES|REFORMAT+REVRES adjust vertical resolution (should optimize)
  158. # *RESIZE page size must be adjusted (should optimize)
  159. # *REIMAGE maybe should reject (XXX)
  160. #
  161. *REVRES|*RESIZE|*REIMAGE)
  162.     ($TIFF2PS -a $fil | $PS2FAX -o $out -i "$jobid" $opt) || {
  163. $CAT<<EOF
  164. Unexpected failure converting TIFF document; the command
  165.     $TIFF2PS -a $fil | $PS2FAX $opt
  166. failed with exit status $?.  This conversion was done because
  167. EOF
  168. echo "$RESULT" | $SED 1d; exit 254
  169.     }
  170.     exit 0
  171.     ;;
  172. *) # something went wrong
  173.     echo "Unexpected failure in the TIFF format checker;"
  174.     echo "the output of $CHECK was:"
  175.     echo ""
  176.     echo "$RESULT"
  177.     echo ""
  178.     exit 254 # no formatter
  179.     ;;
  180. esac