|
|
|
Recherche Full-Texte ss windows ds Documents Xls, Ppt, et Pdf
Last modified:
03/22/2006 10:25 PM
VERSIONS PRESENTES
* Zope : unreleased version, python
2.3.4, win32
* Python : Version 2.3.4 (#53, May 25
2004, 21:17:02)
* CPS : 3.2.4-1
*
Windows : XP
* Word / Excel / PowerPoint : 2000
* Acrobat Reader : 6.0
1°) Principe
Le principe utilisé est issu de diverses consultations (parfois très
tardives) sur les forums, et grâce à l'aide de certains internautes dont
Hervé PATRICK, et surtout de HeudUser JesaisPo, que je remercie
chaleureusement, et sans qui je n'aurais jamais eu l'idée d'aller "gratter"
dans les scripts.
Le principe retenu est-il bon ? Incomplet ? Je ne sais pas, quoiqu'il en
soit il fonctionne.
Il faut dans un premier temps, récupérer les outils externes necessaires et
les installer (Plugs-in et Binairies), puis adapter les scripts Python afin
qu'ils prennent en compte à la fois l'environnement Windows et les outils
externes.
La démarche est la même pour les xls, ppt, et pdf. Seuls les documents au
format word, sont traités differemment (voire l'autre doc à ce sujet).
2°) Plugs-in et Binairies
nécessaires
Pour traiter les Xls/Ppt il faut récupérer le plug-in : Xlhtml
Pour traiter les Pdf (en Html), il faut récupérer le plug-in :
PdftoHtml
Pour traiter les Pdf (en Txt), il faut récupérer le plug-in :
XPdf
XlHtml
Pour en savoir plus sur ce Plug-in, connectez-vous à
http://chicago.sourceforge.net/xlhtml/
Pour l'installer, sélectionner la Binary pour Windows à
http://chicago.sourceforge.net/xlhtml/binarys.html
Le fichier
d’installation à récupérer est xlHtml-Win32-040.zip. Installer-le sur votre machine. (L'emplacement importe
peu).
PdfToHtml
Pour en savoir plus sur ce Plug-in, connectez-vous à http://pdftohtml.sourceforge.net/
Pour l'installer (window binary)
lconnectez-vous à http://sourceforge.net/projects/pdftohtml/
Le fichier d'installation à télécharger est : pdftohtml-0.36-win32.zip.
Installer-le sur votre machine. (L'emplacement importe peu).
Lisez le fichier Readme.
XPdf
XPdf e st un visualiseur de fichiers PDF en
Txt.
Pour en savoir plus, connectez-vous à http://www.foolabs.com
Pour l'installer connectez-vous à http://www.foolabs.com/xpdf/download.html
Le fichier d'installation
à récupérer est : xpdf-3.00pl3-win32.Zip
Repérez les Binairies
installées
Une fois
ces installations effectuées, repérez les binairies et notez leurs adresses
:
- Pour Xpdf
: recherchez XPdf .exe
- Pour Xlhtml : recherchez Xlhtml.exe (Xls en Html) et
Ppthtml.exe (Ppt en Html)
- Pour PdfToHtml :
recherchez PdttoHtml.exe
A titre d'exemple voici les adresses obtenues sur mon poste une fois
l'installation effectuée :
- Pour Xpdf:
"C:\CPS3.2.4-1_Pluggins\Xpdf\xpdf-3.00pl3-win32"
- Pour Xlhtml :
"C:\CPS3.2.4-1_Pluggins
\xlhtml \xlHtml-Win32-040"
- Pour PdftoHtml
: "C:\CPS3.2.4-1_Pluggins\pdftohtml\pdftohtml-0.36-win32\pdftohtml-0.36"
Et maintenant, modifions les scripts !
3°) Modification des scripts
Modifier les scripts, c'est les adapter à Windows (ce qui n'est pas fait
une fois CPS installé), et leur donner l'adresse des binaries récupérees et
installées.
Les scripts que j'ai modifié sont les suivants :
- ppt_to_html.py (binary
ppttohtml.exe)
- xls_to_html.py (binary xlhtml.exe)
- pdf_to_html.py (binary
pdftohtml.exe)
- pdf_to_text.py (binary pdftotext.exe)
Ils se trouvent pour ce qui me concerne, dans le répertoire :
"C:\CPS3.2.4-1\Data\Products\PortalTransforms"
Première modification
Elle consiste à rechercher dans ces 4 scripts, le mot-clé binaryName et remplacer le
texte qui suit, par les nouvelles adresses des binaries (adresses que vous
venez de noter précédemment)
Attention ! les "/" deviennent des
"\\"
Ainsi voici pour ce qui me concerne les
modifications effectuées dans les 4 scripts :
#Modify by MPN 2005-5-31
#binaryName = "ppthtml"
binaryName =
"C:\\CPS3.2.4-1_Pluggins\\xlhtml\\xlHtml-Win32-040\\ppthtml.exe"
#Modify by MPN 2005-5-31
#binaryName = "xlhtml"
binaryName =
"C:\\CPS3.2.4-1_Pluggins\\xlhtml\\xlHtml-Win32-040\\xlhtml.exe"
#Modify by MPN 2005-5-31
#binaryName = "pdftohtml"
binaryName =
"C:\\CPS3.2.4-1_Pluggins\\pdftohtml\\pdftohtml-0.36-win32\\pdftohtml-0.36pdftohtml\\pdftohtml.exe"
#Modify by MPN 2005-5-31
#binaryName = "pdftotext"
binaryName =
"C:\\CPS3.2.4-1_Pluggins\\Xpdf\\xpdf-3.00pl3-win32\\pdftotext.exe"
Deuxième modification
Elle consiste à rechercher le message suivant : " FIXME: windows
users..." et à adapter le script qui suit à Windows.
Personnellement je me suis fais aidé par une personne familière de Python
qui se reconnaitra (merci à CGD). Mais vous pouvez récupérer ses bouts de
code tels quels, ils fonctionnent :
Attention ! les "/"
deviennent des "\\"
Note : le PPt_to_html.py et le Xls_to_html.py ont été modifiés le
10/6/2005, suite aux remarques d'un internaute (qui se reconnaitra
également).
def invokeCommand(self, tmpdir, fullname):
# FIXME: windows users...
# FIXME: character
encoding
#basename =
sansext(fullname)
#cmd = 'cd "%s" && %s %s
"%s" 1> "%s.html" 2>error_log' % (
# tmpdir,
self.binary, self.binaryArgs, fullname, basename)
#os.system(cmd)
#try:
# htmlfile =
open("%s/%s.html" % (tmpdir, basename), 'r')
# html =
htmlfile.read()
#
htmlfile.close()
# # Remove
filename inserted by ppthtml
# html =
re.sub("<TITLE>(.*?)</TITLE>", "", html)
# XXX: qualify this except
!
#except:
# try:
# return open("%s/error_log" %
tmpdir, 'r').read()
#
except:
# return ''
#return html
# --------------------
# Modify by CGD/MPN
2005-5-31
# Modify by CGD 2005-6-10
basename =
sansext(fullname)
cmd = '%s %s %s > %s\\%s.html'
% (self.binary, self.binaryArgs, fullname,
tmpdir, basename)
os.system(cmd)
try:
htmlfile
= open("%s\\%s.html" % (tmpdir, basename))
html =
htmlfile.read()
htmlfile.close()
# Remove
filename inserted by ppthtml
html =
re.sub("<TITLE>(.*?)</TITLE>", "", html)
# XXX: qualify this except
!
except:
try:
return open("%s\\error_log" % tmpdir, 'r').read()
except:
return ''
return html
# --------------------
def invokeCommand(self, tmpdir,
fullname):
# FIXME: windows
users...
#basename =
sansext(fullname)
#cmd = 'cd "%s" && %s %s
"%s" 1> "%s.html" 2>error_log' % (
# tmpdir,
self.binary, self.binaryArgs, fullname, basename)
#system(cmd)
#try:
# htmlfile =
open("%s/%s.html" % (tmpdir, basename), 'r')
# html =
htmlfile.read()
#
htmlfile.close()
#except:
# try:
# return open("%s/error_log" %
tmpdir, 'r').read()
#
except:
# return ''
#return html
# --------------------
# Modify by MPN/CGD
2005-5-31
# Modify by CGD 2005-6-10
basename =
sansext(fullname)
cmd = '%s %s %s > %s\\%s.html'
% (self.binary, self.binaryArgs, fullname, tmpdir,
basename)
system(cmd)
try:
htmlfile
= open("%s\\%s.html" % (tmpdir, basename))
html =
htmlfile.read()
htmlfile.close()
except:
try:
return open("%s\\error_log" % tmpdir, 'r').read()
except:
return ''
return html
# --------------------
def invokeCommand(self, tmpdir, fullname):
# FIXME: windows users...
# Adapatation à Windows by CGD/MPN 2005-5-31
#cmd = 'cd "%s" && %s %s
"%s" 2>error_log 1>/dev/null' % (
# tmpdir,
self.binary, self.binaryArgs, fullname)
#system(cmd)
#try:
# htmlfile =
open("%s/%s.html" % (tmpdir, sansext(fullname)), 'r')
# html =
htmlfile.read()
#
htmlfile.close()
#except:
# try:
# return open("%s/error_log" %
tmpdir, 'r').read()
#
except:
# return ''
#return html
cmd = '%s %s %s' % (self.binary,
self.binaryArgs, fullname)
system(cmd)
try:
htmlfile
= "%s\\%s.html" % (tmpdir, sansext(fullname))
html =
open(htmlfile).read()
htmlfile.close()
except:
try:
return open("%s\\error_log" % tmpdir, 'r').read()
except:
return ''
return html
def invokeCommand(self, tmpdir, fullname):
# FIXME: windows users...
# Adapatation à Windows by
CGD/MPN 2005-5-31
#textfile = "%s/%s.txt" %
(tmpdir, sansext(fullname))
#cmd = 'cd "%s" && %s
"%s" "%s" 2>error_log 1>/dev/null' % (
# tmpdir,
self.binary, fullname, textfile)
#system(cmd)
#try:
# text =
open(textfile).read()
#except:
# try:
# return open("%s/error_log" %
tmpdir, 'r').read()
#
except:
# return ''
#return text
textfile = "%s\\%s.txt" %
(tmpdir, sansext(fullname))
cmd = '%s %s %s' % (self.binary,
fullname, textfile)
system(cmd)
try:
text =
open(textfile).read()
except:
try:
return open("%s\\error_log" % tmpdir, 'r').read()
except:
return ''
return text
Procédons maintenant à l'installation définitive via la ZMI.
4°) Mise en Place définitive
Destruction du "Portal_Transforms"
existant
Utiliser la ZMI (cochez-le puis delete)
Regénération du nouveau
"Portal_Transforms"
Utiliser la ZMI.
Clickez sur "Portal_transforms_installer" et sur l'onglet "Test".
Contrôler le "Portal_Transforms" : il devrait cette fois porter les lignes
suivantes :
"pdf_to_html"
"xls_to_html"
"ppt_to_html"
"ppt_to_text"
Cas des documents créés
Si vous avez créé votre document dans "Portal_Types", vérifiez bien que :
- la pièce jointe déclarée dans "Portal_Schemas" porte bien la coche
"Indexed by searchable Text"
- la pièce jointe dans "Portal_layout" porte bien dans le champ "Allowed
file suffixes" les formats souhaités : ".Pdf .Xls .Ppt .Txt"
Tests (contrôle du Preview)
Créer ou utiliser un document avec possibilité de joindre un fichier
attaché.
Indiquer l'adresse de votre document au format souhaité, et chargez-le.
Enregistrer le document.
Contrôler que votre document porte bien le "Preview" (Prévisualisation)
comme dans l'image ci-dessus.
Ci c'est le cas votre recherche va fonctionner : vérifiez par l'option
"Recherche" que vous trouvez bien un mot contenu dans votre document (que
vous aurez préalablement recherché "of course").
Bon courage.
N'hésitez pas à me laisser vos commentaires et retours d'expérience.
|
|