synchronized with downstream git
[swftools.git] / src / pdf2swf.c
index 0e9e3e5..c50a3de 100644 (file)
@@ -640,45 +640,47 @@ int main(int argn, char *argv[])
        exit(1);
     }
 
-    if(info_only) {
-       show_info(driver, filename);
-       return 0;
-    }
-
-    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.
     is_in_range(0x7fffffff, pagerange);
 
-    if(pagerange)
-       driver->set_parameter(driver, "pages", pagerange);
-
     if (!filename) {
        args_callback_usage(argv[0]);
        exit(0);
     }
+    
+    char fullname[256];
+    if(password && *password) {
+       sprintf(fullname, "%s|%s", filename, password);
+       filename = fullname;
+    }
+    
+    if(pagerange)
+       driver->set_parameter(driver, "pages", pagerange);
 
     /* add fonts */
     for(t=0;t<fontpathpos;t++) {
        driver->set_parameter(driver, "fontdir", fontpaths[t]);
     }
 
-    char fullname[256];
-    if(password && *password) {
-       sprintf(fullname, "%s|%s", filename, password);
-       filename = fullname;
+    if(info_only) {
+       show_info(driver, filename);
+       return 0;
     }
 
     char*u = 0;
@@ -738,10 +740,16 @@ int main(int argn, char *argv[])
            frame++;
        }
     }
+    if(pagerange && !pagenum && frame==1) {
+       fprintf(stderr, "No pages in range %s", pagerange);
+       exit(1);
+    }
 
     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)) {