This software is not provided or supported by SoftTouch Developments inc. or the EasyWorship team but by a customer for their own use. Please see the copyright notice and terms below.
- Running the program
- The configuration data file
- Simple RTF structure
- Known bugs and limitations
- Copyright
- Download
- Install
- Release Notes
EasyWorship and Printing
One of the few flaws in the EasyWorship church
projection software relates not to its primary function but the
printing facilities. It was perhaps thought that these were
entirely secondary but we are aware that some people can't (or
won't) get on with the projected image and need a paper copy.
When the church is geared to a bookless service, perhaps by
necessity because the songs now in use are not in the books,
there needs to be a way of providing a few paper copies. It is
not worth expending large amounts of administrator time in
producing these as used to be done when printed orders of
service were provided to everyone, so a means to reproduce what
otherwise appears on the screen is needed.
The EasyWorship software provides a “Print Schedule Report (Details)” facility but this is a fixed format and one song (or whatever) to a page. Variations to this may well be needed. In our church we project liturgy, sometimes only two lines per item. This would be very wasteful of paper and a thick pile for someone to handle. The only alternative has been to cut and paste the song details to a word processor document but this was exceedingly tedious and took too much time. The best time to produce this leaflet is just before the service.
This program is intended to provide a more flexible and customisable printed schedule output from EasyWorship. It utilises RTF file formats so the output file can be printed directly or further adjusted using a standard word processor. For customisation, this is not very user friendly but is a quick and dirty solution to a problem that I hope, in the near future, SoftTouch will fix in the main software.
It was originally intended that the data would be picked up from the schedule itself but it seems that the format is proprietary and not published. I managed to figure out most of the table of contents part but not the song words themselves. An alternative option provided in EasyWorship v7 is that under the File Menu ==> Reports and Printing there is an option to “Save Schedule Report (details)” which creates a .txt file containing the information required. This is an improvement from v2009 when I had to use the output from a “Generic/Text Only Print to File” output.
To use it successfully, verses of songs (if there are more than one) have to be marked with tags (Verse, Chorus etc.) as the divisions are not otherwise available. If tags are not present, the song will appear as all chunk. It is not possible to discover the displayed format of songs such as italic, bold and underlines that were in the original schedule but I don't think this is a huge loss. Other information not available includes the Song Administrator. Even so, it is possible to produce a very acceptable output to suit most needs.
Running the program
The program is a command line system, no GUI I'm afraid, but it is very simple.
First generate the schedule output using EasyWorship menus
“Save Schedule Report (details)” option; say
sunday.txt
.
Then, double click schedprt7.exe
Your anti-virus system may warn you at this point that it is from an unknown source, hopefully only the once.
Enter command : sunday.txt
This will list all the schedule items so you can see what is present
and then produce an output file called
sunday.rtf
which can be opened in a word processor
and edited or printed as required.
Alternatively, if you are easy with the command window you can put the parameters on the same line.
There is one configuration data file which is
required—default: schedprt7.dat
which defines
how the output will look. If you like the default output I have
provided, with some editing to change the church name etc. then that is all you need to do.
Optionally specify an alternative configuration data file
Enter command : -c largeprint.dat sunday.txt
Optionally specify an alternative output file
Enter command : -o minister.rtf sunday.txt
or both. File names can be enclosed in quotes if they contain spaces or some other special characters.
By changing the configuration file there is no limit to what could be achieved, but what you see here is about the limit of my ingenuity.
The configuration data file
This is a plain text file (default
schedprt7.dat
) and contains sections that
configure how the final output is generated. Each section is
coded as an RTF file snippet with escape codes where
EasyWorship schedule data is inserted.
The basic structure is:
%Schedule Schedule template %\ %Song Song template %\ %Stanza Stanza template %\ %x (for example) value %\
Comments (lines not starting with %) can be placed anywhere outside the definition blocks.
The %Schedule template defines the layout for the overall output file and will contain such things as the font definitions, document title, headers and footers. It can contain these escapes where variable data is inserted:—
- %S = Schedule file name (upper case S)—I find it helpful to name the file with the date.
- %C = Content (upper case C) where the songs are inserted.
- %\ = Template terminator.
- %% = %
Example:
%Schedule {\rtf1\ansi\ansicpg1252\deff0\deflang2057 {\fonttbl {\f0\fnil\fcharset0 Tahoma;} {\f1\fnil\fcharset0 Georgia;} } \viewkind1\paperw11906\paperh16838 \margl720\margr720\margt360\margb360 {\footer\f0\fs20\qr\sb90\sa0\chdate Page \chpgn\par} \f0\fs36\qc\sb0\sa0\b St. Matthew's Church\par \f0\fs32\qc\sb0\sa0\b Songs and Prayers for the Morning Service - %S\b0\par %C } %\
The %Song template is the layout for each individual song and will contain the song title, author, copyright information and the song text itself. Any formatting required between the songs also needs to be included in this template, e.g. page breaks. It can contain these escapes where the variable data is inserted:—
- %T = Title (upper case T).
- %A = Author (upper case A).
- %c = Copyright information (lower case c)
- %a = Reserved for Administrator data.
- %N = Song number (upper case N).
- %L = Licence. (upper case L, set to null if %c is null)
- %s = Song content (lower case s)
It can also use the %Schedule escapes above except %C (Content).
Example:
%Song {\pard\f0\fs30\ql\sb360\sa90\keepn\b %T\b0\par \f0\fs24\ql\sb0\sa90\keepn\i %A\i0\par %s \pard\f0\fs18\ql\sb90\sa0 %c - %L\par } %\
In a previous version the Licence was obtainable from the input data but this is not now the case so it needs to be defined using %l (lower case l) in the configuration file. This will be copied to %L as required during the run.
Example:
%l CCL# 640000 %\
Each stanza (a verse, chorus, slide etc.) is extracted from the source song using the tag as delimiter and is laid out using the %Stanza template. Any formatting required between the stanzas also needs to be included in this template. It can contain these escapes where the variable data is inserted:—
- %t = Tag. e.g. Verse, Chorus, Slide (lower case t)
- %n = Tag text (lower case n), typically the verse or slide number.
- %z = Stanza content (lower case z).
It can also use the Schedule and Song escapes above except %C (Content) and %s (song content).
Example:
%Stanza \pard\plain\f0\fs22\ql\sb90\sa0\sl0\keepn %t %n\par \pard\plain\f1\fs30\ql\sb0\sa0\sl0\li180\keep %z\par %\
If you want different formatting for the different tag types then you can define the %Chorus, %Bridge etc escapes. %Stanza is used by default if these are not defined.
Example: (this makes chourses italic)
%Chorus \pard\plain\f0\fs22\ql\sb90\sa0\sl0\keepn %t %n\par \pard\plain\f1\fs30\ql\sb0\sa0\sl0\li360\keep\i %z\i0\par %\
The full list available is %Verse, %Chorus, %Bridge, %Intro, %End, %Slide and %Tag
By default the lines form a single paragraph for the stanza. This is achieved using hard line breaks (\line in RTF) which makes for easier formatting. The %Line escape can be redefined to vary this behaviour.
Example (to remove output line breaks altogether)
%Line %/
Finally a facility exists to give a value to any escape not otherwise reserved (single letters, upper and lower case). These values can be substituted into any template.
The reserved codes are %A, %C, %L, %N, %S, %T, %a, %c, %n, %s, %t and %z */
Example:
%x St Matthew's Church, Bristol %\
An assignment can include any text, including new lines and references to other escapes, but the consequences of a recursive loop are undefined and would probably cause the program to hang (use CTRL-C to break out). The leading and trailing new lines of the value are suppressed, if one is required include an extra one. All 52 possible variables (less the reserved ones) are available and initialised with a null string. They are limited to 2K characters each.
Simple RTF Structure
This is a very basic sample of the Microsoft RTF structure definition. It ought to be possible to create any layout that can be created by a word processor, but I don't necessarily know how. You are on your own with this.
Please do not contact me for help or errors regarding RTF formatting, I know as little as you. These guidelines are all that I can provide to help you.
All commands start with \ and are terminated either by another command or a single whitespace which is suppressed. Sections of the document can be contained in {...}. Any characters not part of commands are output to the printed document. If \, { or } are required to be printed, use \\, \{ or \}. Don't forget the space between the last command and the content. Don't forget to match the braces { and } in logical sections. In all these descriptions “N” is where a numerical value is placed.
Paragraph settings
- \ql = align left (\qc=centered, \qr= align right)
- \liN = left indent
- \sbN = space before (\saN=space after) the paragraph
- \slN = space between lines
- \keep = keep the paragraph on the page
- \keepn = keep the paragraph with the next one
- \pagebb = page break before the paragraph.
- \brdrb\brdrs\brdrw25\brsp20 = a good horizontal rule. It actually says paragraph border bottom (\brdrt is top), single thickness, 25 units wide and spaced 20 from the text.
- \par = end of paragraph
- \pard = reset paragraph settings (this can be important).
Inline settings
- \fN = font number (from the font table at the start)
- \fsN = fontsize
- \b = bold (\b0=bold off)
- \i = italic (\i0=italic off)
- \ul = underline (\ul0=underline off)
- \plain = reset all inline settings
- \line = hard line break
Inserted values
- \chdate = numeric date
- \chdpl = verbose date
- \chdpa = abbreviated date
- \chtime = current time These are all the dates and times of editing/printing not of the creation of the schedule. They don't work in all word processors.
- \chpgn = current page number
- \emdash = long dash
Most measurements are in 1/20 of a point (1/1440") 1cm = 567 units.
Page sizes: US Letter=12240 x 15840, A4=11906 x 16838, A5=8419 x 11906. You can use the paper in landscape orientation.
Font sizes are in 1/2 points (1/144")
Languages: English British=2057, English United States=1033
Code page: Western European=1252
The settings at the start of the example Schedule template
are about the minimum requirement and it is beyond the scope of
this summary to go into more detail. A full RTF specification
can be found at
https://msopenspecs.azureedge.net/files/Archive_References/[MSFT-RTF].pdf
(A very long and impenetrable document)
We use the sample provided which we then print on A4. The relatively large font sizes are because they are mostly used by the partially sighted.
Known bugs and limitations
- It doesn't handle null stanzas correctly (e.g. ones with a tag and no body). It duplicates the previous stanza content.
- The data supplied from EasyWorship is in UTF-8 format. Rather than rewrite the program to allow for this I have only trapped certain characters and output them as the nearest equivalent (apostrophe and soft new line). If any others are discovered they will be output as "#". If you come across one then please let me know and I will include it in an update. This limitation probably means that the program is not usable in some languages that make extensive use of characters that are not in the 8 bit Ascii range.
- Multi stanza songs should have tags. Otherwise the song will appear all as one block and not paginate correctly.
- Internal formatting of songs (bold, italic, underline, colour) is not available in the source data.
- There is no flow control available to the user so, for example, if you want “%c - %L” and they are both null then the “ - ” will still be output.
- The schedule notes and copyright administrator are not available in the source data.
- If the licence is required in the %Schedule template then use %l as described above. In songs use %L so that it will be suppressed if the copyright information is not present.
- There is no GUI.
- I can't help you with RTF syntax. The examples I supply work for me.
- The content of PowerPoint slides, images, audio and video items is skipped (there is nothing available anyway) TEST WITH IMAGES & AUDIO
- EasyWorship suppresses the content of titles from the screen after the first open bracket. Should this program do the same? As an option?
- It doesn't check that any escapes are actually defined; if you use an undefined one you will get a null output in that space. In particular you will get very little output at all if you don't define %Schedule, %Song and %Stanza!
Before you report any bugs (and there are bound to be some) please first check that the problem is with the program not with your RTF templates. If you need to report a problem please send the schedule text file (not the .ewsx schedule itself) and your configuration file so I can work with the same information that you have.
Contact information can be found on my Home Page.
Copyright
Copyright ©2006–25 Rick Parsons, Bristol, England except those things that belong to SoftTouch Development inc. including the EasyWorship name.
This software is published Open Source Freeware. You are free to use the programs either in full or part without charge. I would ask however that this notice is included with any extract or onward distribution.
No charge may be made for the use of this code, however there is no objection to including modest extracts (with acknowledgement) in otherwise commercial software.
No warranty is given or implied by the use of the software which you do at your own risk. No compensation can be considered regarding damage to data, computers or any thing else arising as a result of using these programs.
Download
I try to keep my system virus free but you do check downloaded files yourself, don’t you? <grin>
The zip file contains the full source code, executables for MS-DOS/Windows and a sample configuration file.
2 Feb 2025—Version 7.0 for EasyWorship 7—with control file Version 7
schedprt7.zip (36K)
Install
Unzip the files into any convenient location. It works best
if at least schedprt.exe
and
schedprt.dat
are in the same folder as your
schedules. The only files that are needed for operation are those two. The rest are for information.
Release Notes
V7.0—Initial Alpha test release for EasyWorship 7.