From: Hart, Leo (Leo.Hart@FMR.COM)
Date: Fri Oct 01 2004 - 13:23:05 PDT
I have a function that accepts an FO document in the form of a
System.Xml.XmlDocument and returns a PDF in the form of a Byte array.
Here's the function:
                Public Shared Function TransformXslFOToPDF(ByRef
pXslFODocument As XmlDocument) As Byte()
                        m_log.Debug("Transforming XSL-FO to PDF: " &
vbCrLf & pXslFODocument.OuterXml)
                        'Holds the outgoing PDF stream
                        Dim lOutStream As New MemoryStream
                        'Get Xmldocument into Stream
                        Dim lInStream As New MemoryStream
                        pXslFODocument.Save(lInStream)
                        lInStream.Position = 0
                        'Get Stream into XmlReader
                        Dim lInReader As New XmlTextReader(lInStream)
                        lInReader.MoveToContent()			
                        'Configuration settings for Formatter
                        Dim lConfigSettings As New Hashtable
                        lConfigSettings.Add("ROOT", "C:\Program
Files\RenderX\XEP.NET 3.8")
                        'FO Formatter
                        Dim lFormatter As New
Renderx.Xep.Formatter(lConfigSettings, Nothing)
                        lFormatter.Format("", lInReader, lOutStream,
Formatter.OUTPUT_PDF, lConfigSettings, Nothing)
                        Return lOutStream.GetBuffer
                End Function
And here's the FO that exists within pXslFODocument:
                <fo:root
xmlns:rx="http://www.renderx.com/XSL/Extensions"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
                        <fo:layout-master-set>
                                <fo:simple-page-master
master-name="my-page">
                                        <fo:region-body margin="1in" />
                                </fo:simple-page-master>
                        </fo:layout-master-set>
                        <fo:page-sequence master-reference="my-page">
                                <fo:flow flow-name="xsl-region-body">
                                        <fo:block>Hello
World!</fo:block>
                                </fo:flow>
                        </fo:page-sequence>
                </fo:root>
When I run this test case I receive the following error:
                Exception: Renderx.Xep.XepInvalidOperationException
                Message: startDocument: Invalid XSL FO source
'file:/C:/WINDOWS/system32/': 1 error found during validation
                Source: Renderx.Xep.Public
                        at Renderx.Xep.Sax.ContentHandler.endDocument()
                        at
Renderx.Xep.Sax.Adapter.XmlReaderToSax.WriteEndDocument()
                        at
Renderx.Xep.Sax.Adapter.XmlReaderToSax.Parse()
                        at Renderx.Xep.Formatter.Format(String
sBasePath, XmlReader reader, Stream outStream, String sOutFormat,
Hashtable htGenProperties, Logger logger)
                        at
Sandbox.Library.XML.Transformer.TransformXslFOToPDF(XmlDocument&
pXslFODocument) in C:\Documents and Settings\a122695\My Documents\Visual
Studio Projects\Sandbox\LibrarySandbox\Classes\XML\Transformer.vb:line
60
                        at Sandbox.Web.GetPDFFromXSL_FO.Page_Load(Object
sender, EventArgs e) in
C:\Inetpub\WWWRoot\WebSandbox\ASP\XML\GetPDFFromXSL-FO.aspx.vb:line 43
I assume this is related to the fact that the sBasePath parameter in
lFormatter.Format is set to a null string.  I can't figure out what I'm
supposed to use this for.  I've tried various different file and http
paths, but all of them error out.  I just want to convert my
memory-based FO document to a memory-based PDF.
Any suggestions?
Thanks,
Leo Hart
-------------------
(*) To unsubscribe, send a message with words 'unsubscribe xep-support'
in the body of the message to majordomo@renderx.com from the address
you are subscribed from.
(*) By using the Service, you expressly agree to these Terms of Service http://www.renderx.com/tos.html
This archive was generated by hypermail 2.1.5 : Fri Oct 01 2004 - 13:43:36 PDT