[poppler] poppler/qt4/src: poppler-document.cc, 1.27,
1.28 poppler-private.h, 1.16, 1.17 poppler-qt4.h, 1.42, 1.43
Albert Astals Cid
aacid at kemper.freedesktop.org
Sat Jan 13 09:56:10 PST 2007
Update of /cvs/poppler/poppler/qt4/src
In directory kemper:/tmp/cvs-serv29307/qt4/src
Modified Files:
poppler-document.cc poppler-private.h poppler-qt4.h
Log Message:
* poppler/Stream.h:
* poppler/Stream.cc: Add MemStream::setNeedFree method
* qt4/src/poppler-document.cc:
* qt4/src/poppler-private.h:
* qt4/src/poppler-qt4.h: Add Document::loadFromData method
Index: poppler-document.cc
===================================================================
RCS file: /cvs/poppler/poppler/qt4/src/poppler-document.cc,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -d -r1.27 -r1.28
--- poppler-document.cc 30 Dec 2006 14:50:25 -0000 1.27
+++ poppler-document.cc 13 Jan 2007 17:56:07 -0000 1.28
@@ -49,6 +49,28 @@
DocumentData *doc = new DocumentData(new GooString(QFile::encodeName(filePath)),
new GooString(ownerPassword.data()),
new GooString(userPassword.data()));
+ return checkDocument(doc);
+ }
+
+ Document *Document::loadFromData(const QByteArray &fileContents,
+ const QByteArray &ownerPassword,
+ const QByteArray &userPassword)
+ {
+ // create stream
+ Object obj;
+ obj.initNull();
+ char *data = (char*)gmalloc(fileContents.length());
+ memcpy(data, fileContents.data(), fileContents.length() * sizeof(char));
+ MemStream *str = new MemStream(data, 0, fileContents.length(), &obj);
+ str->setNeedFree(true);
+ DocumentData *doc = new DocumentData(str,
+ new GooString(ownerPassword.data()),
+ new GooString(userPassword.data()));
+ return checkDocument(doc);
+ }
+
+ Document *Document::checkDocument(DocumentData *doc)
+ {
Document *pdoc;
if (doc->doc.isOk() || doc->doc.getErrorCode() == errEncrypted) {
pdoc = new Document(doc);
Index: poppler-private.h
===================================================================
RCS file: /cvs/poppler/poppler/qt4/src/poppler-private.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- poppler-private.h 4 Jan 2007 19:10:16 -0000 1.16
+++ poppler-private.h 13 Jan 2007 17:56:07 -0000 1.17
@@ -66,9 +66,22 @@
class DocumentData {
public:
DocumentData(GooString *filePath, GooString *ownerPassword, GooString *userPassword) :
- doc(filePath, ownerPassword, userPassword), m_fontInfoScanner(0),
- m_backend(Document::SplashBackend), m_outputDev(0)
+ doc(filePath, ownerPassword, userPassword)
+ {
+ init(ownerPassword, userPassword);
+ }
+
+ DocumentData(MemStream *str, GooString *ownerPassword, GooString *userPassword) :
+ doc(str, ownerPassword, userPassword)
{
+ init(ownerPassword, userPassword);
+ }
+
+ void init(GooString *ownerPassword, GooString *userPassword)
+ {
+ m_fontInfoScanner = 0;
+ m_backend = Document::SplashBackend;
+ m_outputDev = 0;
paperColor = Qt::white;
// It might be more appropriate to delete these in PDFDoc
delete ownerPassword;
Index: poppler-qt4.h
===================================================================
RCS file: /cvs/poppler/poppler/qt4/src/poppler-qt4.h,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -d -r1.42 -r1.43
--- poppler-qt4.h 30 Dec 2006 14:50:25 -0000 1.42
+++ poppler-qt4.h 13 Jan 2007 17:56:07 -0000 1.43
@@ -441,6 +441,20 @@
static Document *load(const QString & filePath,
const QByteArray &ownerPassword=QByteArray(),
const QByteArray &userPassword=QByteArray());
+
+ /**
+ Load the document from memory
+
+ \param fileContents the file contents. They are copied so there is no need
+ to keep the byte array around for the full life time of
+ the document.
+
+ \warning The application owns the pointer to Document, and this should
+ be deleted when no longer required.
+ */
+ static Document *loadFromData(const QByteArray &fileContents,
+ const QByteArray &ownerPassword=QByteArray(),
+ const QByteArray &userPassword=QByteArray());
/**
Get a specified Page
@@ -721,7 +735,9 @@
private:
DocumentData *m_doc;
+
Document(DocumentData *dataA);
+ static Document *checkDocument(DocumentData *doc);
};
/**
More information about the poppler
mailing list