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

传真(Fax)编程

开发平台:

C/C++

  1. #! @SCRIPT_SH@
  2. # $Id: tiff2pdf.sh.in,v 1.2 2006/12/19 18:07:09 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. #  01/03/2004  Frank Brock
  27. #
  28. # Convert TIFF to pdf as needed.
  29. #  the tiff2pdf that is part of ghostscript seems to choke on many tiffs 
  30. #  without a bunch of help.  So, I extracted most of the code here from
  31. #  faxrcvd and dropped it into a script.  So, that section of faxrcvd 
  32. #  could eventually be simplified by also using this script.
  33. #
  34. # tiff2pdf [-o output] file ...
  35. #
  36. # NB: This script converts tiff files to pdf files instead of
  37. #     using the ghostscript tiff2pdf which seems to blow up man times
  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(8C)
  44. command.  Read the documentation on setting up HylaFAX before you
  45. startup a server system.
  46. EOF
  47.     exit 1
  48. }
  49. # These settings may not be present in setup.cache if user upgraded and
  50. # didn't re-run faxsetup; we set them before calling setup.cache for
  51. # backward compatibility.
  52. ENCODING=base64
  53. MIMENCODE=mimencode
  54. TTYCMD=tty
  55. . etc/setup.cache
  56. TIFFINFO=tiffinfo
  57. TIFF2PS=$TIFFBIN/tiff2ps
  58. PS2PDF=ps2pdf
  59. if $TTYCMD >/dev/null 2>&1; then
  60.     ERRORSTO=`$TTYCMD`
  61. else
  62.     ERRORSTO=/dev/null
  63. fi
  64. tmpps=tmp/foo$$.ps
  65. out=tmp/foo.pdf # default output filename
  66. FILE=
  67. opt=
  68. while test $# != 0
  69. do case "$1" in
  70.     -o) shift; out=$1 ;;
  71.     *) FILE="$FILE $1" ;;
  72.     esac
  73.     shift
  74. done
  75. test -z "$FILE" && {
  76.     echo "$0: No input file specified."
  77.     exit 255
  78. }
  79. GW=`$TIFFINFO $FILE 2>$ERRORSTO | $GREP "Image Width" | 
  80.     $SED 's/.*Image Width: ([0-9]*).*/1/g' | sort -n | $SED -n '$p'`
  81. GL=`$TIFFINFO $FILE 2>$ERRORSTO | $GREP "Image Length" | 
  82.     $SED 's/.*Image Length: ([0-9]*).*/1/g' | sort -n | $SED -n '$p'`
  83. RES=`$TIFFINFO $FILE 2>$ERRORSTO | $AWK 'BEGIN {rw0=rl0=0;}
  84. /Resolution:/ { rw=$2; rl=$3; unit=$4;
  85.    if(unit ~ /cm/) { rw *= 2.54; rl *= 2.54; }
  86.    if(rw > rw0) { rw0=rw;}
  87.    if(rl > rl0) { rl0=rl;}}
  88. END { printf "%dx%d", rw0+0.5, rl+0.5;}' 2>$ERRORSTO`
  89. $TIFF2PS -a -O $tmpps $FILE > $ERRORSTO 2>&1     # fax2ps output looks bad
  90. $PS2PDF -g$GWx$GL -r$RES $tmpps $out > $ERRORSTO 2>&1
  91. $RM -f $tmpps 2>$ERRORSTO