home *** CD-ROM | disk | FTP | other *** search
- From: mh@roger.imsd.contel.com (Mike Hoegeman)
- Newsgroups: alt.sources,comp.windows.news,comp.editors,comp.windows.open-look
- Subject: elvis (vi clone) .doc to postscript filter
- Message-ID: <1991Jan18.232508.9465@wlbr.imsd.contel.com>
- Date: 18 Jan 91 23:25:08 GMT
-
- this script "ftops", converts elvis .doc files to
- postscript. Here is an example
-
- refont -f *.doc | ftops > elvisDoc.ps
-
- refont comes with the elvis package. ftops conforms enough to
- structured postscript to make it usable with the X11/NeWS pageview
- postscript previewer. just snip at cut here line and chmod +x the thing
-
- --------------------------------CUT HERE------------------------------
- #!/bin/sh
- if [ X$1 != X ]; then
- 2>&1 cat <<\EOF
-
- ftops is a simple filter, it reads from stdin and writes to stdout
-
- it is used for converting files with \f<fontstyle> type font change
- escapes to postscript. it is a quick hack to convert elvis .doc
- files to postscript
-
- e.g. usage;
-
- refont -f *.doc | ftops > elvisDoc.ps
-
- EOF
- exit 1
- fi
-
-
- translate () {
- sed \
- -e 's,(,\\\(,g' \
- -e 's,),\\\),g' \
- -e 's,\\fB,) p B setfont (,g' \
- -e 's,\\fI,) p I setfont (,g' \
- -e 's,\\fR,) p R setfont (,g' \
- -e 's,\\fU,) p U setfont (,g' \
- -e 's,^,(,' \
- -e 's,$,) ShoW_LinE,'
- }
-
- cat <<\PS_PROLOG
- %!
- %%Pages: (atend)
- %%DocumentFonts Courier Courier-Oblique Courier-BoldOblique
- %%Title: ftops shell script output
- %%Creator: ftops
- %%EndComments
-
- /inch { 72 mul } bind def
- /getfont { exch findfont exch scalefont } bind def
-
- /SheetWidth 8.5 inch def
- /SheetHeight 11 inch def
- /LeftMargin 20 def
- /TopMargin 20 def
-
- /bodyfontsize 12 def
- /bodyfont /Courier bodyfontsize getfont def
- /R bodyfont def
- /B /Courier-Bold bodyfontsize getfont def
- /I /Courier-Oblique bodyfontsize getfont def
- /U /Courier-BoldOblique bodyfontsize getfont def
-
- /startpage
- {
- LeftMargin SheetHeight TopMargin sub moveto
- R setfont
- } def
-
- /endpage { showpage } def
-
- % Function s: print a source line
- /s {
- gsave show grestore
- currentpoint
- exch pop LeftMargin exch bodyfontsize sub
- moveto
- } def
-
- /p { show } def
- /ShoW_LinE { s } def
-
- %%EndProlog
- PS_PROLOG
-
- translate | awk 'BEGIN {
- lines=0
- maxlines=66
- pages=1
- }
-
- { #MAIN
- if ($NF~/ShoW_LinE/) {
- ++lines
- }
- if (lines==1) {
- printf("%%%%Page: %d %d\n", pages, pages)
- printf("startpage\n")
- }
- print
- if (lines == maxlines) {
- ++pages
- printf("endpage\n")
- lines=0
- }
- }
-
- END {
- printf("%%%%Trailer\n")
- printf("%%%%Pages: %d\n", pages)
- } ' -
-
- exit 0
-