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
- Generic/Text Only Print to File
- 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 (Details)” facility but this is of 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. So, as a fall back option, I have picked up the data from a “Generic/Text Only Print to File” output, a publicly available interface. This is a little known but standard Windows feature that can be installed to print to a file (see below).
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 one verse. It is not possible to discover the displayed format of songs such as integral blank lines, 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 and Song Number. 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 print the schedule to a file using EasyWorship menus
and the “Generic/Text Print to File” option
(as described below)—say
sunday.txt
.
Then, double click schedprt.exe
Enter command : sunday.txt
This will 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: schedprt.dat
which defines
how the output will look. If you like the default output I have
provided 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.
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
schedprt.dat
) and contains sections which
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 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 name (upper case S)
- %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.
- %c = Copyright information (lower case c)
- %a = Reserved for Administrator data.
- %N = Reserved for Song number.
- %L = Licence. (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 } %\
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. The generic print source data does not recognise blank lines within a stanza (Shift-Enter) so in that situation they will all run together. 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, 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:
%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
In the EasyWorship database, each line is a separate paragraph, however in this program hard line breaks (\line in RTF) are automatically substituted so that each stanza forms a single paragraph 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 in the definitions above (single letters, upper and lower case). These values can be substituted into any template.
Example:
%l CCL# 640000 %\
e.g. this example would be useful if you wanted the licence information as part of the header/footer rather than on each song.
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.
- \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 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnrtfspec/html/rtfspec.asp (A very long and impenetrable document)
We use the sample provided which we then print in an A5 booklet using the Canon print driver which automatically reduces and orders the pages so they can just be folded and stapled. This accounts for the rather large apparent font sizes we have used.
Generic/Text Only Print to File
This is a little known standard Windows feature. These are the steps to install it:
- Open Control Panel => Printers and Faxes
- Open "Add a Printer"
- Select "Local Printer" but not "Plug and Play"
- For the Port select "FILE: (Print to File)
- Use Manufacturer: Generic, Model: Generic/Text Only
- Don't select "Use as Default"
- Don't Share the Printer
- Don't Print a Test Page
- Finish.
In the Print Preview Window of EasyWorship, to the left of the Printer Icon there is one for Printer Setup. Select your new Generic/Text Only printer and when you print, it will ask for a file name (use the .txt extension). This has to be done each time a print is selected as it reverts to the default every time.
Known bugs and limitations
- A long copyright notice which strays into the page number will cause a fatal error. I can't find a way to trap this so keep them short.
- It doesn't handle null stanzas correctly (e.g. ones with a tag and no body)
- Multi stanza songs must have tags. Otherwise the song will appear all as one block.
- Internal formatting of songs (bold, italic, underline, colour) is not available.
- 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, copyright administrator and the song number are not available.
- The licence is not available to the Schedule template. If it is required then use a variable such as %l to set it.
- There is no GUI.
- I can't help you with RTF syntax. The examples I supply work for me.
- The Generic/Text Only Printer seems to truncate the licence code %L to 18 characters. There is a similar problem with very long lines of text, such as generated by the scripture sections. A workaraoud to this problem is when setting to use the Generic/Text Only Printer, go to the properties and select Landscape.
- The content of PowerPoint slides, images and video items is skipped (there is nothing available anyway)
- EasyWorship suppresses the content of titles from 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!
- I suspect that if you don't have Licence details filled in then it may fail in some way. As you practically need a licence of some sort I haven't investigated this.
- Songs that are longer that one page in the original EasyWorship print format create havoc with this program. For a start, there is a bug in EasyWorship that causes the Author and Copyright of the first page to the one from the previous song not this one. This is coupled with the fact that I have found no reliable way to tell where the song ends. As a result you will get some strange output. To avoid this, I can only suggest breaking the very long songs (in our case they are the Eucharistic Prayers) into two or more items.
- If you space out a slide using entirely SHIFT_ENTER characters it will look right on the screen but in the print the whole stanza will be on one line. This is another bug in EasyWorship.
- The date of printing doesn't show if the RTF file is opened in OpenOffice or LibreOffice but I can't be responsible for that. It works in MS Office.
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 (the output from the Generic/Text Only Printer not the .ews 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–07 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.
27 Feb 2014—Version 1.2 for EasyWorship 2009 (build 1.9)—with control file Version 3
schedprt.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
V1.2—Output a running tally to reassure the user.
V1.1—Fixed bug where songs that exactly fitted one page of the Generic/Text Only Printer caused the author and copyright information to be appended to the song. A chunk of subroutine get_song was re-written.
V1.0—Initial Alpha test release.
Control files
V3—Include page numbers, slightly larger margins and consolidate Title and Author onto one line.
V2—Larger print.
V1—Initial Alpha test release.