I am using the supplied FakeXML as below 

ClassMethod FakeXML() [ Internal ]
{
    Write "<fofile" _ 
        $Case(%report.FOFilename, "": "", : " name=""" _ ##class(%File).NormalizeFilename(%report.FOFilename) _ """") _
        $Case(%report.FOStreamString, "": "", : " FOStreamString=""" _ %report.FOStreamString _ """") _
        $Case(%report.CallbackClass, "": "", : " callbackClass=""" _ %report.CallbackClass _ """") _
        $Case(%report.CallbackMethod, "": "", : " callbackMethod=""" _ %report.CallbackMethod _ """") _
        "></fofile>"
}

@Attila Toth  thanks for getting back at me I have tried with log errors and I get a pdf generated which I can not open as if I have a loop running or the file being corrupt your solution works fine with the reading of files and using the call back method with embedded XLFO  is  it possible to supply the call back method with the XLFO stream and use that instead and if possible please could you give us an example if you have one thanks

 @Attila Toth I am using your  FOWrapper to pass a stream of XLFO data in my production to generate a pdf and  nothing is happening I am not getting any errors or anything  would you please advice on where I am going wrong I have altered it a bit to use what I need please advice here is my code thanks in advance

Include Ensemble

IncludeGenerator (%occInclude, EnsUtil)

Class ZEN.Report.XLFOToPDFWrapper Extends %ZEN.Report.reportPage
{

Parameter DEFAULTMODE As STRING = "xml";

/// Default value for the CallbackClass property. This can be set in subclasses!
Parameter DEFAULTCALLBACKCLASS;

/// Default value for the CallbackMethod property. This can be set in subclasses!
Parameter DEFAULTCALLBACKMETHOD;

Parameter ENCODING = "Windows-1252";

Property FOStreamString As %Stream.FileCharacter(ZENURL = "FOSTREAMSTRING");

/// If this and the CallbackMethod are not empty and referring a valid class and method name,
///  then the return value of the corresponding classmethod (which should be a character stream) is used as the XSL-FO file.
Property CallbackClass As %String(ZENURL = "CLASS") [ InitialExpression = {..#DEFAULTCALLBACKCLASS} ];

/// If this and the CallbackClass are not empty and referring a valid class and method name,
///  then the return value of the corresponding classmethod (which should be a character stream) is used as the XSL-FO file.
Property CallbackMethod As %String(ZENURL = "METHOD") [ InitialExpression = {..#DEFAULTCALLBACKMETHOD} ];

/// This callback is invoked after this report is instantiated
/// and before it is run.
Method %OnBeforeReport() As %Status [ Internal ]
{
	Set tSC = $$$OK

	If (..CallbackClass '= "") && (..CallbackMethod '= "") {
		TRY {
			Set tSC = $CLASSMETHOD(..CallbackClass, ..CallbackMethod, .fostream)
		}
		CATCH ex {
			Set tSC = ex.AsStatus()
		}
	}
	Else {
		Set fostream = ##class(%Stream.FileCharacter).%New()
		While '..FOStreamString.AtEnd {
		Set tSC = fostream.Write(..FOStreamString.Read(32000))
	}
		
		 $$$TRACE(fostream)
		 $$$LOGWARNING(fostream)
	}
	
	If $$$ISOK(tSC) {
		// TODO: automatically append XSLT frame around the XSL-FO file.
		Set ..toxslfostream = ..TransformFO2XSL(.fostream)
		Do ..toxslfostream.Rewind()
	}
		
	Quit tSC
}

/// This report has a "fake" XML definition. Basically any XML would do, because the XSL-FO file is created outside of the ZEN Report class.
XData ReportDefinition [ XMLNamespace = "http://www.intersystems.com/zen/report/definition" ]
{



}

/// Method, which generates the "fake" XML content of the report.
/// At the moment this contains a single element (), which reflects the parameters of the report.'
ClassMethod FakeXML() [ Internal ]
{
	Write "">"
}

ClassMethod ProducePDFFile(pOutputFile As %String, pXLFOStream As %String, pDisplayLog As %Boolean = 0, pRenderServer As %String = "") As %Status
{
	Set tSC = $$$OK
	
	Set report = ..%New()
	Set report.FOStreamString = pXLFOStream
	
	Set tSC = report.GenerateReport(pOutputFile, 2, pDisplayLog, pRenderServer)
	Quit tSC
}

/// Appends the XSLT frame around the original XSL-FO stream, to make it usable with this report class.
ClassMethod TransformFO2XSL(ByRef pFOStream As %Stream.Object) As %Stream.Object [ Internal ]
{
	Set tSC = $$$OK
	
	Set xslStream = ##class(%Stream.TmpCharacter).%New()
	
	Do pFOStream.Rewind()
	Set first100 = pFOStream.Read(100)
	If $Extract(first100, 1, 2) = "", 1) _ ">"
		Set first100 = $Piece(first100, ">", 2, *)
	}
	Else {
		Set xmlHeader = "" 
	}
	
	Do xslStream.WriteLine($Select(
		xmlHeader '= "": xmlHeader,
		1: ""))
	Do xslStream.WriteLine("")
	Do xslStream.WriteLine("")
	Do xslStream.WriteLine("")

	Quit xslStream
}

}

and on my operation I call it like so

Class FopPDFRenderingEngineOPRN Extends Ens.BusinessOperation
{

Parameter ADAPTER = "EnsLib.File.OutboundAdapter";

Property Adapter As EnsLib.File.OutboundAdapter;

Parameter INVOCATION = "Queue";

Method Render(pRequest As RenderRequestMREQ, Output pResponse As RenderRequestMRES) As %Status
{

	set tSC = $$$OK
		
	set pResponse = ##class(Ecrion.PublishingEngine.RenderRequestMRES).%New()
	set pResponse.FileName = pRequest.FileName
	set pResponse.Status = 0

	

	#Dim oHttpReq3 AS ZEN.Report.XLFOToPDFWrapper= ##class(ZEN.Report.XLFOToPDFWrapper).%New()

	
	// if the input format is xslfo Base64Encode the stream
	if (pRequest.InputFormat = "xslfo")
	{
	
	
	// write the request object 

		set pResponse.Document = ..getStreamData(pRequest.Source)
		set p=oHttpReq3.ProducePDFFile(..Adapter.FilePath_pRequest.FileName,..getStreamData(pRequest.Source))
		If ($$$ISOK(p))
	    {
		    set pResponse.Message="all good"
		    }else
			{
			set pResponse.Message=$$$ISERR(tSC)
			}
	
      	
      	kill oStream
      	 
	}
	
 
    
    kill oStream
        
    quit tSC
}

Method getStreamData(foo As %Stream.TmpCharacter) As %Stream.TmpCharacter
{
	   set oStream = ##class(%Stream.TmpCharacter).%New()
		
		
		while ('foo.AtEnd) { do oStream.Write(foo.Read(1200)) }
		
		
		do oStream.Rewind()
		quit oStream
}

XData MessageMap
{

	 
		Render
	

}

}

After some investigation on the above problem I realised that when purging record map data the data integrity check is the problem as I am using Ensemble 2014.1 the relationships on those is a  one to many so  when deleting these objects there is an %ondelete method which invokes a delete record method which tries to delete a record and then delete the batch but it does not check if that batch still have records associated with it. Now a new problem arises where I have tried to delete individuals records in a batch successfully but when trying to delete the batch its self it errors with a 5002 ROLLback error now the question is how to get around this problem

@Eduard Lebedyuk  No it is not  a known node what I am trying to do is pull those characters and  pass them to  $TRANSLATE($SYSTEM.Encryption.Base64Encode(streamString),$C(10,13))' as part of a document I need to convert to a pdf but have tried all the encodings I could use from utf -8 to the windows 1252 and I get an error like so 

ERROR <Ens>ErrException: <ILLEGAL VALUE>zEncodeStream+18  @' set encString = $TRANSLATE($SYSTEM.Encryption.Base64Encode(streamString),$C(10,13))' any ways to get around the base 64 encoding

@Robert.Cemper  Is it possible to have an example as I do not know where to start so far using the %Net.HttpRequest I have been able to navigate to the Log in page and would like to locate the user inputs and insert some credentials

set oReq = ##class(%Net.HttpRequest).%New()
set oReq.Server =..Server
set oReq.Location =..location
set oReq.SSLConfiguration =..SSlConfig 
set oReq.Https=1

 

@John Murray

I might be connecting to a wrong server here is how I am doing my configuration for atelier:

  • Downloaded: Eclipse for javascript developers,Apache tomCat server 7.0
  • I installed the above configured my tomcat server to Listen at port 8080 
  • I then went to window--> preference-->Server and added my TomCat Server to eclipse run time Environment
  • On eclipse Market Place downloaded Atelier restarted eclipse after install and went on to Help-->Install new Software and added the Repository
  • Restarted eclipse went on to project-->other-->Atelier-->Server and tried to do the above as per your picture and nothing just that error message In case I missing out on something please advice.I have also noticed this when I start my server within eclipse or on the system and try to connect I get the above error but when I switch them off and try to connect i get Timeout error. That's one server at a time

thanks the problem was the pdf is more like an image file so using a container to pass the stream around is a good idea only if the message leaves the service to the operation but in my case I had a process which was going to forward that message to another process so the first process had all the contents of a stream but when it forwards it to the next process the contents are empty so in my case I changed the stream object to a  %Streambinary  and I am not using the container anymore everything is working fine.