added filter support to ruby module
[swftools.git] / src / pdf2swf.c
index 4255fbf..c7a804e 100644 (file)
@@ -43,6 +43,7 @@
 #include "../lib/devices/polyops.h"
 #include "../lib/devices/record.h"
 #include "../lib/devices/rescale.h"
+#include "../lib/gfxfilter.h"
 #include "../lib/pdf/pdf.h"
 #include "../lib/log.h"
 
@@ -266,7 +267,7 @@ int args_callback_option(char*name,char*val) {
        } else if(!strcmp(s,"help")) {
            printf("PDF Parameters:\n");
            gfxsource_t*pdf = gfxsource_pdf_create();
-           pdf->set_parameter(pdf, "help", "");
+           pdf->setparameter(pdf, "help", "");
            gfxdevice_t swf;
            gfxdevice_swf_init(&swf);
            printf("SWF Parameters:\n");
@@ -630,7 +631,7 @@ int main(int argn, char *argv[])
     /* pass global parameters to PDF driver*/
     parameter_t*p = device_config;
     while(p) {
-       driver->set_parameter(driver, p->name, p->value);
+       driver->setparameter(driver, p->name, p->value);
        p = p->next;
     }
 
@@ -640,18 +641,20 @@ int main(int argn, char *argv[])
        exit(1);
     }
 
-    if(!outputname)
-    {
-       if(filename) {
-           outputname = stripFilename(filename, ".swf");
-           msg("<notice> Output filename not given. Writing to %s", outputname);
-       } 
-    }
-       
-    if(!outputname)
-    {
-       fprintf(stderr, "Please use -o to specify an output file\n");
-       exit(1);
+    if (!info_only) {
+        if(!outputname)
+        {
+            if(filename) {
+                outputname = stripFilename(filename, ".swf");
+                msg("<notice> Output filename not given. Writing to %s", outputname);
+            } 
+        }
+            
+        if(!outputname)
+        {
+            fprintf(stderr, "Please use -o to specify an output file\n");
+            exit(1);
+        }
     }
 
     // test if the page range is o.k.
@@ -669,18 +672,18 @@ int main(int argn, char *argv[])
     }
     
     if(pagerange)
-       driver->set_parameter(driver, "pages", pagerange);
+       driver->setparameter(driver, "pages", pagerange);
+
+    /* add fonts */
+    for(t=0;t<fontpathpos;t++) {
+       driver->setparameter(driver, "fontdir", fontpaths[t]);
+    }
 
     if(info_only) {
        show_info(driver, filename);
        return 0;
     }
 
-    /* add fonts */
-    for(t=0;t<fontpathpos;t++) {
-       driver->set_parameter(driver, "fontdir", fontpaths[t]);
-    }
-
     char*u = 0;
     if((u = strchr(outputname, '%'))) {
        if(strchr(u+1, '%') || 
@@ -711,7 +714,7 @@ int main(int argn, char *argv[])
     /* pass global parameters document */
     p = device_config;
     while(p) {
-       pdf->set_parameter(pdf, p->name, p->value);
+       pdf->setparameter(pdf, p->name, p->value);
        p = p->next;
     }
 
@@ -730,7 +733,7 @@ int main(int argn, char *argv[])
        if(is_in_range(pagenr, pagerange)) {
            char mapping[80];
            sprintf(mapping, "%d:%d", pagenr, frame);
-           pdf->set_parameter(pdf, "pagemap", mapping);
+           pdf->setparameter(pdf, "pagemap", mapping);
            pagenum++;
        }
        if(pagenum == xnup*ynup || (pagenr == pdf->num_pages && pagenum>1)) {
@@ -746,6 +749,8 @@ int main(int argn, char *argv[])
     pagenum = 0;
 
     gfxdevice_t*out = create_output_device();;
+    pdf->prepare(pdf, out);
+
     for(pagenr = 1; pagenr <= pdf->num_pages; pagenr++) 
     {
        if(is_in_range(pagenr, pagerange)) {