Page 1 of 1
How to format text from field to RTF document
Posted: Tue Mar 10, 2009 1:02 pm
by planix
Hi,
I am trying to set up some simple reports by using the merge function described in runrev.
I have no problem getting the information from fields to the right places on the template report. But, if the field is multi-line the merged result is a single line of text with no spaces and no hard returns.
For example, one field contains 3 lines of text;
Mr H. Example
21 Somewhere
888888888
I have then used
Code: Select all
put field "fldAddress" into mrgAddress
and get the result
MrH.Example21Somewhere888888888
I have tried
Code: Select all
get the formattedtext of field "fldAddress"
put it into mrgAddress
and I get exactly the same result.
Does anyone have some thoughts on what I am doing wrong here? Is it a property setting? Am I using the wrong type of field? Is there some trick to making text from a field wrap?
Thanks.
Posted: Tue Mar 10, 2009 2:12 pm
by Duncan
I am new here so do not believe anything I say

but....
I think lineDelimiter is what you are looking for.
set the lineDelimiter to numToChar(13)
put field "fldAddress" into mrgAddress
will pick up a Return character at the end of a line and separate your output.
Posted: Tue Mar 10, 2009 2:53 pm
by Mark
Dear planix,
In the title of the subject, you mention RTF and document, but in your question, there is no mention of that. Therefore, it is not entirely clear to me what you are trying to do. I think that large relevant parts of your scripts are missing in your question.
That said, I believe that the rtfText property might help you. Just as a start, try saving the rtfText of a field to a binary file and see if you can open that in a text editor.
Best,
Mark
Posted: Tue Mar 10, 2009 9:42 pm
by planix
Hi,
Thanks for these responses. I am not sure how to make the problem clearer really as there is no real issue with the code that I am using to get text from fields into a word document using the merge function.
The problem is that when I merge multi-line text from a field the return character does not seem to carry over.
This is not a code problem, I don't think, but some problem with the setting for the field. I just can't figure out what.
Sorry to say that setting the linedelimiter property didn't work and neither does putting the rtftext.
Cheers
Posted: Wed Mar 11, 2009 1:21 am
by planix
Hi,
I have tried a few experiments with this.
Here is some simplified code for what I am trying.
I have a template RTF file which has placeholder text like [[mrgAddress]].
I have code which reads something like this.
Code: Select all
on mouseUp
local theTemplateFile, theMergedFile, theRTFtext
-- set up the files for template and merged file
answer file "Where is 'EpOfCare.rtf' template file?"
if it is empty then exit mouseUp
put it into theTemplateFile
ask file "Save your message as:"
if it is empty then exit mouseUp
put it into theMergedFile
-- put the card fields into the variables for merging
local mrgAddress
put field "fldAddress" into mrgAddress
-- merge and save the new file
put URL("binfile:" & theTemplateFile) into theRTFtext
set the fileType to "MSWDRTF"
put merge(theRTFtext) into URL("binfile:" & theMergedFile)
end mouseup
What this code does is to identify the template file and a name for the output file. It then takes the text from a multi-line address field and puts it into a variable (mrgAddress) which has the same name as the placeholder in the template file. The merge function then replaces the placeholder text with the text in the variable of the same name.
The problem is that there are no carriage returns in the text that is merged. So the text is merged as one line not multiple lines.
I have tried putting text with carriage returns into the mrgAddress variable like this;
Code: Select all
put "test" & numToChar(13) & "test" into mrgAddress
and the merged text is "testtest"- so no carriage return. I am wondering if the merge function strips out or ignores the carriage return function so it has no effect. I tried this with space;
Code: Select all
put "test" & numToChar(32) & "test" into mrgAddress
and got a space. But when I tried line feed/new line
Code: Select all
put "test" & numToChar(10) & "test" into mrgAddress
I got "testtest".
Any ideas?
thanks
Posted: Wed Mar 11, 2009 2:53 am
by Mark Smith
What platform are you on?
I just tried this on my mac:
Code: Select all
on mouseUp
put "mark" & cr & "smith" into tName
put "my name is [[tName]], hello" into tText
put merge(tText)
end mouseUp
and got
my name is mark
smith, hello
If you're on windows, perhaps you should try crlf.
best,
Mark
Posted: Wed Mar 11, 2009 3:51 am
by planix
Hi Mark,
I am on Windows.
I just put your code into my button and got the same result as you in the message box. I then tried that with the merge into my template document and got the output without any carriage returns.
I then tried putting my field contents into the message box using the merge function and output had the carriage returns.
So, it looks like the merge works until it comes to trying to merge the variables with the placeholders in the template file. At that point the carriage returns disappear.
I suspect there is something that I am not understanding about trying to merge with an external RTF file.
Thanks for your help but this seems like a much more complicated issue than I had thought.
Cheers
[/code]
Posted: Wed Mar 11, 2009 4:12 am
by planix
Hi,
It seems that this does have something to do with the template file being an RTF file.
I set up the template file as a plain text file and the field is merged with carriage returns in place.
A text file is no good for my final product but at least this narrows it down to being some issue with multi line fields merging into an RTF document.
Mind you, I have no idea where to go with this from here.
Posted: Wed Mar 11, 2009 7:01 am
by Janschenkel
Try this:
Code: Select all
local mrgAddress
put field "fldAddress" into mrgAddress
replace return with (return & "\par ") in mrgAddress
The "\par " bit forces the start of a new paragraph.
HTH,
Jan Schenkel.
Posted: Wed Mar 11, 2009 8:51 am
by planix
Hi Jan,
Yay! It works. Thanks very much for that.
I wish I knew how to search stuff like that out.
Thanks to you and this forum the response and goodwill has been excellent.
All the best.
Posted: Thu Mar 12, 2009 7:01 am
by Janschenkel
Actually, for styled text formatting, the best trick to learning the format is to start small and put the
htmlText or
rtfText property of a field into another field, and study the contents.
Just drop a second field onto your card, open the message box, type the following
Code: Select all
set the text of the last field to the rtfText of field "Foobar"
hit return, and you can now see what rtf codes are necessary to accomplish the formatting you had setup in field "Foobar".
But you can also use this in the other direction, tweaking the rtc codes before you change the original field; again use the message box to type
Code: Select all
set the rtfText of field "Foobar" to the text of the last field
hit return and study the effects.
Don't expect support for the full array of Word functions though
HTH,
Jan Schenkel.