def compile(wd,args): print "changing working directory to %s" % wd System.setProperty("user.dir",wd); print args outstream = ByteArrayOutputStream() errstream = ByteArrayOutputStream() System.setOut(PrintStream(outstream)) System.setErr(PrintStream(errstream)) try: Tom.exec(config + args) except: pass return str((outstream.toString(),errstream.toString()))
def crawl(site, trm , depth, linksfile): from java.net import URL from org.w3c.tidy import Tidy pattern = re.compile('href="/wiki/(.*?)"') f = open(linksfile, 'a+') #try: if depth < MAX_DEPTH: print 'crawling [%s]...' % trm, print >> f, '[%s]' % trm td = Tidy() td.setXmlOut(1) u = URL(site + trm) input = BufferedInputStream(u.openStream()) output = ByteArrayOutputStream() #tidy.setInputEncoding("UTF8") #tidy.setOutputEncoding("UTF8") td.parse(input, output) content = output.toString() hits = pattern.findall(content) for hit in hits: if hit.find(":") == -1: print >> f, hit print 'done.' print >> f, '' for hit in hits: if hit.find(":") == -1: crawl(site, hit, depth + 1, linksfile) #except: # print "wrong" f.close()
def getPayloadContent(self): format = self.__metadata.getField("dc_format") slash = self.__oid.rfind("/") pid = self.__oid[slash+1:] print " *** payload content, format: %s, pid: %s *** " % (format, pid) contentStr = "" if format.startswith("text"): contentStr = "<pre>" payload = self.__storage.getPayload(self.__oid, pid) str = StringWriter() IOUtils.copy(payload.getInputStream(), str) contentStr += str.toString() contentStr += "</pre>" elif format.find("vnd.ms-")>-1 or format.find("vnd.oasis.opendocument.")>-1: #get the html version if exist.... pid = pid[:pid.find(".")] + ".htm" payload = self.__storage.getPayload(self.__oid, pid) saxReader = SAXReader() document = saxReader.read(payload.getInputStream()) slideNode = document.selectSingleNode("//div[@class='body']") #linkNodes = slideNode.selectNodes("//img") #contentStr = slideNode.asXML(); # encode character entities correctly out = ByteArrayOutputStream() format = OutputFormat.createPrettyPrint() format.setSuppressDeclaration(True) writer = XMLWriter(out, format) writer.write(slideNode) writer.close() contentStr = out.toString("UTF-8") return contentStr
def showImgWithLegend(width=None,height=None): """ This function shows the image and legend from current IDV window while in GUI mode. Optional arguments are width and height in pixels, they currently default to 600 and 400""" from java.util import Base64 ##only in java8 from javax.imageio import ImageIO from java.io import ByteArrayOutputStream from ucar.unidata.ui.ImageUtils import resize,toBufferedImage import java import java.awt.Robot as Robot import java.awt.Rectangle as Rectangle import java.awt.Toolkit as Toolkit from ucar.unidata.util import Misc VM=idv.getViewManager() VMC=VM.getContents() VMCC=VMC.getComponent(1) # the view and legend ; 0 is left most part of view window with controls for perspective views siz=VMCC.getSize() loc= VMCC.getLocationOnScreen() gc= VMCC.getGraphicsConfiguration() loc.x -= gc.getBounds().x loc.y -= gc.getBounds().y robotx=Robot(gc.getDevice()) VM.toFront() Misc.sleep(250) img = robotx.createScreenCapture(Rectangle(loc.x, loc.y,siz.width, siz.height)) if width != None and height != None: img=toBufferedImage(resize(img,width,height)); bos=ByteArrayOutputStream(); ImageIO.write(img, "png", Base64.getEncoder().wrap(bos)); data = bos.toString("UTF-8"); return {"display":"image","data":data}
def tostring(element_or_tree, encoding=None, method='xml', xml_declaration=None, pretty_print=False, with_tail=True, standalone=None, doctype=None, exclusive=False, with_comments=True, inclusive_ns_prefixes=None): if isinstance(element_or_tree, _ElementTree): source = DOMSource(element_or_tree._dom_doc) else: source = DOMSource(element_or_tree._dom_element) outputstream = ByteArrayOutputStream() result = StreamResult(outputstream) transformer = transformfac.newTransformer() if xml_declaration: transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, 'no') else: transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, 'yes') if pretty_print: transformer.setOutputProperty(OutputKeys.INDENT, 'yes') else: transformer.setOutputProperty(OutputKeys.INDENT, 'no') transformer.transform(source, result) if encoding is None: encoding = 'ascii' return outputstream.toString(encoding)
def showImgWithFullWindow(width=None, height=None): """ This function shows the image from current IDV window while in GUI mode. optional arguments are width and height in pixels, they currently default to 600 and 400""" from java.util import Base64 ##only in java8 from javax.imageio import ImageIO from java.io import ByteArrayOutputStream from ucar.unidata.ui.ImageUtils import resize, toBufferedImage import java import java.awt.Robot as Robot import java.awt.Rectangle as Rectangle import java.awt.Toolkit as Toolkit from ucar.unidata.util import Misc VM = idv.getViewManager() myframe = VM.getDisplayWindow().getComponent() robotx = Robot(myframe.getGraphicsConfiguration().getDevice()) VM.toFront() #robotx.delay(250) Misc.sleep(350) pause() img = robotx.createScreenCapture( Rectangle(myframe.getX(), myframe.getY(), myframe.getWidth(), myframe.getHeight())) if width != None and height != None: img = toBufferedImage(resize(img, width, height)) bos = ByteArrayOutputStream() ImageIO.write(img, "png", Base64.getEncoder().wrap(bos)) data = bos.toString("UTF-8") return {"display": "image", "data": data}
def handle(self): try: raw_xml = self.rfile.readline().strip() marc_xmlfile = NamedTemporaryFile(delete=False) marc_xmlfile.write(raw_xml) marc_xmlfile.close() print(marc_xmlfile.name) dynamic_context = saxon.query.DynamicQueryContext(CONFIG) ## xml_doc = CONFIG.buildDocument( ## StreamSource(ByteArrayInputStream(raw_xml))) ## dynamic_context.setContextItem(xml_doc) dynamic_context.setParameter( "baseuri", INFO.get('base_uri', 'http://catalog/')) dynamic_context.setParameter( "marcxmluri", os.path.normpath(marc_xmlfile.name).replace("\\", "/")) dynamic_context.setParameter("serialization", "rdfxml") output_stream = ByteArrayOutputStream() result = StreamResult(output_stream) print("Before query") COMPLIED_XQUERY.run(dynamic_context, result, None) self.wfile.write(output_stream.toString().encode('ascii', errors='ignore')) os.remove(marc_xmlfile.name) except: self.wfile.write("Error processing MARC XML:\n\t{}".format(sys.exc_info()[0]))
def showImgWithLegend(width=None, height=None): """ This function shows the image and legend from current IDV window while in GUI mode. Optional arguments are width and height in pixels, they currently default to 600 and 400""" from java.util import Base64 ##only in java8 from javax.imageio import ImageIO from java.io import ByteArrayOutputStream from ucar.unidata.ui.ImageUtils import resize, toBufferedImage import java import java.awt.Robot as Robot import java.awt.Rectangle as Rectangle import java.awt.Toolkit as Toolkit from ucar.unidata.util import Misc VM = idv.getViewManager() VMC = VM.getContents() VMCC = VMC.getComponent( 1 ) # the view and legend ; 0 is left most part of view window with controls for perspective views siz = VMCC.getSize() loc = VMCC.getLocationOnScreen() gc = VMCC.getGraphicsConfiguration() loc.x -= gc.getBounds().x loc.y -= gc.getBounds().y robotx = Robot(gc.getDevice()) VM.toFront() Misc.sleep(250) img = robotx.createScreenCapture( Rectangle(loc.x, loc.y, siz.width, siz.height)) if width != None and height != None: img = toBufferedImage(resize(img, width, height)) bos = ByteArrayOutputStream() ImageIO.write(img, "png", Base64.getEncoder().wrap(bos)) data = bos.toString("UTF-8") return {"display": "image", "data": data}
def pageContent(self): # Object ID oid = self.metadata.get("id") # Determine MIME Type mimeType = "Unknown" mimeList = self.metadata.getList("dc_format") if mimeList is not None and not mimeList.isEmpty(): mimeType = mimeList.get(0) # The HTML payload is the real object, display in a frame because we # have no idea what kind of object it is. if mimeType == "text/html": objectPath = "http://%s:%s%s/%s/download/%s/" % \ (self.req.serverName, self.serverPort, self.contextPath, self.portalId, oid) objectLink = '<a class="iframe-link-alt" href="%s">View outside the frame</a>' % objectPath objectFrame = '<iframe class="iframe-preview" src="%s"></iframe>' % objectPath return objectLink + "<br/>" + objectFrame # We are just rendering a HTML preview else: preview = self.metadata.get("preview") try: object = Services.getStorage().getObject(oid) payload = object.getPayload(preview) out = ByteArrayOutputStream() IOUtils.copy(payload.open(), out) payload.close() return out.toString("UTF-8") except StorageException, e: return
def showImgWithFullWindow(width=None,height=None): """ This function shows the image from current IDV window while in GUI mode. optional arguments are width and height in pixels, they currently default to 600 and 400""" from java.util import Base64 ##only in java8 from javax.imageio import ImageIO from java.io import ByteArrayOutputStream from ucar.unidata.ui.ImageUtils import resize,toBufferedImage import java import java.awt.Robot as Robot import java.awt.Rectangle as Rectangle import java.awt.Toolkit as Toolkit from ucar.unidata.util import Misc VM=idv.getViewManager() myframe=VM.getDisplayWindow().getComponent() robotx = Robot(myframe.getGraphicsConfiguration().getDevice()) VM.toFront(); #robotx.delay(250) Misc.sleep(350) pause() img=robotx.createScreenCapture(Rectangle( myframe.getX(),myframe.getY(),myframe.getWidth(),myframe.getHeight())) if width != None and height != None: img=toBufferedImage(resize(img,width,height)); bos=ByteArrayOutputStream(); ImageIO.write(img, "png", Base64.getEncoder().wrap(bos)); data = bos.toString("UTF-8"); return {"display":"image","data":data}
def __load(self, oid): template = """<div class="title" /><div class="page-toc" /><div class="body"><div>%s</div></div>""" print "Loading HTML preview for %s..." % oid if oid == "blank": return template % "<p>This page intentionally left blank.</p>" else: object = Services.getStorage().getObject(oid) # get preview payload or source if no preview pid = self.__getPreviewPid(object) payload = object.getPayload(pid) mimeType = payload.getContentType() print "pid=%s mimeType=%s" % (pid, mimeType) isHtml = mimeType in ["text/html", "application/xhtml+xml"] if isHtml or mimeType.startswith("text/"): out = ByteArrayOutputStream() IOUtils.copy(payload.open(), out) content = out.toString("UTF-8") if content.find('class="body"'): ## assumes ICE content return content elif isHtml: return template % content elif mimeType == "text/plain": return template % ('<pre>%s</pre>' % content) else: return content elif mimeType.startswith("image/"): return template % ('<div rel="%s"><img src="%s" /></div>' % (oid, pid)) else: return '<a href="%s" rel="%s">%s</a>' % (oid, mimeType, pid) payload.close() object.close()
def parseFFmpeg(self, parent): if parent is not None: object = parent.getObject() if object is not None: payload = None try: payload = object.getPayload("ffmpeg.info") # Stream the content out to string out = ByteArrayOutputStream() IOUtils.copy(payload.open(), out) payload.close() self.__ffmpegRaw = out.toString("UTF-8") out.close() payload.close() # And parse it self.__ffmpegData = JsonSimple(self.__ffmpegRaw) if self.__ffmpegData is None: return False else: self.__ffmpegOutputs = self.__ffmpegData.getJsonSimpleMap(["outputs"]) return True except: if payload is not None: payload.close() return False
def parseFFmpeg(self, parent): if parent is not None: object = parent.getObject() if object is not None: payload = None try: payload = object.getPayload("ffmpeg.info") # Stream the content out to string out = ByteArrayOutputStream() IOUtils.copy(payload.open(), out) payload.close() self.__ffmpegRaw = out.toString("UTF-8") out.close() payload.close() # And parse it jsonData = JsonConfigHelper(self.__ffmpegRaw) if jsonData is None: return False else: self.__ffmpegData = jsonData.getJsonMap("/outputs") return True except: if payload is not None: payload.close() return False
def export(self, exportType): exportQuery = "%s:%s" % (self.facetField, self.facetFieldValue) outputType = "text/%s; charset=UTF-8" % type responseHeader = "attachment; filename=%s.%s" % (self.facetFieldValue, exportType) try: out = ByteArrayOutputStream() recnumreq = SearchRequest(exportQuery) recnumreq.setParam("fl","create_timestamp") recnumreq.setParam("rows", "0") self.indexer.search(recnumreq, out) recnumres = SolrResult(ByteArrayInputStream(out.toByteArray())) self.__rowsFoundSolr = "%s" % recnumres.getNumFound() except: self.errorMsg = "Export query failure. The issue has been logged (%s - %s)." % (sys.exc_info()[0], sys.exc_info()[1]) self.log.error("Export query threw an exception (package type was %s): %s - %s" % (self.facetFieldValue, sys.exc_info()[0], sys.exc_info()[1])) return out = ByteArrayOutputStream() req = SearchRequest(exportQuery) req.setParam("wt", exportType) req.setParam("rows", self.__rowsFoundSolr) self.indexer.search(req, out) self.response.setHeader("Content-Disposition", responseHeader) writer = self.response.getPrintWriter(outputType) writer.println(out.toString("UTF-8")) writer.close()
def tostring(element_or_tree, encoding=None, method='xml', xml_declaration=None, pretty_print=False, with_tail=True, standalone=None, doctype=None, exclusive=False, with_comments=True, inclusive_ns_prefixes=None): if isinstance(element_or_tree, _ElementTree): source = DOMSource(element_or_tree._dom_doc) else: source = DOMSource(element_or_tree._dom_element) outputstream = ByteArrayOutputStream() result = StreamResult(outputstream) transformer = transformfac.newTransformer() if xml_declaration: transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, 'no') else: transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, 'yes') if pretty_print: transformer.setOutputProperty(OutputKeys.INDENT, 'yes') else: transformer.setOutputProperty(OutputKeys.INDENT, 'no') transformer.transform(source, result) if encoding is None: encoding = 'ascii' return outputstream.toString(encoding)
def getPayloadContent(self): mimeType = self.__mimeType print " * single.py: payload content mimeType=%s" % mimeType contentStr = "" if mimeType.startswith("text/"): if mimeType == "text/html": contentStr = '<iframe class="iframe-preview" src="%s/%s/download/%s"></iframe>' % ( contextPath, portalId, self.__oid, ) else: pid = self.__oid[self.__oid.rfind("/") + 1 :] payload = self.__storage.getPayload(self.__oid, pid) print " * single.py: pid=%s payload=%s" % (pid, payload) if payload is not None: sw = StringWriter() sw.write("<pre>") IOUtils.copy(payload.getInputStream(), sw) sw.write("</pre>") sw.flush() contentStr = sw.toString() elif ( mimeType == "application/pdf" or mimeType.find("vnd.ms") > -1 or mimeType.find("vnd.oasis.opendocument.") > -1 ): # get the html version if exist... pid = os.path.splitext(self.__pid)[0] + ".htm" print " * single.py: pid=%s" % pid # contentStr = '<iframe class="iframe-preview" src="%s/%s/download/%s/%s"></iframe>' % \ # (contextPath, portalId, self.__oid, pid) payload = self.__storage.getPayload(self.__oid, pid) saxReader = SAXReader(Boolean.parseBoolean("false")) try: document = saxReader.read(payload.getInputStream()) slideNode = document.selectSingleNode("//*[local-name()='body']") # linkNodes = slideNode.selectNodes("//img") # contentStr = slideNode.asXML(); # encode character entities correctly slideNode.setName("div") out = ByteArrayOutputStream() format = OutputFormat.createPrettyPrint() format.setSuppressDeclaration(True) format.setExpandEmptyElements(True) writer = XMLWriter(out, format) writer.write(slideNode) writer.close() contentStr = out.toString("UTF-8") except: traceback.print_exc() contentStr = '<p class="error">No preview available</p>' elif mimeType.startswith("image/"): src = "%s/%s" % (self.__oid, self.__pid) contentStr = ( '<a class="image" href="%(src)s" style="max-width:98%%">' '<img src="%(src)s" style="max-width:100%%" /></a>' % {"src": self.__pid} ) return contentStr
def __call__(self, _input, profile_run=False, **kw): nsmap = dict(xsl='http://www.w3.org/1999/XSL/Transform') output_method = 'xml' output_encoding = 'utf-8' nodes = self.xsl_tree.xpath('xsl:output/@method', namespaces=nsmap) if len(nodes) > 0: output_method = nodes[0] nodes = self.xsl_tree.xpath('xsl:output/@encoding', namespaces=nsmap) if len(nodes) > 0: output_encoding = nodes[0] #print tostring(_input) if isinstance(_input, _ElementTree): doc_source = DOMSource(_input._dom_doc) elif isinstance(_input, _Element): # Xalan-J 2.7.1 does not support a DOMSource from an Element # so we build new document dom_doc = builder.newDocument() dom_root = dom_doc.importNode(_input._dom_element, True) dom_doc.appendChild(dom_root) doc_source = DOMSource(dom_doc) else: raise NotImplementedError() if output_method in ('xml', 'html'): # TODO: for testing outputstream = ByteArrayOutputStream() result = StreamResult(outputstream) self.transformer.transform(doc_source, result) bytes = outputstream.toByteArray() inputstream = ByteArrayInputStream(bytes) try: dom_doc = builder.parse(inputstream) except: import sys sys.stderr.write(bytes.tostring()) raise result_tree = _ElementTree(dom_doc) return result_tree result = DOMResult() self.transformer.transform(doc_source, result) dom_doc = result.getNode() result_tree = _ElementTree(dom_doc) #print tostring(result_tree) return result_tree else: outputstream = ByteArrayOutputStream() result = StreamResult(outputstream) self.transformer.transform(doc_source, result) resultdoc = builder.newDocument() resulttree = _XSLTResultTree(resultdoc) resulttree._text = outputstream.toString(output_encoding) return resulttree
def __call__(self, _input, profile_run=False, **kw): nsmap = dict(xsl='http://www.w3.org/1999/XSL/Transform') output_method = 'xml' output_encoding = 'utf-8' nodes = self.xsl_tree.xpath('xsl:output/@method', namespaces=nsmap) if len(nodes) > 0: output_method = nodes[0] nodes = self.xsl_tree.xpath('xsl:output/@encoding', namespaces=nsmap) if len(nodes) > 0: output_encoding = nodes[0] #print tostring(_input) if isinstance(_input, _ElementTree): doc_source = DOMSource(_input._dom_doc) elif isinstance(_input, _Element): # Xalan-J 2.7.1 does not support a DOMSource from an Element # so we build new document dom_doc = builder.newDocument() dom_root = dom_doc.importNode(_input._dom_element, True) dom_doc.appendChild(dom_root) doc_source = DOMSource(dom_doc) else: raise NotImplementedError() if output_method in ('xml', 'html'): # TODO: for testing outputstream = ByteArrayOutputStream() result = StreamResult(outputstream) self.transformer.transform(doc_source, result) bytes = outputstream.toByteArray() inputstream = ByteArrayInputStream(bytes) try: dom_doc = builder.parse(inputstream) except: import sys sys.stderr.write(bytes.tostring()) raise result_tree = _ElementTree(dom_doc) return result_tree result = DOMResult() self.transformer.transform(doc_source, result) dom_doc = result.getNode() result_tree = _ElementTree(dom_doc) #print tostring(result_tree) return result_tree else: outputstream = ByteArrayOutputStream() result = StreamResult(outputstream) self.transformer.transform(doc_source, result) resultdoc = builder.newDocument() resulttree = _XSLTResultTree(resultdoc) resulttree._text = outputstream.toString(output_encoding) return resulttree
def BufferedImgToNotebook(img): from java.io import ByteArrayOutputStream from java.util import Base64 ##only in java8 from javax.imageio import ImageIO bos=ByteArrayOutputStream(); ImageIO.write(img, "png", Base64.getEncoder().wrap(bos)); data = bos.toString("UTF-8"); return {"display":"image","data":data}
def BufferedImgToNotebook(img): from java.io import ByteArrayOutputStream from java.util import Base64 ##only in java8 from javax.imageio import ImageIO bos = ByteArrayOutputStream() ImageIO.write(img, "png", Base64.getEncoder().wrap(bos)) data = bos.toString("UTF-8") return {"display": "image", "data": data}
def mouseClicked(self, s, g) : x = JOptionPane.showInputDialog(self.client_state, "Type your text here:") if x is None: x = '' bout = ByteArrayOutputStream() eout = EscapingOutputStream(bout) eout.write(x) y = bout.toString() return self._getmetadata() + "|" + "(%d,%d)|%s " % (s.x, s.y, y)
def getStreamData(stream): baos = ByteArrayOutputStream() lenRead = 0 while lenRead >= 0: bytes = jarray.zeros(4096, 'b') lenRead = stream.read(bytes, 0, 4096) if lenRead > 0: baos.write(bytes, 0, lenRead) stream.close(); return baos.toString()
def retrieveBody(delivery): if delivery.properties.contentEncoding == "DEF": compressed = Base64.decodeBase64(String(delivery.body).getBytes("UTF-8")) inflated = ByteArrayOutputStream() inflatedOs = InflaterOutputStream(inflated) inflatedOs.write(compressed) inflatedOs.close() return inflated.toString("UTF-8") else: return String(delivery.body, "UTF-8")
def getPayloadContent(self): mimeType = self.__mimeType print " * detail.py: payload content mimeType=%s" % mimeType contentStr = "" if mimeType == "application/octet-stream": dcFormat = self.__json.get("response/docs/dc_format") if dcFormat is not None: dcFormat = dcFormat[1:-1] print dcFormat, mimeType if dcFormat != mimeType: return "<div><em>(File not found)</em></div>" else: return "<div><em>(Binary file)</em></div>" elif mimeType.startswith("text/"): if mimeType == "text/html": contentStr = '<iframe class="iframe-preview" src="%s/%s/download/%s"></iframe>' % \ (contextPath, portalId, self.__oid) else: pid = self.__oid[self.__oid.rfind("/")+1:] payload = self.__storage.getPayload(self.__oid, pid) #print " * detail.py: pid=%s payload=%s" % (pid, payload) if payload is not None: sw = StringWriter() sw.write("<pre>") IOUtils.copy(payload.getInputStream(), sw) sw.write("</pre>") sw.flush() contentStr = sw.toString() elif mimeType == "application/pdf" or mimeType.find("vnd.ms")>-1 or mimeType.find("vnd.oasis.opendocument.")>-1: # get the html version if exist... pid = os.path.splitext(self.__pid)[0] + ".htm" print " * detail.py: pid=%s" % pid #contentStr = '<iframe class="iframe-preview" src="%s/%s/download/%s/%s"></iframe>' % \ # (contextPath, portalId, self.__oid, pid) payload = self.__storage.getPayload(self.__oid, pid) saxReader = SAXReader(Boolean.parseBoolean("false")) try: document = saxReader.read(payload.getInputStream()) slideNode = document.selectSingleNode("//*[local-name()='body']") #linkNodes = slideNode.selectNodes("//img") #contentStr = slideNode.asXML(); # encode character entities correctly slideNode.setName("div") out = ByteArrayOutputStream() format = OutputFormat.createPrettyPrint() format.setSuppressDeclaration(True) format.setExpandEmptyElements(True) writer = XMLWriter(out, format) writer.write(slideNode) writer.close() contentStr = out.toString("UTF-8") except: traceback.print_exc() contentStr = "<p class=\"error\">No preview available</p>" return contentStr
def retrieveBody(delivery): if delivery.properties.contentEncoding == "DEF": compressed = Base64.decodeBase64( String(delivery.body).getBytes("UTF-8")) inflated = ByteArrayOutputStream() inflatedOs = InflaterOutputStream(inflated) inflatedOs.write(compressed) inflatedOs.close() return inflated.toString("UTF-8") else: return String(delivery.body, "UTF-8")
def asmify(clazz, skipdebug=False): """ Print the ASM java code calls necessary to construct the clazz on the fly. Works only for classes loaded by the Fiji startup ClassLoader from .class files. See org.objectweb.asm.util.Printer.main method at: https://gitlab.ow2.org/asm/asm/blob/master/asm-util/src/main/java/org/objectweb/asm/util/Printer.java#L1225 To see the ASM java code calls for an arbitrary .class file, run instead: $ java --classpath .:/path/to/Fiji.app/jars/asm-5.0.4.jar:/path/to/Fiji.app/jars/asm-util.4.0.jar org.objectweb.asm.util.ASMfier <package>/classname.class """ baos = ByteArrayOutputStream() # expands size as needed tcv = TraceClassVisitor(None, ASMifier(), PrintWriter(baos)) ClassReader(clazz).accept(tcv, ClassReader.SKIP_DEBUG if skipdebug else 0) return baos.toString()
def getPayloadContent(self): mimeType = self.__mimeType print " * single.py: payload content mimeType=%s" % mimeType contentStr = "" if mimeType.startswith("text/"): if mimeType == "text/html": contentStr = '<iframe class="iframe-preview" src="%s/download/%s"></iframe>' % \ (portalPath, self.__oid) else: pid = self.__oid[self.__oid.rfind("/") + 1:] payload = self.__storage.getPayload(self.__oid, pid) print " * single.py: pid=%s payload=%s" % (pid, payload) if payload is not None: sw = StringWriter() sw.write("<pre>") IOUtils.copy(payload.getInputStream(), sw) sw.write("</pre>") sw.flush() contentStr = sw.toString() elif mimeType == "application/pdf" or mimeType.find( "vnd.ms") > -1 or mimeType.find( "vnd.oasis.opendocument.") > -1: # get the html version if exist... pid = os.path.splitext(self.__pid)[0] + ".htm" print " * single.py: pid=%s" % pid #contentStr = '<iframe class="iframe-preview" src="%s/download/%s/%s"></iframe>' % \ # (portalPath, self.__oid, pid) payload = self.__storage.getPayload(self.__oid, pid) saxReader = SAXReader(Boolean.parseBoolean("false")) try: document = saxReader.read(payload.getInputStream()) slideNode = document.selectSingleNode( "//*[local-name()='body']") #linkNodes = slideNode.selectNodes("//img") #contentStr = slideNode.asXML(); # encode character entities correctly slideNode.setName("div") out = ByteArrayOutputStream() format = OutputFormat.createPrettyPrint() format.setSuppressDeclaration(True) format.setExpandEmptyElements(True) writer = XMLWriter(out, format) writer.write(slideNode) writer.close() contentStr = out.toString("UTF-8") except: traceback.print_exc() contentStr = "<p class=\"error\">No preview available</p>" elif mimeType.startswith("image/"): src = "%s/%s" % (self.__oid, self.__pid) contentStr = '<a class="image" href="%(src)s" style="max-width:98%%">' \ '<img src="%(src)s" style="max-width:100%%" /></a>' % { "src": self.__pid } return contentStr
def __tidy(self, content): tidy = Tidy() tidy.setIndentAttributes(False) tidy.setIndentContent(False) tidy.setPrintBodyOnly(True) tidy.setSmartIndent(False) tidy.setWraplen(0) tidy.setXHTML(False) tidy.setNumEntities(True) out = ByteArrayOutputStream() doc = tidy.parseDOM(ByteArrayInputStream(String(content).getBytes()), out) content = out.toString("UTF-8") return content, doc
def getPdf(htmlString): converter = CYaHPConverter() encoder = ByteArrayOutputStream() out = MimeUtility.encode(encoder, "base64"); #out = ByteArrayOutputStream() properties = HashMap() headerFooterList = ArrayList() properties.put(IHtmlToPdfTransformer.PDF_RENDERER_CLASS, IHtmlToPdfTransformer.FLYINGSAUCER_PDF_RENDERER) converter.convertToPdf(htmlString, IHtmlToPdfTransformer.A4P, headerFooterList, 'https://reflexsystems.com/', out, properties) out.close() #return out.toString() return encoder.toString()
def showImg(width=400,height=300): """ This function shows the image from current IDV frame, optional arguments are width and height in pixels, they currently default to 400 and 300""" from java.util import Base64 ##only in java8 from javax.imageio import ImageIO from java.io import ByteArrayOutputStream from ucar.unidata.ui.ImageUtils import resize,toBufferedImage pause() img=getImage() img=toBufferedImage(resize(img,width,height)); bos=ByteArrayOutputStream(); ImageIO.write(img, "png", Base64.getEncoder().wrap(bos)); data = bos.toString("UTF-8"); return {"display":"image","data":data}
def __tidy(self, content): tidy = Tidy() tidy.setIndentAttributes(False) tidy.setIndentContent(False) tidy.setPrintBodyOnly(True) tidy.setSmartIndent(False) tidy.setWraplen(0) tidy.setXHTML(True) tidy.setNumEntities(True) tidy.setShowWarnings(False) tidy.setQuiet(True) out = ByteArrayOutputStream() tidy.parse(IOUtils.toInputStream(content, "UTF-8"), out) return out.toString("UTF-8")
def showImg(width=None,height=None): """ This function shows the image from current IDV frame, optional arguments are width and height in pixels, they currently default to 400 and 300""" from java.util import Base64 ##only in java8 from javax.imageio import ImageIO from java.io import ByteArrayOutputStream from ucar.unidata.ui.ImageUtils import resize,toBufferedImage pause() #imgx=getImage() currently not working with new changes to idv img=idv.getViewManager().getMaster().getImage(True) if width != None and height != None: img=toBufferedImage(resize(img,width,height)); bos=ByteArrayOutputStream(); ImageIO.write(img, "png", Base64.getEncoder().wrap(bos)); data = bos.toString("UTF-8"); return {"display":"image","data":data}
def showImg(width=None, height=None): """ This function shows the image from current IDV frame, optional arguments are width and height in pixels, they currently default to 400 and 300""" from java.util import Base64 ##only in java8 from javax.imageio import ImageIO from java.io import ByteArrayOutputStream from ucar.unidata.ui.ImageUtils import resize, toBufferedImage pause() #imgx=getImage() currently not working with new changes to idv img = idv.getViewManager().getMaster().getImage(True) if width != None and height != None: img = toBufferedImage(resize(img, width, height)) bos = ByteArrayOutputStream() ImageIO.write(img, "png", Base64.getEncoder().wrap(bos)) data = bos.toString("UTF-8") return {"display": "image", "data": data}
def pageContent(self): # Object ID oid = self.metadata.getFirst("id") # Determine MIME Type mimeType = "Unknown" mimeList = self.metadata.getList("dc_format") if mimeList is not None and not mimeList.isEmpty(): mimeType = mimeList.get(0) # The HTML payload is the real object, display in a frame because we # have no idea what kind of object it is. if mimeType == "text/html": urlBase = self.config.getString(None, ["urlBase"]) if urlBase is None: "http://%s:%s%s/" % (self.req.serverName, self.serverPort, self.contextPath) objectPath = "%s%s/download/%s/" % (urlBase, self.portalId, oid) return self.frameContent(objectPath) # We are rendering a HTML preview... else: preview = self.metadata.getFirst("preview") # ... of an IMS package or zipped website. Treat as per html above. if mimeType == "application/zip": urlBase = self.config.getString(None, ["urlBase"]) if urlBase is None: "http://%s:%s%s/" % (self.req.serverName, self.serverPort, self.contextPath) objectPath = "%s%s/download/%s/%s" % (urlBase, self.portalId, oid, preview) return self.frameContent(objectPath) # ... of an HTML excerpt, such as an ICE rendition. Render in page. else: try: object = Services.getStorage().getObject(oid) payload = object.getPayload(preview) out = ByteArrayOutputStream() IOUtils.copy(payload.open(), out) payload.close() return out.toString("UTF-8") except StorageException, e: return
def __getPayloadContent(self, oid, pid): print " * combined.py: oid='%s' pid='%s'" % (oid, pid) payload = self.__storage.getPayload(oid, pid) if payload is None: return "<div>Error: No content for '%s'</div>" % oid mimeType = payload.contentType contentStr = "" if mimeType.startswith("text/"): if mimeType == "text/html": contentStr = '<iframe class="iframe-preview" src="%s/download/%s"></iframe>' % \ (portalPath, oid) else: sw = StringWriter() sw.write("<pre>") IOUtils.copy(payload.getInputStream(), sw) sw.write("</pre>") sw.flush() contentStr = sw.toString() elif mimeType == "application/pdf" or mimeType.find("vnd.ms")>-1 or mimeType.find("vnd.oasis.opendocument.")>-1: # get the html version if exist... pid = os.path.splitext(pid)[0] + ".htm" print " * combined.py: pid=%s" % pid payload = self.__storage.getPayload(oid, pid) saxReader = SAXReader(False) try: document = saxReader.read(payload.getInputStream()) slideNode = document.selectSingleNode("//*[local-name()='body']") slideNode.setName("div") out = ByteArrayOutputStream() format = OutputFormat.createPrettyPrint() format.setSuppressDeclaration(True) format.setExpandEmptyElements(True) writer = XMLWriter(out, format) writer.write(slideNode) writer.close() contentStr = out.toString("UTF-8") except: traceback.print_exc() contentStr = "<p class=\"error\">No preview available</p>" elif mimeType.startswith("image/"): src = "%s/%s" % (oid, pid) contentStr = '<a class="image" href="%(src)s" style="max-width:98%%">' \ '<img src="%(src)s" style="max-width:100%%" /></a>' % { "src": pid } return contentStr
def getPayloadContent(self): mimeType = self.__mimeType print " * detail.py: payload content mimeType=%s" % mimeType contentStr = "" if mimeType.startswith("text/"): if mimeType == "text/html": contentStr = '<iframe class="iframe-preview" src="%s/%s/download/%s"></iframe>' % \ (contextPath, portalId, self.__oid) else: pid = self.__oid[self.__oid.rfind("/")+1:] payload = self.__storage.getPayload(self.__oid, pid) print " * detail.py: pid=%s payload=%s" % (pid, payload) if payload is not None: sw = StringWriter() sw.write("<pre>") IOUtils.copy(payload.getInputStream(), sw) sw.write("</pre>") sw.flush() contentStr = sw.toString() elif mimeType == "application/pdf" or mimeType.find("vnd")>-1 or mimeType.find("vnd.oasis.opendocument.")>-1: # get the html version if exist... pid = os.path.splitext(self.__pid)[0] + ".htm" print " * detail.py: pid=%s" % pid #contentStr = '<iframe class="iframe-preview" src="%s/%s/download/%s/%s"></iframe>' % \ # (contextPath, portalId, self.__oid, pid) payload = self.__storage.getPayload(self.__oid, pid) saxReader = SAXReader(Boolean.parseBoolean("false")) try: document = saxReader.read(payload.getInputStream()) except: traceback.print_exc() #slideNode = document.selectSingleNode("//div[@class='body']") slideNode = document.selectSingleNode("//*[local-name()='body']") #linkNodes = slideNode.selectNodes("//img") #contentStr = slideNode.asXML(); # encode character entities correctly out = ByteArrayOutputStream() format = OutputFormat.createPrettyPrint() format.setSuppressDeclaration(True) writer = XMLWriter(out, format) writer.write(slideNode) writer.close() contentStr = out.toString("UTF-8") return contentStr
class JavaCapturer(object): def __init__(self, stdout=True): if stdout: self._original = System.out self._set_stream = System.setOut else: self._original = System.err self._set_stream = System.setErr self._bytes = ByteArrayOutputStream() self._stream = PrintStream(self._bytes, False, "UTF-8") self._set_stream(self._stream) def release(self): # Original stream must be restored before closing the current self._set_stream(self._original) self._stream.close() output = self._bytes.toString("UTF-8") self._bytes.reset() return output
class JavaCapturer(object): def __init__(self, stdout=True): if stdout: self._original = System.out self._set_stream = System.setOut else: self._original = System.err self._set_stream = System.setErr self._bytes = ByteArrayOutputStream() self._stream = PrintStream(self._bytes, False, 'UTF-8') self._set_stream(self._stream) def release(self): # Original stream must be restored before closing the current self._set_stream(self._original) self._stream.close() output = self._bytes.toString('UTF-8') self._bytes.reset() return output
def cleanData(data): from org.w3c.tidy import Tidy tidy = Tidy() tidy.setXHTML(True) tidy.setInputEncoding("UTF-8") tidy.setOutputEncoding("UTF-8") tidy.setMakeClean(False) tidy.setDropEmptyParas(False) tidy.setPrintBodyOnly(True) tidy.setQuoteAmpersand(True) tidy.setTrimEmptyElements(False) inputStream = ByteArrayInputStream(String(data).getBytes("UTF-8")) outputStream = ByteArrayOutputStream() tidy.parseDOM(inputStream, outputStream) return outputStream.toString("UTF-8")
def pageContent(self): # Object ID oid = self.metadata.getFirst("id") # Determine MIME Type mimeType = "Unknown" mimeList = self.metadata.getList("dc_format") if mimeList is not None and not mimeList.isEmpty(): mimeType = mimeList.get(0) # The HTML payload is the real object, display in a frame because we # have no idea what kind of object it is. if mimeType == "text/html": urlBase = self.config.getString(None, ["urlBase"]) if urlBase is None: "http://%s:%s%s/" % (self.req.serverName, self.serverPort, self.contextPath) objectPath = "%s%s/download/%s/" % (urlBase, self.portalId, oid) return self.frameContent(objectPath) # We are rendering a HTML preview... else: preview = self.metadata.getFirst("preview") # ... of an IMS package or zipped website. Treat as per html above. if mimeType == "application/zip": urlBase = self.config.getString(None, ["urlBase"]) if urlBase is None: "http://%s:%s%s/" % (self.req.serverName, self.serverPort, self.contextPath) objectPath = "%s%s/download/%s/%s" % (urlBase, self.portalId, oid, preview) return self.frameContent(objectPath) # ... of an HTML excerpt, such as an ICE rendition. Render in page. else: try: object = Services.getStorage().getObject(oid) payload = object.getPayload(preview) out = ByteArrayOutputStream() IOUtils.copy(payload.open(), out) payload.close() return out.toString("UTF-8") except StorageException, e: return
def _transform(self): try: input = FileInputStream(self.xsl) xslSource = StreamSource(input) xslTemplate = TransformerFactory.newInstance().newTemplates(xslSource); transformer = xslTemplate.newTransformer() output = ByteArrayOutputStream() result = StreamResult(output) source = StreamSource(FileInputStream(self.sourceXml)) transformer.transform(source, result) f = open(self.targetXml, 'w') f.write(output.toString()) return True except: print ("Something went wrong when trying to transform the XML. Please be sure jython is properly installed and configured.") return False
def __getContent(self, oid): slash = oid.rfind("/") pid = os.path.splitext(oid[slash+1:])[0] + ".htm" payload = Services.storage.getObject(oid).getPayload(pid) tidy = Tidy() tidy.setIndentAttributes(False) tidy.setIndentContent(False) tidy.setPrintBodyOnly(True) tidy.setSmartIndent(False) tidy.setWraplen(0) tidy.setXHTML(False) tidy.setNumEntities(True) out = ByteArrayOutputStream() try: doc = tidy.parseDOM(payload.getInputStream(), out) content = out.toString("UTF-8") content = self.__processMedia(oid, doc, content) #print "[\n%s\n]" % content except Exception, e: print " * blog.py: Failed to get content: %s" % e.getMessage()
def getSourceSample(self, id, limit): # Get source payload object = self.services.getStorage().getObject(id) if object is not None: payload = object.getPayload(object.getSourceId()) # Read to a string if payload is not None: out = ByteArrayOutputStream() IOUtils.copy(payload.open(), out) payload.close() string = out.toString("UTF-8") # Return response if string is not None: if (len(string)) > limit: return string[0:limit] + "..." else: return string else: return ""
def getSourceSample(self, id, limit): # Get source payload object = self.services.getStorage().getObject(id) if object is not None: payload = object.getPayload(object.getSourceId()) # Read to a string if payload is not None: out = ByteArrayOutputStream() IOUtils.copy(payload.open(), out) payload.close() string = out.toString("UTF-8") # Return response if string is not None: if (len(string)) > limit: return string[0:limit] + "..." else: return string else: return ""
def alt_handle(self): try: raw_xml = self.rfile.readline().strip() marc_xmlfile = NamedTemporaryFile(delete=False) marc_xmlfile.write(raw_xml) marc_xmlfile.close() base_uri = INFO.get('base_uri','http://catalog/') args = [INFO.get('saxon_xqy'), 'marcxmluri={}'.format( os.path.normpath(marc_xmlfile.name).replace("\\", "/")), 'baseuri={}'.format(INFO.get('base_uri', 'http://catalog/')), 'serialization=rdfxml'] query = saxon.Query() output_stream = ByteArrayOutputStream() System.setOut(PrintStream(output_stream)) query.main(args) self.wfile.write(output_stream.toString().encode('ascii', errors='ignore')) os.remove(marc_xmlfile.name) except: self.wfile.write("Error processing MARC XML:\n\t{}".format(sys.exc_info()[0]))
def getContent(self, oid, metadata): # Get the object object = Services.getStorage().getObject(oid) if object is None: return "" # Get the preview/source payload pid = metadata.getFirst("preview") if pid is None: pid = object.getSourceId() if pid is None: return "" payload = object.getPayload(object.getSourceId()) if payload is None: return "" # Stream the content out to string out = ByteArrayOutputStream() IOUtils.copy(payload.open(), out) payload.close() string = out.toString("UTF-8") return "<pre>" + StringEscapeUtils.escapeHtml(string) + "</pre>"
class VTLKernel(Kernel): implementation = 'VTL Engine' implementation_version = '${python.package.version}' language = 'VTL' language_version = '2.1' language_info = { 'name': 'VTL', 'mimetype': 'text/x-vtl', 'file_extension': '.vtl', } banner = "${project.description}" queryPattern = re.compile(r"^\s*\?\s*(\S+)\s*$") def __init__(self, *args, **kwargs): super(VTLKernel, self).__init__(*args, **kwargs) startJVM() from java.lang import System from java.io import ByteArrayOutputStream from java.io import PrintStream self.baos = ByteArrayOutputStream() ps = PrintStream(self.baos) System.setOut(ps) System.setErr(ps) it = JPackage('it') self.VTLSession = it.bancaditalia.oss.vtl.config.ConfigurationManager.getDefault().createSession() def sendLog(self): self.send_response(self.iopub_socket, 'stream', { 'name':'Log', 'text':str(self.baos.toString()) }) self.baos.reset() def sendData(self, alias, value): if isinstance(value, JPackage('it').bancaditalia.oss.vtl.model.data.DataSet): html = convertDataSet(value) else: html = convertScalar(alias, value) self.send_response(self.iopub_socket, 'display_data', { 'data': { 'text/html': html }, 'metadata': {}, 'transient': {} }) def do_execute(self, code, silent, store_history=True, user_expressions=None, allow_stdin=False): from java.lang import Exception matcher = self.queryPattern.fullmatch(code) try: user_expressions = {} if matcher is not None: name = matcher.group(1) self.sendData(name, self.VTLSession.resolve(name)) self.sendLog() else: statements = self.VTLSession.addStatements(code).getWorkspace().getRules() self.sendLog() self.VTLSession.compile() self.sendLog() for statement in statements: name = statement.getId() self.sendData(name, self.VTLSession.resolve(name)) self.sendLog() user_expressions = { str(statement.getId()): str(statement.getExpression().toString()) for statement in statements } response = { 'status': 'ok', 'execution_count': self.execution_count, 'user_expressions': user_expressions } except Exception as ex: ex.printStackTrace() self.sendLog() traceback = [str(tr.toString()) for tr in ex.getStackTrace()] while ex.getCause() != None: ex = ex.getCause() traceback.append("Caused by " + str(ex.getClass().getName()) + ": " + str(ex.getMessage())) traceback.append([str(tr.toString()) for tr in ex.getStackTrace()]) response = { 'status' : 'error', 'ename' : str(ex.getClass().getName()), 'evalue' : str(ex.getMessage()), 'traceback' : traceback } return response def do_shutdown(self, restart): if restart: if not jpype.isJVMStarted(): startJVM() self.VTLSession = JPackage('it').bancaditalia.oss.vtl.config.ConfigurationManager.getDefault().createSession() else: jpype.shutdownJVM()
def __createEpub(self): title = self.__manifest.getString(None, "title") self.vc("response").setHeader( "Content-Disposition", "attachment; filename=%s.epub" % urllib.quote(title)) out = self.vc("response").getOutputStream("application/epub+zip") zipOutputStream = ZipOutputStream(out) #save mimetype... and the rest of standard files in epub zipOutputStream.putNextEntry(ZipEntry("mimetype")) epubMimetypeStream = self.__getResourceAsStream("/epub/mimetype") IOUtils.copy(epubMimetypeStream, zipOutputStream) zipOutputStream.closeEntry() zipOutputStream.putNextEntry(ZipEntry("META-INF/container.xml")) epubContainerStream = self.__getResourceAsStream("/epub/container.xml") IOUtils.copy(epubContainerStream, zipOutputStream) zipOutputStream.closeEntry() zipOutputStream.putNextEntry(ZipEntry("OEBPS/epub.css")) epubcss = self.__getResourceAsStream("/epub/epub.css") IOUtils.copy(epubcss, zipOutputStream) zipOutputStream.closeEntry() #### Creating toc.ncx #### tocXml = ElementTree.Element( "ncx", { "version": "2005-1", "xml:lang": "en", "xmlns": "http://www.daisy.org/z3986/2005/ncx/" }) headNode = ElementTree.Element("head") tocXml.append(headNode) headNode.append( ElementTree.Element("meta", { "name": "dtb:uid", "content": "1" })) headNode.append( ElementTree.Element("meta", { "name": "dtb:depth", "content": "1" })) headNode.append( ElementTree.Element("meta", { "name": "dtb:totalPageCount", "content": "1" })) headNode.append( ElementTree.Element("meta", { "name": "dtb:maxPageNumber", "content": "1" })) headNode.append( ElementTree.Element("meta", { "name": "dtb:generator", "content": "ICE v2" })) #docTitle docTitle = ElementTree.Element("docTitle") textNode = ElementTree.Element("text") textNode.text = title docTitle.append(textNode) tocXml.append(docTitle) #docAuthor docAuthor = ElementTree.Element("docAuthor") textNode = ElementTree.Element("text") textNode.text = "ICE v2" docAuthor.append(textNode) tocXml.append(docAuthor) #navMap navMap = ElementTree.Element("navMap") tocXml.append(navMap) #### Creating content.opf #### contentXml = ElementTree.Element( "package", { "version": "2.0", "xmlns": "http://www.idpf.org/2007/opf", "unique-identifier": "BookId" }) metadataNode = ElementTree.Element( "metadata", { "xmlns:dc": "http://purl.org/dc/elements/1.1/", "xmlns:opf": "http://www.idpf.org/2007/opf" }) contentXml.append(metadataNode) #metadata information metadata = ElementTree.Element("dc:title") metadata.text = title metadataNode.append(metadata) metadata = ElementTree.Element("dc:language") metadata.text = "en-AU" metadataNode.append(metadata) metadata = ElementTree.Element("dc:creator", {"opf:role": "aut"}) metadata.text = "ICE" metadataNode.append(metadata) metadata = ElementTree.Element("dc:publisher") metadata.text = "University of Southern Queensland" metadataNode.append(metadata) metadata = ElementTree.Element("dc:identifier", {"id": "BookId"}) metadata.text = title metadataNode.append(metadata) #manifest manifest = ElementTree.Element("manifest") contentXml.append(manifest) spine = ElementTree.Element("spine", {"toc": "ncx"}) contentXml.append(spine) item = ElementTree.Element("item", { "id": "ncx", "href": "toc.ncx", "media-type": "text/xml" }) manifest.append(item) css = ElementTree.Element("item", { "id": "style", "href": "epub.css", "media-type": "text/css" }) manifest.append(css) count = 1 for itemHash in self.__orderedItem: id, title, htmlFileName, payloadDict, isImage = self.__itemRefDict[ itemHash] for payloadId in payloadDict: payload, payloadType = payloadDict[payloadId] if isinstance(payload, Payload): payloadId = payloadId.lower() zipEntryId = payloadId.replace(" ", "_").replace("\\", "/") if payloadType == "application/xhtml+xml": zipOutputStream.putNextEntry( ZipEntry("OEBPS/%s" % zipEntryId)) ##process the html.... saxReader = SAXReader(False) try: saxDoc = saxReader.read(payload.open()) payload.close() # ## remove class or style nodes # classOrStyleNodes = saxDoc.selectNodes("//@class | //@style ") # for classOrStyleNode in classOrStyleNodes: # node = classOrStyleNode # if classOrStyleNode.getParent(): # node = classOrStyleNode.getParent() # if node.getQualifiedName() == "img": # attr = node.attribute(QName("class")) # attr = node.attribute(QName("class")) # if attr: # node.remove(attr) # attr = node.attribute(QName("style")) # if attr: # node.remove(attr) ## remove name in a tags ahrefs = saxDoc.selectNodes( "//*[local-name()='a' and @name!='']") for a in ahrefs: attr = a.attribute(QName("name")) if attr: a.remove(attr) ## fix images src name.... replace space with underscore and all lower case imgs = saxDoc.selectNodes( "//*[local-name()='img' and contains(@src, '_files')]" ) for img in imgs: srcAttr = img.attribute(QName("src")) if srcAttr: src = srcAttr.getValue() #hash the sourcename filepath, filename = os.path.split(src) filename, ext = os.path.splitext(filename) filename = hashlib.md5( filename).hexdigest() src = os.path.join( filepath.lower().replace(" ", "_"), "node-%s%s" % (filename, ext)) img.addAttribute(QName("src"), src.replace(" ", "_")) bodyNode = saxDoc.selectSingleNode( "//*[local-name()='div' and @class='body']") bodyNode.setName("div") out = ByteArrayOutputStream() format = OutputFormat.createPrettyPrint() format.setSuppressDeclaration(True) writer = XMLWriter(out, format) writer.write(bodyNode) writer.flush() contentStr = out.toString("UTF-8") htmlString = """<?xml version="1.0" encoding="UTF-8"?> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>%s</title> <link rel="stylesheet" href="epub.css"/> </head><body>%s</body></html>""" htmlString = htmlString % (title, contentStr) self.__copyString(htmlString, zipOutputStream) includeFile = False except: traceback.print_exc() else: #images.... zipOutputStream.putNextEntry( ZipEntry("OEBPS/%s" % zipEntryId)) IOUtils.copy(payload.open(), zipOutputStream) payload.close() zipOutputStream.closeEntry() else: zipOutputStream.putNextEntry( ZipEntry("OEBPS/%s" % zipEntryId)) IOUtils.copy(payload, zipOutputStream) zipOutputStream.closeEntry() itemNode = ElementTree.Element("item", { "media-type": payloadType, "href": zipEntryId }) if payloadId == htmlFileName.lower(): itemNode.set("id", itemHash) else: itemNode.set("id", payloadId.replace("/", "_")) manifest.append(itemNode) if not isImage: navPoint = ElementTree.Element( "navPoint", { "class": "chapter", "id": "%s" % itemHash, "playOrder": "%s" % count }) else: navPoint = ElementTree.Element( "navPoint", { "class": "chapter", "id": "%s" % htmlFileName, "playOrder": "%s" % count }) navMap.append(navPoint) navLabel = ElementTree.Element("navLabel") navPoint.append(navLabel) textNode = ElementTree.Element("text") textNode.text = title navLabel.append(textNode) content = ElementTree.Element("content") navPoint.append(content) content.set("src", htmlFileName) count += 1 itemRefNode = ElementTree.Element("itemref") spine.append(itemRefNode) itemRefNode.set("idref", itemHash) #saving content.opf... zipOutputStream.putNextEntry(ZipEntry("OEBPS/content.opf")) self.__copyString(ElementTree.tostring(contentXml), zipOutputStream) zipOutputStream.closeEntry() #saving toc.ncx zipOutputStream.putNextEntry(ZipEntry("OEBPS/toc.ncx")) self.__copyString(ElementTree.tostring(tocXml), zipOutputStream) zipOutputStream.closeEntry() zipOutputStream.close()