ipxrtf
ipxrtf
Takes RTF files and strips all markup etc except styles.
It can be run as a spooler against a queue where the input files are deleted
after use or moved to a done queue. Or it can be run once against a single file
which is NOT deleted or moved for where operation in a script is required.
A parameter file is used to determine where the files should be sent and other
parameters. This file is in tables/setup and default to XRTF.
Keywords for XRTF parameter file are :
; comment line
dest: One or more FIP destinations as per the USERS file
The default is 'xrtf'
script: Script to run on the new file before sending to the output q
The first parameter will be the outputfile containing the correct data using
a TMP filename. The second is the name requested. default: none
chrset: Name of the Source Character Set. default: ascii
source: Name of the Source of this data default: XRTF
noarchive: Do NOT archive the data in IPWHEEL default: do
filename: FipSeq for a replacement filename for the output file
default: as input
nohdr: Flag for no Fip Header on the output file. default: allow hdr
extra: Extra Fip Header information to be added default: none
preserve-fiphdr: Keep any FipHdr from the raw file - if there is any. default:
strip it
nodata: Flag to ask for NO output file at all default: allow data
If a script is flagged, a file is created for the script
and is then zapped.
before: String of FipSeq to stuff at start of the file. default: none
after: String of FipSeq to stuff at end of the file. default: none
noblanklines: Strip all extra blank lines. default: leave in
noleadspaces: Strip all leading spaces on lines. default: leave in
strip-top-spaces: Strip all spaces - Tabs, Newlines default: leave
etc from the top of the data
fontbefore: String Before a font change default: fonts ignored
fontafter: String After a font change default: fonts ignored
par: String to replace the RTF \par default: new line
eol: CR or NL for carriage return or New Line default: new line
hardreturn: yes/no Should a \(eol) be a SPC or EoLinei? default: space
supercede: For single files, supercede any existing output file. def:preserve
multiple-file-marker: or
interfile: Separator for between files default: \n(next file)\n
This string is used to split multiple {rtf1 .. } { rtf1 ..} files.
alldata: Normally ONLY data within the {\rtf1.. is included. def: no
Use this flag to state that any preceeding or trailing data is to be kept.
escape-hex: y/n escape and RTF hex chr with a '\' default: no
CHANGE - pre ver 05k this was default: yes.
chr:(chr in FipSeq):(FipSeq string)
Replace this character with the string
This can be a printable chr or an escaped number. The number is octal/dec/hex
depending on the preceding 'number' keyword (if any).
eg chr:\313:£ chr:<:<
Note that the ';' is part of the string and NOT a comment as it does NOT
start the line.
style: All extra text before and/or after a new RTF styletyp.
There are no defaults at all for styletyp.
Syntax style:(StyleNumber) (Text to output)
Sub keywords are
before
after
para replacement for a \par inside this style
Eg: style:10040 before:[HH]\n after:ZZ
style:10039 before:[TT]\n zap:
style:10099 before:"abc def ghi"
or, using the same syntax, you can use the names of styles - note the double
quotes as we are embedding spaces.
stylename:"Heading 1" before:<hl4> after:</hl4>
tag:(name) add data before or strip any data associated with this tag
tag:fonttbl zap:
tag:colormap zap:
tag:stylesheet zap:
tag:rdquote before:' zap:
tag:endnote before:<EndNote>
Sub keywords are
zap: strip any data and do the same for following tags on this level
zap-this: strip any data for this tag ONLY,
revert to prevous setting for following tags
allow: pass data and do so for any following tags on this level
allow-this: pass this data but
revert to prevous setting for following tags
before:(FipSeq) add this data where the tag was
after:(FipSeq) add this data at the end of the level of this tag
toggle: see below
The default is 'allow' for all tags not otherwise specified
Certain tags (or in RTF parlance, control words) are 'toggles' and can have
an 'after:' keyword too. The RTF spec on the Microsoft web site (try
msdn.microsoft.com and search for RTF)
; bold on= \b, off= \b0
tag:b before:<b> after:</b> toggle:
tag:i before:<i> after:</i> toggle:
These are mainly font toggles and are automatically reset on a \plain tag
unless the 'no-toggle-reset-on-plain:' parameter is present
no-toggle-reset-on-plain:
DO NOT reset all the toggles on a \plain tag
bbc-header-file: file name of a parameter file describing a
BBC-M Companion file. This file has the syntax of
; comment
fiphdr:A3 size:55 type:a,n,b
The fields are consequetive so any gaps (or unwanted fields should be flagged
as a FipHdr field of '$$'
fiphdr:$$ size:3
Fields which repeat are labelled :
fiphdr:TT size:3 repeat:
The filename and other NUL terminated variable
length fields are labelled:
fiphdr:FF size:0 variable:
Standing files :
For fiphdrs, syntax is 1st is the lookup, 2nd is new
country-fiphdr:JC LC
service-fiphdr:JZ LZ
language-fiphdr:JL LL
country-codes:/fip/tables/setup/country.txt
service-codes:/fip/tables/setup/services.txt
language-codes:/fip/tables/setup/language.txt
companion-file-queue: queue name for the companion file
default is the same as the input file.
bbc-kill-file: File whose contents (in FipSeq) will replace
the data part of the incoming file default: none
bbc-kill-style: Kill style number. default: 25
All text in styles LESS than this style is stripped from a XKILLed file. Once
triggered, all subsequent text is passed.
error-dest: Destination to send files in error to.
default is 'xrtferror'
allow-text-files:
Normally only RTF files are processed and any non-rtf files have their data
stripped - zero length data files are created.
This allows the data from non-rtf files to be processed too,
BUT only if there are NO "{rtf" start tags.
balance-store: Name of the balance group for sending the input file to remote
systems. If BBCM flag is on, the companion file is also copied. This uses the
done queue - so files are balanced ONLY if a done queue has been specified.
log-line: Line of FipSeq to replace normal logging
default is log-line:\SN \DU
primary-host: Primary host for this service
The default host is the one we are running on. Use this to force
redun_balance files to be output on a different one.
(NOT WINNT)
timing-stats: yes/no
Turn on timing statistics default: no
Where sections of FipHdr fields are required or changes to the output style,
use keywords : fixed, partial, combie, optional, repeat and/or style. (see The
SysAdmin manual for more information).
They are normally specified :
fixed:QZ 1234543
partial:QT ST,3,2,U,<,>
combie:QY ep|na,(0000000)a
option:QE ep,11,7,s
repeat:QK XK,-,3
or repeat:QP PK,,4,#X
fipseq-style:QS XN,%.03d
repeat:QL XL "99"="abc" "101"="def
Note the fipseq style has been renamed to 'fipseq-style' for this program only.
Pls never allow any of your scripts to loop as ipxrtf waits for completion
before continung !
Input Parameters are (all optional) :
Either -1 : name of a single file default: spooler
Or -i : input queue default: spool/xrtf
If this does NOT start with a '/', it is assumed under spool.
-2 : Second copy done for input file default: file is deleted
If this does NOT start with a '/', it is assumed under spool.
-d : done queue for input file default: file is deleted
If this does NOT start with a '/', it is assumed under spool.
-D : do not delete the data or the BBC companion file if there is one.
-h : extra FipHdr information to add default: none
-k : Filename mask. Send only files containing this string.
default: send all files
-K : Filename unmask. Do NOT Send files containing this string.
default: send all files
-l : do NOT log files in default: log
-o : output queue default: spool/2go
If this does NOT start with a '/', it is assumed under spool.
-S : Run thru the input file and default: dont
display all tags, level and data as it is being processed.
Often there is an oddie in the data - and you just need to set that tag to
'zap:'
Use this (with the -1 switch) to debug troublesome files.
-u : owner if not that of the logon default: logon at start
-v : print version number and exit
-w : file wait for files arriving across a network. def: 0 secs
-X : do NOT keep the incoming DU, default: incoming DU
use the "dest" parameter.
-z : parameter file in tables/setup default: tables/setup/XRTF
testing Example
ipxrtf -1 /fip/spool/test/sud3696.rtf -D -S -o xo -z TEST | tee RTF.TEST
ipxrtf -1 /fip/z/data/xrtf.ahref.rtf -z vics.xrtf.tags -o xo -N vicsTest.\\\$u
-S | tee /tmp/Xrtf-19-1144
Version Control
;5p7 29jan02 added NON-rtf files for BBCm
;a/b 19mar02 cleanups
;c 25aug02 tracking levels for font/toggles
;d 09jun03 added stylesheet names
;e 23apr05 strip leading Spaces/CR/NL from stylenames
;f-j 10aug06 added timing-stats and added -h (;h bugette in stylesheet)
;k 18nov06 added escape-hex: for \'xx notation RTF hex chrs=CHANGE to DEFAULT
;l-m 20nov06 added chr:
;n-o 24may07 added -2 for 2nd don que
;p3 13dec07 made dest FipSeq ;2 added preserve-fiphdr ;3 is \(nl) is
hardreturn ? ;456 minor cleanups
;p7 19jan22 added -N to overwrite output name
(copyright) 2025 and previous years FingerPost Ltd.