extraire le contenu doc office 2003
Bonjour
Je travaille sur une appli. web intranet avec laquelle je cherche des occurences de mots dans des documents en divers formats : PDF, Office 2007 (open xml .docx) et Office 97-2003 (.doc).
Pour cela je crée 3 fonctions qui extrait tous le contenu du document dans une chaîne de caractère.
J'ai déjà fait les 2 premières :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
private String GetPdfContent(String pdfFile)
{
// utilisation de PdfBox
PDDocument pdfDoc = PDDocument.load(pdfFile);
PDFTextStripper pdfStripper = new PDFTextStripper();
return pdfStripper.getText(pdfDoc);
}
private String GetDocxContent(String docxFile)
{
// extraction zip du fichier document.xml dans l'archive ".docx"
// et extraction du contenu des balises "<w:t />"
String content = string.Empty;
using (ZipInputStream zipStream = new ZipInputStream(File.OpenRead(docxFile))) {
ZipEntry theEntry;
while ((theEntry = zipStream.GetNextEntry()) != null) {
if (theEntry.IsFile) {
if (theEntry.Name.Equals("word/document.xml")) {
int size = 8192;
byte[] buffer = new byte[size];
int bytesRead;
StringBuilder xmlStr = new StringBuilder();
while ((bytesRead = zipStream.Read(buffer, 0, size)) > 0) {
xmlStr.Append(UTF8Encoding.UTF8.GetString(buffer, 0, bytesRead));
}
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlStr.ToString());
XmlNodeList list = xmlDoc.GetElementsByTagName("w:t");
foreach (XmlNode node in list) {
content += node.InnerText;
}
}
}
}
}
return content;
}
private String GetDocContent(String docFile)
{
return String.Empty;
} |
C'est pas du Java mais du C#. En fait j'ai pas trouvé de forum spécialisé documents en .NET. Mais comme j'utilise déjà PdfBox avec IKVM (runtime java en .NET) je suis ouvert à toute solutions en Java.
Je bloque pour les .doc, car a priori la seule solution est d'utiliser les libs microsoft office qui permettent d'ouvrir MSWord, de copier le contenu du doc dans le presse-papier et de le récupérer dans ma chaîne de caractère.
Pour une appli serveur, ça fait un peu lourd.
Ma question est précise :
Est-ce qu'il est possible d'utiliser des classes issues de open-office pour extraire le contenu des documents ".doc" ?
Si quelqu'un connait l'API OOO, un coup de pouce sera plus que bienvenu.
Merci d'avance.
Rémi