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.

EasyWorship and Printing

One of the few flaws in the [Off Site]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:—

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:—

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:—

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

Inline settings

Inserted values

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 [Off Site]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

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 ©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.