allow set_parameter to set parameters in already open documents
[swftools.git] / lib / pdf / pdf.cc
index eba2a67..b446923 100644 (file)
@@ -89,6 +89,7 @@ void render2(gfxpage_t*page, gfxdevice_t*output)
     pi->outputDev->setXRef(pi->doc, pi->doc->getXRef());
     pi->doc->displayPage((OutputDev*)pi->outputDev, page->nr, zoom, zoom, /*rotate*/0, true, true, /*doLinks*/(int)1);
     pi->doc->processLinks((OutputDev*)pi->outputDev, page->nr);
+    pi->outputDev->endframe();
 }
 
     
@@ -139,13 +140,13 @@ void pdf_doc_destroy(gfxdocument_t*gfx)
 void pdf_doc_set_parameter(gfxdocument_t*gfx, char*name, char*value)
 {
     pdf_doc_internal_t*i= (pdf_doc_internal_t*)gfx->internal;
+    GFXOutputDev*o = i->outputDev;
     if(!strcmp(name, "pagemap")) {
-       GFXOutputDev*o = i->outputDev;
        int pdfpage=0, outputpage=0;
        sscanf(value,"%d:%d", &pdfpage, &outputpage);
        o->preparePage(pdfpage, outputpage);
     } else {
-       msg("<warning> Ignored parameter: %s=%s", name, value);
+        o->setParameter(name, value);
     }
 }
 
@@ -234,11 +235,17 @@ char* pdf_doc_getinfo(gfxdocument_t*doc, char*name)
     else if(!strcmp(name, "creationdate")) return getInfoDate(i->docinfo.getDict(), "CreationDate");
     else if(!strcmp(name, "moddate")) return getInfoDate(i->docinfo.getDict(), "ModDate");
     else if(!strcmp(name, "linearized")) return strdup(i->doc->isLinearized() ? "yes" : "no");
+    else if(!strcmp(name, "tagged")) return strdup(i->doc->getStructTreeRoot()->isDict() ? "yes" : "no");
     else if(!strcmp(name, "encrypted")) return strdup(i->doc->isEncrypted() ? "yes" : "no");
     else if(!strcmp(name, "oktoprint")) return strdup(i->doc->okToPrint() ? "yes" : "no");
     else if(!strcmp(name, "oktocopy")) return strdup(i->doc->okToCopy() ? "yes" : "no");
     else if(!strcmp(name, "oktochange")) return strdup(i->doc->okToChange() ? "yes" : "no");
     else if(!strcmp(name, "oktoaddnotes")) return strdup(i->doc->okToAddNotes() ? "yes" : "no");
+    else if(!strcmp(name, "version")) { 
+        char buf[32];
+        sprintf(buf, "%.1f", i->doc->getPDFVersion());
+        return strdup(buf);
+    }
     return 0;
 }