Great stuff Thomas, using the file:/// prefix has got it working. I know I'll need to revisit this when I deploy everything in an EAR, but is great to have it working as is.
Thanks for your help, Dylan -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: 11 April 2006 15:54 To: [email protected] Cc: [email protected] Subject: RE: CSS ignored when exporting to JPG Hi Dylan, "Dylan Browne" <[EMAIL PROTECTED]> wrote on 04/11/2006 10:48:01 AM: > Is there anyway I can keep my existing code which imports my stylesheet, > which is - > > ProcessingInstruction pi = > doc.createProcessingInstruction("xml-stylesheet","C:\svg\style.css"); > doc.insertBefore(pi, doc.getDocumentElement()); > > I don't quite see why this is picked up ok in the browser and renders the > SVG fine, but the stylesheet is not found when I choose to export the file > to JPG using the transcoder classes. "C:\svg\style.css" is a relative URL, you need to make it absolute. When the browser renders the file it provides the base url of the document (which is likely a 'file:' URL) which is used to turn the relative URL into an absolute URL. I suspect all you need to do is use: "file:///C:/svg/style.css" Typically I will use the JDK provided functionality new File("C:\svg\style.css").toURL() Which almost always gives the 'expected' behavior for files... > Thanks in advance again for any help, > > Regards, > Dylan. > > > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Sent: 11 April 2006 14:13 > To: [email protected] > Cc: [email protected] > Subject: RE: CSS ignored when exporting to JPG > > Hi Dylan, > > "Dylan Browne" <[EMAIL PROTECTED]> wrote on 04/11/2006 07:12:20 > AM: > > > So Im guessing the stylesheet is not being found now? > > org.w3c.dom.DOMException: Null Document reference: Invalid CSS document. > > Correct, most likely Batik can't find your CSS style sheet. Commonly > this is cause by using a relative reference when a Document without a > knowable base url is used. In this case the problem is that you haven't > properly set the xlink:href attribute: > > > > css.setAttributeNS(null, "xlink:href", > > "http://localhost:7001/SVGWeb/style.css"); > > This needs to be: > String XLINK_NAMESPACE_URI = "http://www.w3.org/1999/xlink"; > css.setAttributeNS(XLINK_NAMESPACE_URI , "xlink:href", > "http://localhost:7001/SVGWeb/style.css"); > > Assuming you have an HTTP server on local host at port 7001 > with a document at that location... > > > > -----Original Message----- > > From: Dylan Browne [mailto:[EMAIL PROTECTED] > > Sent: 11 April 2006 11:13 > > To: [email protected] > > Subject: CSS ignored when exporting to JPG > > > > Hi, > > > > I have a problem when attempting to rasterize an SVG document created > using > > the Batik DOM classes. It looks like the rasterize process is not > picking up > > the stylesheet I am importing. > > > > I include my stylesheet like this (this works fine in so far as > rendering > > SVG in the browser goes): > > > > ProcessingInstruction pi = null; > > // import the stylesheet > > pi = doc.createProcessingInstruction("xml-stylesheet", > Config.CSS); > > doc.insertBefore(pi, doc.getDocumentElement()); > > > > When I am creating my JPG, I use the following code. This does generate > the > > jpg, but any elements which are styled are not picked up so I end up > with a > > largely black image with a few shapes visible: > > > > public void streamSVGIntoImageFormat(SVGDocument doc) { > > try { > > // create a JPEG transcoder > > JPEGTranscoder t = new JPEGTranscoder(); > > // set the transcoding hints > > t.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, new > Float(.8)); > > // create the transcoder input > > TranscoderInput input = new TranscoderInput(doc); > > // create the transcoder output > > OutputStream ostream = new FileOutputStream("c:\\out.jpg"); > > TranscoderOutput output = new TranscoderOutput(ostream); > > // save the image > > t.transcode(input, output); > > // flush and close the stream then exit > > ostream.flush(); > > ostream.close(); > > } catch (Exception e) { > > e.printStackTrace(); > > } > > } > > > > Does this look like an issue with how I import my stylesheet, or an > issue > > with how I am calling the Transcoder code? > > > > Thanks in advance for any help, > > > > Kind regards, > > > > Dylan > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
