Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Temas relacionados > Redes
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #7  
Antiguo 07-09-2012
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
En principio, recordemos que un archivo .doc/.docx/.odt, etc... no es mas que un paquete con mas archivos en su interior que definen el contenido y estructura del documento, entonces, si podemos desempaquetar ese archivo y manipular su contenido seremos los dioses del universo ...ah no, creo que ya me pasé.

Así que, como el .doc y .docx son formatos cerrados, porqué no convertirlos a un .odt (automatizado, claro) o similar y buscar el contenido allí. Revisando el código de loook podemos ver esto:
Código:
def processFile(self, filename, query):
  suffix = self.getSuffix(filename)
  try:
    # Handle OpenOffice.org files:
    if suffix in ('sxw', 'stw',				# OOo 1.x swriter
		    'sxc', 'stc',					# OOo 1.x scalc
		    'sxi', 'sti'					# OOo 1.x simpress
		    'sxg',							# OOo 1.x master document
		    'sxm',							# OOo 1.x formula
		    'sxd', 'std',					# OOo 1.x sdraw
		    'odt', 'ott',					# OOo 2.x swriter
		    'odp', 'otp',					# OOo 2.x simpress
		    'odf',							# OOo 2.x formula
		    'odg', 'otg',					# OOo 2.x sdraw
		    'ods', 'ots'					# OOo 2.x scalc
		    ):
	    zip = zipfile.ZipFile(filename, "r")
	    content = ""
	    docinfo = ""
	    try:
		    # TODO: are all OOo files utf-8?
		    content = unicode(zip.read("content.xml"), 'utf-8')
		    # TODO: is replace_with_space=0 correct?
		    content = self.removeXMLMarkup(content, replace_with_space=0)
		    docinfo = unicode(zip.read("meta.xml"), 'utf-8')
		    docinfo = self.removeXMLMarkup(docinfo, replace_with_space=0)
		    self.ooo_count = self.ooo_count + 1
	    except KeyError, err:
		    print "Warning: %s not found in '%s'" % (err, filename)
		    return None
	    title = ""
	    title_match = re.compile("<dc:title>(.*?)</dc:title>", re.DOTALL|re.IGNORECASE).search(docinfo)
	    if title_match:
		    title = title_match.group(1)
	    if self.match(query, "%s %s" % (content.lower(), docinfo.lower())):
		    return (filename, title)
    
  except zipfile.BadZipfile, err:
    print "Warning: Supposed ZIP file '%s' could not be opened: %s" % (filename, err)
  except IOError, err:
    print "Warning: File '%s' could not be opened: %s" % (filename, err)
  return None
Este código está en python y hace lo que se requiere, extrae el contenido y busca si el patrón de búsqueda se encuentra en el título, contenido o metadata del documento.

No te digo que hagas esto con cada búsqueda, sino que, se me ocurre que al momento de que se carga un nuevo documento al sistema se extraiga el contenido de este y se almacene en una bd o en otro lugar donde se nos simplifique la búsqueda.

Saludos
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
adjuntar documentos de word pabloloustau Conexión con bases de datos 5 04-04-2010 01:13:04
Documentos de word zidfrid C++ Builder 2 05-09-2008 02:17:11
Formatear documentos Word abril0404 Servers 1 27-02-2008 14:23:25
documentos .dot(word) en delphi CARSOFT_AR Varios 2 11-02-2005 17:39:25
documentos word Albano Varios 0 12-01-2005 02:19:38


La franja horaria es GMT +2. Ahora son las 08:38:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi