-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocumentextractor.cpp
75 lines (61 loc) · 2.11 KB
/
documentextractor.cpp
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/*
* Copyright (c) 2010 Kaushal M <[email protected]>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "documentextractor.h"
#include <QXmlQuery>
#include <QFile>
#include <QDebug>
#include <QDomElement>
#include <QTextStream>
#include <KoStore.h>
documentExtractor::documentExtractor()
{
}
QString documentExtractor::getBody(KoStore *store)
{
qDebug() << "----> documentExtractor::getBody() : Extracting body";
QByteArray content, tmp;
content.append("<?xml version='1.0' encoding='UTF-8'?> <office:document xmlns:office='urn:oasis:names:tc:opendocument:xmlns:office:1.0'>");
store->extractFile("meta.xml",tmp);
tmp.remove(0,38);
content.append(tmp);
tmp.clear();
store->extractFile("styles.xml",tmp);
tmp.remove(0,38);
content.append(tmp);
tmp.clear();
store->extractFile("content.xml", tmp);
tmp.remove(0,38);
content.append(tmp);
tmp.clear();
content.append("</office:document>");
QFile *odf2html = new QFile("/usr/share/freoffice/plugins/odf2html.xsl");
odf2html->open(QFile::ReadOnly);
QXmlQuery query2(QXmlQuery::XSLT20);
query2.setFocus(content);
query2.setQuery(odf2html);
QString html;
query2.evaluateTo(&html);
odf2html->close();
QDomDocument doc;
doc.setContent(html);
QDomElement bodyNode = doc.documentElement().firstChildElement("body");
QString body;
QTextStream ts(&body);
bodyNode.save(ts, 0);
return body;
}