X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=pdf2swf%2FSWFOutputDev.cc;h=50a7016c04095091aabfd9745a078129431f26ed;hb=10a7866c6969ca42feec898c7d44cf642476e814;hp=fea0d24af3b4905d881f5238796bc73c8852db47;hpb=c719bed1f195a35d47372270214c528e4bb5430d;p=swftools.git diff --git a/pdf2swf/SWFOutputDev.cc b/pdf2swf/SWFOutputDev.cc index fea0d24..50a7016 100644 --- a/pdf2swf/SWFOutputDev.cc +++ b/pdf2swf/SWFOutputDev.cc @@ -55,7 +55,13 @@ static char* swffilename = 0; static int numpages; static int currentpage; -static char*fonts[2048]; +typedef struct _fontfile +{ + char*filename; + int used; +} fontfile_t; + +static fontfile_t fonts[2048]; static int fontnum = 0; // swf <-> pdf pages @@ -388,7 +394,7 @@ void dumpFontInfo(char*loglevel, GfxFont*font) { char* name = getFontID(font); Ref* r=font->getID(); - msg("%s=========== %s (ID:%d,%d) ==========\n", loglevel, name, r->num,r->gen); + msg("%s=========== %s (ID:%d,%d) ==========\n", loglevel, getFontName(font), r->num,r->gen); GString*gstr = font->getTag(); @@ -917,8 +923,9 @@ char* SWFOutputDev::searchFont(char*name) { int i; char*filename=0; + int is_standard_font = 0; - msg(" SearchT1Font(%s)", name); + msg(" SearchFont(%s)", name); /* see if it is a pdf standard font */ for(i=0;i Using %s for %s", fonts[i].filename, name); + } + return fonts[i].filename; } } return 0; @@ -1161,9 +1175,12 @@ void SWFOutputDev::updateFont(GfxState *state) } // look for Type 3 font - if (!type3Warning && gfxFont->getType() == fontType3) { - type3Warning = gTrue; - showFontError(gfxFont, 2); + if (gfxFont->getType() == fontType3) { + if(!type3Warning) { + type3Warning = gTrue; + showFontError(gfxFont, 2); + } + return; } /* now either load the font, or find a substitution */ @@ -1191,7 +1208,7 @@ void SWFOutputDev::updateFont(GfxState *state) } if(!fileName) { char * fontname = getFontName(gfxFont); - msg(" Font %s could not be loaded.", fontname); + msg(" Font %s %scould not be loaded.", fontname, embedded?"":"(not embedded) "); msg(" Try putting a TTF version of that font (named \"%s.ttf\") into /swftools/fonts", fontname); fileName = substituteFont(gfxFont, fontid); } @@ -1651,95 +1668,42 @@ void pdfswf_init(char*filename, char*userPassword) void pdfswf_setparameter(char*name, char*value) { - if(!strcmp(name, "drawonlyshapes")) { - drawonlyshapes = atoi(value); - } else if(!strcmp(name, "ignoredraworder")) { - ignoredraworder = atoi(value); - } else if(!strcmp(name, "linksopennewwindow")) { - opennewwindow = atoi(value); - } else if(!strcmp(name, "storeallcharacters")) { - storeallcharacters = atoi(value); - } else if(!strcmp(name, "enablezlib")) { - enablezlib = atoi(value); - } else if(!strcmp(name, "insertstop")) { - insertstoptag = atoi(value); - } else if(!strcmp(name, "flashversion")) { - flashversion = atoi(value); - } else if(!strcmp(name, "jpegquality")) { - int val = atoi(value); - if(val<0) val=0; - if(val>100) val=100; - jpegquality = val; - } else if(!strcmp(name, "outputfilename")) { + if(!strcmp(name, "outputfilename")) { swffilename = value; } else if(!strcmp(name, "caplinewidth")) { caplinewidth = atof(value); - } else if(!strcmp(name, "splinequality")) { - int v = atoi(value); - v = 500-(v*5); // 100% = 0.25 pixel, 0% = 25 pixel - if(v<1) v = 1; - splinemaxerror = v; - } else if(!strcmp(name, "fontquality")) { - int v = atoi(value); - v = 500-(v*5); // 100% = 0.25 pixel, 0% = 25 pixel - if(v<1) v = 1; - fontsplinemaxerror = v; } else { - fprintf(stderr, "unknown parameter: %s (=%s)\n", name, value); + swfoutput_setparameter(name, value); } } void pdfswf_addfont(char*filename) { - fonts[fontnum++] = filename; + fontfile_t f; + memset(&f, 0, sizeof(fontfile_t)); + f.filename = filename; + fonts[fontnum++] = f; } -void pdfswf_drawonlyshapes() -{ - drawonlyshapes = 1; +/* TODO: get rid of this */ +void pdfswf_drawonlyshapes() { pdfswf_setparameter("drawonlyshapes", "1"); } +void pdfswf_ignoredraworder() { pdfswf_setparameter("ignoredraworder", "1"); } +void pdfswf_linksopennewwindow() { pdfswf_setparameter("opennewwindow", "1"); } +void pdfswf_storeallcharacters() { pdfswf_setparameter("storeallcharacters", "1"); } +void pdfswf_enablezlib() { pdfswf_setparameter("enablezlib", "1"); } +void pdfswf_setoutputfilename(char*_filename) { swffilename = _filename; } +void pdfswf_insertstop() { pdfswf_setparameter("insertstoptag", "1"); } +void pdfswf_jpegquality(int val) { + char tmp[32]; + sprintf(tmp, "%d", val); + pdfswf_setparameter("jpegquality", tmp); } - -void pdfswf_ignoredraworder() -{ - ignoredraworder = 1; +void pdfswf_setversion(int n) { + char tmp[32]; + sprintf(tmp, "%d", n); + pdfswf_setparameter("flashversion", tmp); } -void pdfswf_linksopennewwindow() -{ - opennewwindow = 1; -} - -void pdfswf_storeallcharacters() -{ - storeallcharacters = 1; -} - -void pdfswf_enablezlib() -{ - enablezlib = 1; -} - -void pdfswf_jpegquality(int val) -{ - if(val<0) val=0; - if(val>100) val=100; - jpegquality = val; -} - -void pdfswf_setoutputfilename(char*_filename) -{ - swffilename = _filename; -} - -void pdfswf_insertstop() -{ - insertstoptag = 1; -} - -void pdfswf_setversion(int n) -{ - flashversion = n; -} void pdfswf_convertpage(int page) @@ -1767,7 +1731,6 @@ void pdfswf_performconversion() doc->displayPage((OutputDev*)output, currentpage, /*dpi*/72, /*rotate*/0, /*doLinks*/(int)1); } } - int pdfswf_numpages() { return doc->getNumPages();