web stats
RTF to PDF - Mirth Community

Go Back   Mirth Community > Mirth Connect > Support

Reply
 
Thread Tools Display Modes
  #1  
Old 05-16-2012, 11:43 AM
TSmithTRA TSmithTRA is offline
OBX.2 Kenobi
 
Join Date: Nov 2009
Location: Winston-Salem, NC
Posts: 79
TSmithTRA is on a distinguished road
Default RTF to PDF

Has anyone had any luck using Mirth to convert an RTF document to PDF using the embedded iText libraries?

I have code in place that "looks" like it should work but I get the following error.

Any Help would be greatly appreciated.

"DETAILS: TypeError: [JavaPackage com.lowagie.text.rtf.parser.RtfParser] is not a function, it is object."

Transformer code is below


// Pull the RTF from the OBX and unescape it...
//var contents = $('ReportContent');
var contents = $('RTFContentsString');
//var pdfString = new String(Base64.decodeBase64(contents.toString()));
var pdfString = org.apache.commons.codec.binary.Base64.decodeBase6 4(contents.toString());
//var pdfString = new String(Base64.decodeBase64(contents.getBytes("asci i")));

//contents = contents.replace(/\\E\\/g, "\\");
//contents = contents.replace(/\\.br\\/g, "\r\n");
//FileUtil.write('F:/tmp/input.rtf', false, contents);

// Generate a unix time stamp for use as the output filename (we'll use something a little more robust for prod, but this is useful for test)
var foo = new Date;
var unixtime_ms = foo.getTime();
var unixtime = parseInt(unixtime_ms / 1000);

// Set the variables for the input file and output file
var inputfile = "F:/tmp/input.rtf";
var outputfile = "F:/output/"+unixtime+".pdf";

// Create the respective streams for the files
var inputstream = new Packages.java.io.FileInputStream(inputfile);
var outputstream = new Packages.java.io.FileOutputStream(outputfile);

// Create an iText document
var myDocument = new Packages.com.lowagie.text.Document();

// Create a PDF writer object which we'll use to save the PDF in a moment
var pdfwriter = new Packages.com.lowagie.text.pdf.PdfWriter.getInstanc e(myDocument, outputstream);

// Open the iText document we created a moment ago so we can modify it
myDocument.open();

// Create a parser which will load the RTF file in a moment
var parser = new Packages.com.lowagie.text.rtf.parser.RtfParser(nul l);

// Parse the RTF input and pass it to the PDF writer object
parser.convertRtfDocument(inputstream, myDocument);

// Close the document and hopefully it will contain what we want!
myDocument.close();

// Remove the temporary RTF file
var tidyUp = new Packages.java.io.File(inputfile);
tidyUp["delete"]();
__________________
__________________
Tom Smith
IT Director
Triad Radiology Associates
Reply With Quote
  #2  
Old 05-17-2012, 10:26 AM
cory_cole cory_cole is offline
Mirth Guru
 
Join Date: Mar 2012
Posts: 1,282
cory_cole is on a distinguished road
Default

var parser = new com.lowagie.text.rtf.direct.RtfParser();
Reply With Quote
  #3  
Old 05-26-2012, 11:56 PM
bbeverage bbeverage is offline
OBX.1 Kenobi
 
Join Date: Apr 2012
Posts: 26
bbeverage is on a distinguished road
Default

Even using var parser = new com.lowagie.text.rtf.direct.RtfParser();

I get the following error:

Thanks for any help,
Brian

Code:
[2012-05-27 02:52:11,422]  ERROR (org.mule.impl.DefaultComponentExceptionStrategy:95): Caught exception in Exception Strategy for: 505b69da-6235-47ac-ad1a-74a074472081: java.lang.Exception: org.mozilla.javascript.EcmaError: TypeError: Cannot find function convertRtfDocument in object com.lowagie.text.rtf.direct.RtfParser@e5922. (6ed92073-4883-4ad9-9ce6-cecacd41fda2#1437)
java.lang.Exception: org.mozilla.javascript.EcmaError: TypeError: Cannot find function convertRtfDocument in object com.lowagie.text.rtf.direct.RtfParser@e5922. (6ed92073-4883-4ad9-9ce6-cecacd41fda2#1437)
	at com.mirth.connect.connectors.js.JavaScriptMessageDispatcher.doDispatch(JavaScriptMessageDispatcher.java:96)
	at com.mirth.connect.connectors.js.JavaScriptMessageDispatcher.doSend(JavaScriptMessageDispatcher.java:103)
	at org.mule.providers.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:164)
	at org.mule.impl.MuleSession.sendEvent(MuleSession.java:191)
	at org.mule.impl.MuleSession.sendEvent(MuleSession.java:130)
	at org.mule.routing.outbound.AbstractOutboundRouter.send(AbstractOutboundRouter.java:85)
	at org.mule.routing.outbound.FilteringMulticastingRouter.route(FilteringMulticastingRouter.java:54)
	at org.mule.routing.outbound.OutboundMessageRouter$1.doInTransaction(OutboundMessageRouter.java:78)
	at org.mule.transaction.TransactionTemplate.execute(TransactionTemplate.java:48)
	at org.mule.routing.outbound.OutboundMessageRouter.route(OutboundMessageRouter.java:82)
	at org.mule.impl.model.DefaultMuleProxy.onCall(DefaultMuleProxy.java:247)
	at org.mule.impl.model.seda.SedaComponent.doSend(SedaComponent.java:209)
	at org.mule.impl.model.AbstractComponent.sendEvent(AbstractComponent.java:277)
	at org.mule.impl.MuleSession.sendEvent(MuleSession.java:201)
	at org.mule.routing.inbound.InboundMessageRouter.send(InboundMessageRouter.java:176)
	at org.mule.routing.inbound.InboundMessageRouter.route(InboundMessageRouter.java:143)
	at org.mule.providers.AbstractMessageReceiver$DefaultInternalMessageListener.onMessage(AbstractMessageReceiver.java:487)
	at org.mule.providers.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:266)
	at org.mule.providers.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:225)
	at com.mirth.connect.connectors.vm.VMMessageReceiver.getMessages(VMMessageReceiver.java:223)
	at org.mule.providers.TransactedPollingMessageReceiver.poll(TransactedPollingMessageReceiver.java:108)
	at org.mule.providers.PollingMessageReceiver.run(PollingMessageReceiver.java:97)
	at org.mule.impl.work.WorkerContext.run(WorkerContext.java:290)
	at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1061)
	at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:575)
	at java.lang.Thread.run(Thread.java:662)Caused by: org.mozilla.javascript.EcmaError: TypeError: Cannot find function convertRtfDocument in object com.lowagie.text.rtf.direct.RtfParser@e5922. (6ed92073-4883-4ad9-9ce6-cecacd41fda2#1437)
	at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3753)
	at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3731)
	at org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3759)
	at org.mozilla.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3778)
	at org.mozilla.javascript.ScriptRuntime.notFunctionError(ScriptRuntime.java:3842)
	at org.mozilla.javascript.ScriptRuntime.getPropFunctionAndThisHelper(ScriptRuntime.java:2343)
	at org.mozilla.javascript.ScriptRuntime.getPropFunctionAndThis(ScriptRuntime.java:2310)
	at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1515)
	at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:845)
	at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:164)
	at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:426)
	at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3157)
	at org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:175)
	at com.mirth.connect.connectors.js.JavaScriptMessageDispatcher.doDispatch(JavaScriptMessageDispatcher.java:75)
	... 25 more
Reply With Quote
  #4  
Old 05-27-2012, 08:42 AM
AlexToft AlexToft is offline
OBX.3 Kenobi
 
Join Date: Sep 2010
Location: Leeds, UK
Posts: 160
AlexToft is on a distinguished road
Default

I had much more reliable results by running OpenOffice in headless mode and invoking JodConverter (as a custom jar) from a Mirth transformer to do rtf/pdf converts.

http://artofsolving.com/opensource/jodconverter
Reply With Quote
  #5  
Old 05-27-2012, 09:01 AM
bbeverage bbeverage is offline
OBX.1 Kenobi
 
Join Date: Apr 2012
Posts: 26
bbeverage is on a distinguished road
Default

Thanks for the reply. I am new to mirth do you have an example of what you did?

So I need to add JodConverter as a custom library to mirth and then can call it from within mirth?

Thanks,
Brian
Reply With Quote
  #6  
Old 05-27-2012, 01:36 PM
AlexToft AlexToft is offline
OBX.3 Kenobi
 
Join Date: Sep 2010
Location: Leeds, UK
Posts: 160
AlexToft is on a distinguished road
Default

You invoke OpenOffice like this (This is a Linux example as I don't work with Windows, but easy to adapt):

/path/to/openoffice/program/soffice.bin -headless -nofirststartwizard -accept="socket,host=localhost,port=8100;urp;StarOf fice.Service"

This is the command for the Python lib version of JobConverter:
java.lang.Runtime.getRuntime().exec("/usr/bin/python /opt/scripts/DocumentConverter.py /opt/input/”+source+”.rtf”+” /opt/output/”+destination+”.pdf”;

I then had another channel pick up the PDFs and send them to destination. Been about a year since I touched this, but will try and dig out the channel code for the Java version.
Reply With Quote
  #7  
Old 05-27-2012, 03:54 PM
bbeverage bbeverage is offline
OBX.1 Kenobi
 
Join Date: Apr 2012
Posts: 26
bbeverage is on a distinguished road
Default

Thanks I would really appreciate the java channel version.

Thanks again,
Brian
Reply With Quote
Reply

Tags
itext, pdf, rtf, rtfparser

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -8. The time now is 11:08 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Mirth Corporation