X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fpdf2swf.c;h=975aa6cd9df2209e56bcb624824696070bfee43c;hb=6dcdf56085885757fa2ad6614fafa7489b937d7b;hp=45260197f3971c3efb1564c836b865e232db4dc7;hpb=9f826653fb88e865129c686ccf09d2c700494068;p=swftools.git diff --git a/src/pdf2swf.c b/src/pdf2swf.c index 4526019..975aa6c 100644 --- a/src/pdf2swf.c +++ b/src/pdf2swf.c @@ -32,7 +32,7 @@ #include "../lib/os.h" #include "../lib/rfxswf.h" #include "../lib/devices/swf.h" -#include "../lib/devices/arts.h" +#include "../lib/devices/polyops.h" #include "../lib/devices/record.h" #include "../lib/pdf/pdf.h" #include "../lib/log.h" @@ -154,7 +154,7 @@ int args_callback_option(char*name,char*val) { char*x2 = strtok(0, ":"); char*y2 = strtok(0, ":"); if(!(x1 && y1 && x2 && y2)) { - fprintf(stderr, "-m option requires four arguments, :::\n"); + fprintf(stderr, "-c option requires four arguments, :::\n"); exit(1); } custom_clip = 1; @@ -187,31 +187,39 @@ int args_callback_option(char*name,char*val) { if(c && *c && c[1]) { *c = 0; c++; - driver->set_parameter(s,c); + driver->set_parameter(driver, s,c); } else - driver->set_parameter(s,"1"); + driver->set_parameter(driver, s,"1"); return 1; } else if (!strcmp(name, "S")) { - driver->set_parameter("drawonlyshapes", "1"); + driver->set_parameter(driver, "drawonlyshapes", "1"); return 0; } else if (!strcmp(name, "i")) { - driver->set_parameter("ignoredraworder", "1"); + driver->set_parameter(driver, "ignoredraworder", "1"); return 0; } +#ifndef WIN32 + else if (!strcmp(name, "Q")) + { + int seconds = atoi(val); + alarm(seconds); + return 1; + } +#endif else if (!strcmp(name, "z")) { - driver->set_parameter("enablezlib", "1"); + driver->set_parameter(driver, "enablezlib", "1"); zlib = 1; return 0; } else if (!strcmp(name, "n")) { - driver->set_parameter("opennewwindow", "1"); + driver->set_parameter(driver, "opennewwindow", "1"); return 0; } else if (!strcmp(name, "I")) @@ -221,30 +229,48 @@ int args_callback_option(char*name,char*val) { } else if (!strcmp(name, "t")) { - driver->set_parameter("insertstop", "1"); + driver->set_parameter(driver, "insertstop", "1"); return 0; } else if (!strcmp(name, "T")) { if(!strcasecmp(val, "mx")) - driver->set_parameter("flashversion", "6"); + driver->set_parameter(driver, "flashversion", "6"); else - driver->set_parameter("flashversion", val); + driver->set_parameter(driver, "flashversion", val); return 1; } else if (!strcmp(name, "f")) { - driver->set_parameter("storeallcharacters", "1"); + driver->set_parameter(driver, "storeallcharacters", "1"); + driver->set_parameter(driver, "extrafontdata", "1"); return 0; } else if (!strcmp(name, "w")) { - driver->set_parameter("linksopennewwindow", "0"); + driver->set_parameter(driver, "linksopennewwindow", "0"); return 0; } + else if (!strcmp(name, "O")) + { + int level = 1; + int ret=0; + if(val&& val[0] && val[1]==0 && isdigit(val[0])) { + level = atoi(val); + ret=1; + } + if(level>=1) + driver->set_parameter(driver, "poly2bitmap", "1"); + if(level>=2) + driver->set_parameter(driver, "bitmapfonts", "1"); + if(level>=3) + driver->set_parameter(driver, "ignoredraworder", "1"); + return ret; + } else if (!strcmp(name, "G")) { + driver->set_parameter(driver, "optimize_polygons", "1"); flatten = 1; return 0; } @@ -306,10 +332,10 @@ int args_callback_option(char*name,char*val) { else if (!strcmp(name, "j")) { if(name[1]) { - driver->set_parameter("jpegquality", &name[1]); + driver->set_parameter(driver, "jpegquality", &name[1]); return 0; } else { - driver->set_parameter("jpegquality", val); + driver->set_parameter(driver, "jpegquality", val); return 1; } } @@ -352,6 +378,7 @@ struct options_t options[] = {"z","zlib"}, {"s","set"}, {"S","shapes"}, + {"Q","maxtime"}, {"j","jpegquality"}, {"p","pages"}, {"w","samewindow"}, @@ -448,7 +475,7 @@ float getRate(char*filename) void show_info(gfxsource_t*driver, char*filename) { - gfxdocument_t* pdf = driver->open(filename); + gfxdocument_t* pdf = driver->open(driver, filename); int pagenr; FILE*fo=0; if(!pdf) { @@ -487,9 +514,10 @@ int main(int argn, char *argv[]) initLog(0,-1,0,0,-1,loglevel); - if(installPath) { + /* not needed anymore since fonts are embedded + if(installPath) { fontpaths[fontpathpos++] = concatPaths(installPath, "fonts"); - } + }*/ #ifdef HAVE_SRAND48 srand48(time(0)); @@ -531,7 +559,7 @@ int main(int argn, char *argv[]) is_in_range(0x7fffffff, pagerange); if(pagerange) - driver->set_parameter("pages", pagerange); + driver->set_parameter(driver, "pages", pagerange); if (!filename) { args_callback_usage(argv[0]); @@ -540,7 +568,7 @@ int main(int argn, char *argv[]) /* add fonts */ for(t=0;tset_parameter("fontdir", fontpaths[t]); + driver->set_parameter(driver, "fontdir", fontpaths[t]); } char fullname[256]; @@ -549,7 +577,7 @@ int main(int argn, char *argv[]) filename = fullname; } - gfxdocument_t* pdf = driver->open(filename); + gfxdocument_t* pdf = driver->open(driver, filename); if(!pdf) { msg(" Couldn't open %s", filename); exit(1); @@ -669,6 +697,7 @@ int main(int argn, char *argv[]) result->destroy(result); pdf->destroy(pdf); + driver->destroy(driver); const char*zip = ""; if(zlib) { @@ -688,13 +717,20 @@ int main(int argn, char *argv[]) printf("\n"); } if(preloader && viewer) { - systemf("swfcombine \"%s\" viewport=%s -o __tmp__.swf", - viewer, outputname); - systemf("swfcombine %s -X %d -Y %d -r %f %s/PreLoaderTemplate.swf loader=%s movie=__tmp__.swf -o \"%s\"",zip,width,height, - getRate(preloader), SWFDIR, preloader, outputname); - systemf("rm __tmp__.swf"); +#ifdef HAVE_MKSTEMP + char tmpname[] = "__swf__XXXXXX"; + mkstemp(tmpname); +#else + char*tmpname = "__tmp__.swf"; +#endif + systemf("swfcombine \"%s\" viewport=%s -o %s", + viewer, outputname, tmpname); + systemf("swfcombine %s -X %d -Y %d -r %f %s/PreLoaderTemplate.swf loader=%s movie=%s -o \"%s\"",zip,width,height, + getRate(preloader), SWFDIR, preloader, tmpname, outputname); + systemf("rm %s", tmpname); } + return 0; }