Adapt code to poppler>0.58

presentation
Peter Klausing 9 years ago
parent 30354cd8d5
commit 096a5eca05
  1. 22
      src/pdf/popplerdirect/PdfExport.cpp
  2. 20
      src/pdf/popplerdirect/PdfObjectWriter.cpp
  3. 17
      src/pdf/popplerdirect/PdfRefList.cpp
  4. 5
      src/pdf/popplerdirect/poppler/XojPopplerDocument.cpp

@ -284,8 +284,7 @@ void PdfExport::writeGzStream(Stream* str, GList* replacementList)
{
XOJ_CHECK_TYPE(PdfExport);
Object obj1;
str->getDict()->lookup("Length", &obj1);
Object obj1 = str->getDict()->lookup("Length");
if (!obj1.isInt())
{
g_error("PDFDoc::writeGzStream, no Length in stream dict");
@ -293,7 +292,6 @@ void PdfExport::writeGzStream(Stream* str, GList* replacementList)
}
const int length = obj1.getInt();
obj1.free();
char* buffer = new char[length];
@ -315,8 +313,7 @@ void PdfExport::writePlainStream(Stream* str, GList* replacementList)
{
XOJ_CHECK_TYPE(PdfExport);
Object obj1;
str->getDict()->lookup("Length", &obj1);
Object obj1 = str->getDict()->lookup("Length");
if (!obj1.isInt())
{
g_error("PDFDoc::writePlainStream, no Length in stream dict");
@ -324,7 +321,6 @@ void PdfExport::writePlainStream(Stream* str, GList* replacementList)
}
const int length = obj1.getInt();
obj1.free();
str->unfilteredReset();
@ -475,15 +471,13 @@ bool PdfExport::addPopplerPage(XojPopplerPage* pdf, XojPopplerDocument doc)
}
Object* o = new Object();
page->getContents(o);
Object* o = new Object(page->getContents());
if (o->getType() == objStream)
{
Dict* dict = o->getStream()->getDict();
Object filter;
dict->lookup("Filter", &filter);
Object filter = dict->lookup("Filter");
// // this may would be better, but not working...:-/
// Object oDict;
// oDict.initDict(dict);
@ -509,14 +503,12 @@ bool PdfExport::addPopplerPage(XojPopplerPage* pdf, XojPopplerDocument doc)
//g_warning("Array length is %i\n",arrLength);
for (int i = 0; i < arrLength; i++)
{
Object* subObject = new Object;
o->arrayGet(i, subObject);
Object* subObject = new Object(o->arrayGet(i));
if (subObject->getType() == objStream)
{
Dict* dict = subObject->getStream()->getDict();
Object filter;
dict->lookup("Filter", &filter);
Object filter = dict->lookup("Filter");
if (filter.isNull())
{
@ -535,7 +527,6 @@ bool PdfExport::addPopplerPage(XojPopplerPage* pdf, XojPopplerDocument doc)
{
g_warning("other poppler type: %i\n", subObject->getType());
}
subObject->free();
delete subObject;
}
}
@ -551,7 +542,6 @@ bool PdfExport::addPopplerPage(XojPopplerPage* pdf, XojPopplerDocument doc)
}
g_list_free(replacementList);
o->free();
delete o;
this->resources = NULL;

@ -103,8 +103,8 @@ void PdfObjectWriter::writeObject(Object* obj, XojPopplerDocument doc)
this->writer->write("[");
for (int i = 0; i < array->getLength(); i++)
{
writeObject(array->getNF(i, &obj1), doc);
obj1.free();
obj1 = array->getNF(i);
writeObject(&obj1, doc);
}
this->writer->write("] ");
break;
@ -126,8 +126,7 @@ void PdfObjectWriter::writeObject(Object* obj, XojPopplerDocument doc)
{
tmp++;
}
obj1.initInt(tmp);
stream->getDict()->set("Length", &obj1);
stream->getDict()->set("Length", Object(tmp));
//Remove Stream encoding
stream->getDict()->remove("Filter");
@ -135,7 +134,6 @@ void PdfObjectWriter::writeObject(Object* obj, XojPopplerDocument doc)
writeDictionnary(stream->getDict(), doc);
writeStream(stream);
obj1.free();
}
else
{
@ -159,7 +157,7 @@ void PdfObjectWriter::writeObject(Object* obj, XojPopplerDocument doc)
this->xref->addXref(0);
this->writer->write(FORMAT("%i %i R ", uref->objectId, 0));
obj->fetch(doc.getDoc()->getXRef(), &uref->object);
uref->object = obj->fetch(doc.getDoc()->getXRef());
g_hash_table_insert(this->updatedReferenced, new UpdateRefKey(obj->getRef(), doc), uref);
}
@ -187,8 +185,7 @@ void PdfObjectWriter::writeRawStream(Stream* str, XojPopplerDocument doc)
{
XOJ_CHECK_TYPE(PdfObjectWriter);
Object obj1;
str->getDict()->lookup("Length", &obj1);
Object obj1 = str->getDict()->lookup("Length");
if (!obj1.isInt())
{
cout << "PDFDoc::writeRawStream, no Length in stream dict";
@ -196,7 +193,6 @@ void PdfObjectWriter::writeRawStream(Stream* str, XojPopplerDocument doc)
}
const int length = obj1.getInt();
obj1.free();
this->writer->write("stream\r\n");
str->unfilteredReset();
@ -230,7 +226,7 @@ void PdfObjectWriter::writeDictionnary(Dict* dict, XojPopplerDocument doc)
{
XOJ_CHECK_TYPE(PdfObjectWriter);
Object obj1;
Object obj;
this->writer->write("<<");
for (int i = 0; i < dict->getLength(); i++)
{
@ -238,8 +234,8 @@ void PdfObjectWriter::writeDictionnary(Dict* dict, XojPopplerDocument doc)
GooString* keyNameToPrint = keyName.sanitizedName(gFalse /* non ps mode */);
this->writer->write(FORMAT("/%s ", keyNameToPrint->getCString()));
delete keyNameToPrint;
writeObject(dict->getValNF(i, &obj1), doc);
obj1.free();
obj = Object(dict->getValNF(i));
writeObject(&obj, doc);
}
this->writer->write(">> ");
}

@ -79,7 +79,6 @@ int PdfRefList::lookup(Ref ref, Object* object, XojPopplerDocument doc, PdfRefEn
if (p->equalsRef(ref))
{
object->free();
delete object;
refEntryRet = p;
@ -101,8 +100,7 @@ void PdfRefList::parse(Dict* dict, int index, XojPopplerDocument doc, GList*& re
{
XOJ_CHECK_TYPE(PdfRefList);
Object o;
dict->getVal(index, &o);
Object o = dict->getVal(index);
if (o.isArray() && strcmp("ProcSet", dict->getKey(index)) == 0)
{
@ -118,12 +116,8 @@ void PdfRefList::parse(Dict* dict, int index, XojPopplerDocument doc, GList*& re
Dict* dataDict = o.getDict();
for (int u = 0; u < dataDict->getLength(); u++)
{
Object contentsObjectRef;
Object* contentsObject = new Object();
dataDict->getVal(u, contentsObject);
dataDict->getValNF(u, &contentsObjectRef);
Object contentsObjectRef = dataDict->getValNF(u);;
Object* contentsObject = new Object(dataDict->getVal(u));
if (contentsObjectRef.isRef())
{
PdfRefEntry* refEntry = NULL;
@ -146,14 +140,9 @@ void PdfRefList::parse(Dict* dict, int index, XojPopplerDocument doc, GList*& re
{
g_warning("PdfRefList::parse type not handled, type ID = %i\n", contentsObjectRef.getType());
contentsObject->free();
delete contentsObject;
}
contentsObjectRef.free();
}
o.free();
}
void PdfRefList::writeRefList(const char* type)

@ -259,10 +259,7 @@ void XojPopplerDocument::load(char* data, int length)
globalParams = new GlobalParams();
}
Object obj;
// create stream
obj.initNull();
MemStream* str = new MemStream(data, 0, length, &obj);
MemStream* str = new MemStream(data, 0, length, Object(objNull));
PDFDoc* newDoc = new PDFDoc(str, NULL, NULL);

Loading…
Cancel
Save