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

传真(Fax)编程

开发平台:

C/C++

  1. #! @SCRIPT_SH@
  2. # $Id: pcl2fax.sh.in,v 1.7 2008/07/03 20:22:31 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 PCL to facsimile.
  28. #
  29. # pcl2fax [-o output] [-l pagelength] [-w pagewidth]
  30. # [-r resolution] [-m maxpages] [-*] files ...
  31. #
  32. # NB: this shell script is assumed to be run from the
  33. #     top of the spooling hierarchy -- s.t. the etc directory
  34. #     is present.
  35. #
  36. test -f etc/setup.cache || {
  37.     SPOOL=`pwd`
  38.     cat<<EOF
  39. FATAL ERROR: $SPOOL/etc/setup.cache is missing!
  40. The file $SPOOL/etc/setup.cache is not present.  This
  41. probably means the machine has not been setup using the faxsetup(@MANNUM1_8@)
  42. command.  Read the documentation on setting up HylaFAX before you
  43. startup a server system.
  44. EOF
  45.     exit 1
  46. }
  47. . etc/setup.cache
  48. if [ ! -x "$PCL6CMD" ]; then
  49.     echo "PCL documents are not (currently) supported."
  50.     exit 254 # causes document to be rejected
  51. fi
  52. out=pcl.fax # default output filename
  53. pagewidth=1728 # standard fax width (pixels)
  54. pagelength=297 # default to A4 (mm)
  55. vres=98 # default to low res
  56. device=tiffg3 # default to 1D
  57. unlimitedlength=no # default to fixed length-pages
  58. jobid=
  59. out=pcl.fax # default output filename
  60. files=
  61. opt=
  62. while test $# != 0
  63. do case "$1" in
  64.     -i) shift; jobid=$1; opt="$opt -i $1" ;;
  65.     -o) shift; out=$1 ;;
  66.     -w) shift; pagewidth="$1" ;;
  67.     -l) shift; pagelength="$1" ;;
  68.     -r) shift; vres="$1" ;;
  69.     -m) shift;; # NB: not implemented
  70.     -U) unlimitedlength=yes ;;
  71.     -1) device=tiffg3 ;;
  72.     -2) ($PCL -h | grep tiffg32d >/dev/null 2>&1) 
  73.             && { device=tiffg32d; } 
  74.             || { device=tiffg3; }
  75.         ;;
  76.     -3) ($PCL -h | grep tiffg4 >/dev/null 2>&1) 
  77.             && { device=tiffg4; } 
  78.             || { device=tiffg3; }
  79.         ;;
  80.     -*) ;;
  81.     *)  files="$files $1" ;;
  82.     esac
  83.     shift
  84. done
  85. test -z "$files" && {
  86.     echo "$0: No input file specified."
  87.     exit 255
  88. }
  89. pagelength=${pagelength%%.*}
  90. test "$pagewidth" = "1734" && pagewidth=1728
  91. case "${pagewidth}x${pagelength}" in
  92. 1728x280|1728x279|2592x280|2592x279|3456x280|3456x279)  # 279.4mm is actually correct...
  93.     paper=letter;;
  94. 1728x364|2592x364|3456x364) 
  95.     paper=legal;;
  96. *x296|*x297)                    # more roundoff problems...
  97.     paper=a4;;
  98. *x364)
  99.     paper=b4;;
  100. 2432x*|3648x*|4864x*)
  101.     paper=a3;;
  102. *)
  103.     echo "$0: Unsupported page size: $pagewidth x $pagelength";
  104.     exit 254;;                  # causes document to be rejected
  105. esac
  106. #
  107. # The image must end up with a pixel width according to T.32 Table 21.
  108. # Ghostscript contains code to fixate a4 and letter to 1728 pixels
  109. # when using 196-204 dpi and tiffg3/4, it supposedly does the same for
  110. # B4 but not for A3, thus the floats are needed (for A3's benefit).
  111. #
  112. # See ghostscript/doc/Devices.htm under -dAdjustWidth=1 (default).
  113. # Use -dAdjustWidth=0 to disable.  With the right patch,
  114. # http://bugs.ghostscript.com/show_bug.cgi?id=688064
  115. # AdjustWidth can be made to specify the pagewidth directly and
  116. # replace -dFIXEDMEDIA to permit TIFFs to be produced with
  117. # varied lengths.
  118. #
  119. case "$paper" in
  120.     a4)
  121.         case "$pagewidth" in
  122.             2592) hres=313.65;;         # VR_300X300
  123.             3456) hres=418.20;;         # VR_R16
  124.             *) hres=209.10;;            # everything else, 1728 pixels
  125.         esac;;
  126.     b4)
  127.         case "$pagewidth" in
  128.             3072) hres=311.97;;         # VR_300X300
  129.             4096) hres=415.95;;         # VR_R16
  130.             *) hres=207.98;;            # everything else, 2048 pixels
  131.         esac;;
  132.     a3)
  133.         case "$pagewidth" in
  134.             3648) hres=311.94;;         # VR_300X300
  135.             4864) hres=415.93;;         # VR_R16
  136.             *) hres=207.96;;            # everything else, 2432 pixels
  137.         esac;;
  138.     *)                                  # letter, legal
  139.         case "$pagewidth" in
  140.             2592) hres=304.94;;         # VR_300X300
  141.             3456) hres=406.59;;         # VR_R16
  142.             *) hres=203.29;;            # everything else, 1728 pixels
  143.         esac;;
  144. esac
  145. #
  146. # The sed work fixes bug in Windows-generated
  147. # PostScript that causes certain international
  148. # character marks to be placed incorrectly.
  149. #
  150. #    | $SED -e 's/yAscent Ascent def/yAscent 0 def/g' 
  151. #
  152. # NB: unfortunately it appears to break valid PostScript;
  153. #     so it's been disabled.
  154. #
  155. # Suggestion from "Alan Sparks" <asparks@nss.harris.com>,
  156. # Add the -DFIXEDMEDIA argument to the last command in pcl2fax.
  157. # This prevents page sizing within the documents from altering
  158. # the command-line page size specification.  This prevents
  159. # TIFFs to be made with pages of varied lengths, however.
  160. # See the comments on AdjustWidth above.
  161. #
  162. FIXEDWIDTH="-dFIXEDMEDIA"
  163. #
  164. # Apply customizations such as watermarking.   
  165. #
  166. if [ -f etc/FaxModify ]; then
  167.     . etc/FaxModify
  168. fi
  169. if [ ! "$PCLFONTSOURCE" -a -n "$FONTPATH" ] ; then 
  170.     PCLFONTSOURCE=$FONTPATH
  171. fi
  172. if [ -n "$PCLFONTSOURCE" ] ; then
  173.     export PCLFONTSOURCE
  174. fi
  175. $CAT $files | $PCL6CMD 
  176.     -sDEVICE=$device 
  177.     -dNOPAUSE 
  178.     -dSAFER=true 
  179.     -sPAPERSIZE=$paper 
  180.     $FIXEDWIDTH 
  181.     -r$hresx$vres 
  182.     "-sOutputFile=$out" 
  183.     -
  184. exit 0