From: kramm Date: Sun, 4 Nov 2001 22:21:13 +0000 (+0000) Subject: added optional storing of full font sets in the .swf. (option -f) X-Git-Tag: release-0-1-2~58 X-Git-Url: http://git.asbjorn.biz/?a=commitdiff_plain;ds=sidebyside;h=eec662ec199f07966d7ce4100f3eb0c2d2dd1516;p=swftools.git added optional storing of full font sets in the .swf. (option -f) --- diff --git a/pdf2swf/SWFOutputDev.cc b/pdf2swf/SWFOutputDev.cc index 4af15aa..c6ad24e 100644 --- a/pdf2swf/SWFOutputDev.cc +++ b/pdf2swf/SWFOutputDev.cc @@ -1317,6 +1317,11 @@ void pdfswf_linksopennewwindow() opennewwindow = 1; } +void pdfswf_storeallcharacters() +{ + storeallcharacters = 1; +} + void pdfswf_jpegquality(int val) { if(val<0) val=0; diff --git a/pdf2swf/SWFOutputDev.h b/pdf2swf/SWFOutputDev.h index 5264ca2..ea43b3e 100644 --- a/pdf2swf/SWFOutputDev.h +++ b/pdf2swf/SWFOutputDev.h @@ -16,6 +16,7 @@ void pdfswf_ignoredraworder(); void pdfswf_linksopennewwindow(); void pdfswf_jpegquality(int); void pdfswf_performconversion(); +void pdfswf_storeallcharacters(); int pdfswf_numpages(); void pdfswf_convertpage(int page) ; diff --git a/pdf2swf/pdf2swf.cc b/pdf2swf/pdf2swf.cc index 41ed77d..20f9348 100644 --- a/pdf2swf/pdf2swf.cc +++ b/pdf2swf/pdf2swf.cc @@ -71,6 +71,11 @@ int args_callback_option(char*name,char*val) { pdfswf_linksopennewwindow(); return 0; } + else if (!strcmp(name, "f")) + { + pdfswf_storeallcharacters(); + return 0; + } else if (name[0]=='j') { if(name[1]) { @@ -102,6 +107,7 @@ struct options_t options[] = {"j","jpegquality"}, {"p","pages"}, {"w","samewindow"}, + {"f","fonts"}, {0,0} }; @@ -135,6 +141,7 @@ void args_callback_usage(char*name) printf("-j --jpegquality=quality Set quality of embedded jpeg pictures (default:85)\n"); printf("-v --verbose Be verbose. Use more than one -v for greater effect\n"); printf("-w --samewindow Don't open a new Browser Window for Links in the SWF\n"); + printf("-f --fonts Store full fonts in SWF. (Don't reduce to used characters)\n"); printf("-V --version Print program version\n"); } diff --git a/pdf2swf/swfoutput.cc b/pdf2swf/swfoutput.cc index 07969d9..18e86d9 100644 --- a/pdf2swf/swfoutput.cc +++ b/pdf2swf/swfoutput.cc @@ -34,6 +34,7 @@ int opennewwindow=0; int ignoredraworder=0; int drawonlyshapes=0; int jpegquality=85; +int storeallcharacters=0; static int flag_protected = 0; typedef unsigned char u8; @@ -518,6 +519,7 @@ SWFFont::SWFFont(char*name, int id, char*filename) outline = (T1_OUTLINE**)malloc(t*sizeof(T1_OUTLINE*)); charname = (char**)malloc(t*sizeof(char*)); + memset(charname, t*sizeof(char*), 0); used = (char*)malloc(t*sizeof(char)); char2swfcharid = (U16*)malloc(t*2); swfcharid2char = (U16*)malloc(t*2); @@ -564,7 +566,19 @@ SWFFont::SWFFont(char*name, int id, char*filename) SWFFont::~SWFFont() { int t,usednum=0; - int*ptr = (int*)malloc(swfcharpos*sizeof(int)); + int*ptr; + + if(storeallcharacters) + { + int t; + for(t=0;tcharnum;t++) + { + if(this->charname[t]) + getSWFCharID(this->charname[t]); + } + } + + ptr = (int*)malloc(swfcharpos*sizeof(int)); for(t=0;tswfid); - swf_SetU8(ftag, strlen(this->fontid)); - swf_SetBlock(ftag, (U8*)this->fontid, strlen(this->fontid)); - swf_SetU8(ftag, 0); + if(this->fontid) { + swf_SetU8(ftag, strlen(this->fontid)); + swf_SetBlock(ftag, (U8*)this->fontid, strlen(this->fontid)); + } else { + swf_SetU8(ftag, 0); + } + swf_SetU8(ftag, 0); //flags for(t=0;tcharname[this->swfcharid2char[t]]; for(s=0;s<256;s++) { if(standardEncodingNames[s] && - !strcasecmp(name,standardEncodingNames[s])) + !strcmp(name,standardEncodingNames[s])) break; } swf_SetU8(ftag, (U8)s); diff --git a/pdf2swf/swfoutput.h b/pdf2swf/swfoutput.h index 0efbbc6..ba54912 100644 --- a/pdf2swf/swfoutput.h +++ b/pdf2swf/swfoutput.h @@ -19,6 +19,7 @@ extern int opennewwindow; //default:0 extern int ignoredraworder; //default:0 extern int drawonlyshapes; //default:0 extern int jpegquality; //default:100; +extern int storeallcharacters; // default:0 typedef long int twip;