def test_openoffice(hostname, port): try: helper_util.getServiceManager(hostname, port) return True except Exception, err: print err return False
def _load(self): """Create one document with basic properties refresh argument tells to uno environment to replace dynamic properties of document before conversion """ service_manager = helper_util.getServiceManager( self.hostname, self.port, self.uno_path, self.office_binary_path) desktop = service_manager.createInstance("com.sun.star.frame.Desktop") uno_url = self.systemPathToFileUrl(self.document_url) uno_document = desktop.loadComponentFromURL(uno_url, "_blank", 0, ()) if not uno_document: raise AttributeError("This document can not be loaded or is empty") if self.refresh: # Before converting to expected format, refresh dynamic # value inside document. dispatcher = service_manager.createInstance( "com.sun.star.frame.DispatchHelper") for uno_command in ( 'UpdateFields', 'UpdateAll', 'UpdateInputFields', 'UpdateAllLinks', 'UpdateCharts', ): dispatcher.executeDispatch( uno_document.getCurrentController().getFrame(), '.uno:%s' % uno_command, '', 0, ()) module_manager = service_manager.createInstance( "com.sun.star.frame.ModuleManager") self.document_type = module_manager.identify(uno_document) self.document_loaded = uno_document
def getMetadata(self): """Extract all metadata of the document""" metadata = {} document_info = self.document_loaded.getDocumentInfo() property_list = [prop.Name for prop in document_info.getPropertyValues() \ if prop.Value] for property_name in iter(property_list): property = document_info.getPropertyValue(property_name) if type(property) == UnicodeType: metadata[property_name] = property elif type(property) == InstanceType: if property.typeName == 'com.sun.star.util.DateTime': datetime = "%s/%s/%s %s:%s:%s" % (property.Day, property.Month, property.Year, property.Hours, property.Minutes, property.Seconds) metadata[property_name] = datetime for number in range(document_info.getUserFieldCount()): field_value_str = document_info.getUserFieldValue(number) if field_value_str: fieldname = document_info.getUserFieldName(number) metadata[fieldname] = field_value_str service_manager = helper_util.getServiceManager(self.hostname, self.port, self.uno_path, self.office_binary_path) type_detection = service_manager.createInstance("com.sun.star.document.TypeDetection") uno_file_access = service_manager.createInstance("com.sun.star.ucb.SimpleFileAccess") doc = uno_file_access.openFileRead(self.systemPathToFileUrl(self.document_url)) input_stream = self._createProperty("InputStream", doc) open_new_view = self._createProperty("OpenNewView", True) filter_name = type_detection.queryTypeByDescriptor((input_stream, open_new_view), True)[0] doc.closeInput() metadata['MIMEType'] = mimemapper["mimetype_by_filter_type"].get(filter_name) return metadata
def getMetadata(self): """Extract all metadata of the document""" metadata = {} document_properties = self.document_loaded.getDocumentProperties() user_defined_properties = document_properties.getUserDefinedProperties( ) for container in [document_properties, user_defined_properties]: for property_name in dir(container): if property_name in ('SupportedServiceNames', ): continue property_value = getattr(container, property_name, '') if property_value: if isinstance(property_value, basestring): metadata[property_name] = property_value elif isinstance(property_value, tuple) and isinstance( property_value[0], basestring): metadata[property_name] = property_value else: try: if property_value.typeName == 'com.sun.star.util.DateTime': # It is a local time and we have no timezone information. datetime = "%02d/%02d/%04d %02d:%02d:%02d" % ( property_value.Day, property_value.Month, property_value.Year, property_value.Hours, property_value.Minutes, property_value.Seconds) metadata[property_name] = datetime except AttributeError: pass service_manager = helper_util.getServiceManager( self.hostname, self.port, self.uno_path, self.office_binary_path) type_detection = service_manager.createInstance( "com.sun.star.document.TypeDetection") uno_file_access = service_manager.createInstance( "com.sun.star.ucb.SimpleFileAccess") doc = uno_file_access.openFileRead( self.systemPathToFileUrl(self.document_url)) input_stream = self._createProperty("InputStream", doc) open_new_view = self._createProperty("OpenNewView", True) filter_name = type_detection.queryTypeByDescriptor( (input_stream, open_new_view), True)[0] doc.closeInput() metadata['MIMEType'] = mimemapper["mimetype_by_filter_type"].get( filter_name) return metadata
def getMetadata(self): """Extract all metadata of the document""" metadata = {} document_properties = self.document_loaded.getDocumentProperties() user_defined_properties = document_properties.getUserDefinedProperties() for container in [document_properties, user_defined_properties]: for property_name in dir(container): if property_name in ('SupportedServiceNames',): continue property_value = getattr(container, property_name, '') if property_value: if isinstance(property_value, basestring): metadata[property_name] = property_value elif isinstance(property_value, tuple) and isinstance(property_value[0], basestring): metadata[property_name] = property_value else: try: if property_value.typeName == 'com.sun.star.util.DateTime': # It is a local time and we have no timezone information. datetime = "%02d/%02d/%04d %02d:%02d:%02d" % (property_value.Day, property_value.Month, property_value.Year, property_value.Hours, property_value.Minutes, property_value.Seconds) metadata[property_name] = datetime except AttributeError: pass service_manager = helper_util.getServiceManager(self.hostname, self.port, self.uno_path, self.office_binary_path) type_detection = service_manager.createInstance("com.sun.star.document.TypeDetection") uno_file_access = service_manager.createInstance("com.sun.star.ucb.SimpleFileAccess") doc = uno_file_access.openFileRead(self.systemPathToFileUrl(self.document_url)) input_stream = self._createProperty("InputStream", doc) open_new_view = self._createProperty("OpenNewView", True) filter_name = type_detection.queryTypeByDescriptor((input_stream, open_new_view), True)[0] doc.closeInput() metadata['MIMEType'] = mimemapper["mimetype_by_filter_type"].get(filter_name) return metadata
def getMetadata(self): """Extract all metadata of the document""" metadata = {} document_info = self.document_loaded.getDocumentInfo() property_list = [prop.Name for prop in document_info.getPropertyValues() \ if prop.Value] for property_name in iter(property_list): property = document_info.getPropertyValue(property_name) if type(property) == UnicodeType: metadata[property_name] = property elif type(property) == InstanceType: if property.typeName == 'com.sun.star.util.DateTime': datetime = "%s/%s/%s %s:%s:%s" % ( property.Day, property.Month, property.Year, property.Hours, property.Minutes, property.Seconds) metadata[property_name] = datetime for number in range(document_info.getUserFieldCount()): field_value_str = document_info.getUserFieldValue(number) if field_value_str: fieldname = document_info.getUserFieldName(number) metadata[fieldname] = field_value_str service_manager = helper_util.getServiceManager( self.hostname, self.port, self.uno_path, self.office_binary_path) type_detection = service_manager.createInstance( "com.sun.star.document.TypeDetection") uno_file_access = service_manager.createInstance( "com.sun.star.ucb.SimpleFileAccess") doc = uno_file_access.openFileRead( self.systemPathToFileUrl(self.document_url)) input_stream = self._createProperty("InputStream", doc) open_new_view = self._createProperty("OpenNewView", True) filter_name = type_detection.queryTypeByDescriptor( (input_stream, open_new_view), True)[0] doc.closeInput() metadata['MIMEType'] = mimemapper["mimetype_by_filter_type"].get( filter_name) return metadata
def _load(self): """Create one document with basic properties refresh argument tells to uno environment to replace dynamic properties of document before conversion """ service_manager = helper_util.getServiceManager(self.hostname, self.port, self.uno_path, self.office_binary_path) desktop = service_manager.createInstance("com.sun.star.frame.Desktop") uno_url = self.systemPathToFileUrl(self.document_url) uno_document = desktop.loadComponentFromURL(uno_url, "_blank", 0, ()) if not uno_document: raise AttributeError("This document can not be loaded or is empty") if self.refresh: # Before converting to expected format, refresh dynamic # value inside document. dispatcher = service_manager.createInstance("com.sun.star.frame.DispatchHelper") for uno_command in ('UpdateFields', 'UpdateAll', 'UpdateInputFields', 'UpdateAllLinks', 'UpdateCharts',): dispatcher.executeDispatch(uno_document.getCurrentController().getFrame(), '.uno:%s' % uno_command, '', 0, ()) module_manager = service_manager.createInstance("com.sun.star.frame.ModuleManager") self.document_type = module_manager.identify(uno_document) self.document_loaded = uno_document
def __init__(self, hostname, port, uno_path=None, office_binary_path=None): """ Receives hostname and port from openoffice and create a service manager""" self.service_manager = helper_util.getServiceManager(hostname, port, uno_path, office_binary_path)
def __init__(self, hostname, port, uno_path=None, office_binary_path=None): """ Receives hostname and port from openoffice and create a service manager""" self.service_manager = helper_util.getServiceManager( hostname, port, uno_path, office_binary_path)