Annotation of ratfiv/epstopdf.c.1, revision 1.1

1.1     ! brouard     1: /*
        !             2: # epstopdf: written by Kong Hoon Lee konghoon@hyowon.cc.pusan.ac.kr<4/1/1999>
        !             3: #
        !             4: # It converts an EPS file to an encapsulated PDF File and
        !             5: # coded with the perl script 'epstopdf' by Sebastian Rahtz on
        !             6: # http://tug.org/applications/pdftex/epstopdf .
        !             7: # It works like as the perl script without 'perl' for Windows 95
        !             8: # but requires 'Ghostscript' for Windows.
        !             9: #
        !            10: */
        !            11: 
        !            12: #include <stdio.h>
        !            13: #include <stdlib.h>
        !            14: #define MAX_IN 10000
        !            15: 
        !            16: #ifndef GS_LIB
        !            17: #  define GS_LIB "GS_LIB"
        !            18: #endif
        !            19: 
        !            20: main(int argc,char *argv[])
        !            21: {
        !            22:        FILE *in,*out,*inn;
        !            23:        char tmpname_tmp[FILENAME_MAX];
        !            24:        char tmpname[FILENAME_MAX];
        !            25:        char filename[FILENAME_MAX];
        !            26:        char command[MAX_IN];
        !            27:        char ch[MAX_IN];
        !            28:        char ch1[MAX_IN];
        !            29:        int bbox[4],width,height,xoffset,yoffset;
        !            30:        int i=0,j,count=0;
        !            31:         const char *gs_lib = getenv(GS_LIB);
        !            32:         if(gs_lib == NULL) gs_lib="c:\\gstools\\gs5.50;c:\\gstools\\gs5.50\\fonts";
        !            33: 
        !            34:        if(argc < 2 || argc >2) {
        !            35:                printf("%s:\n",argv[0]);
        !            36:                printf("written by Kong Hoon Lee, konghoon@hyowon.cc.pusan.ac.kr <4/1/1999>\n\n");
        !            37:                 printf("It converts an EPS file to an encapsulated PDF File and is written\n");
        !            38:                 printf("based on the perl script 'epstopdf' by Sebastian Rahtz on\n");
        !            39:                 printf("http://tug.org/applications/pdftex/epstopdf .\n");
        !            40:                 printf("It works like as the perl script without 'perl' for Windows 95\n");
        !            41:                 printf("but requires 'Ghostscript' for Windows.\n\n");
        !            42: 
        !            43:                 printf("This program invokes 'GSWIN32C.EXE' and the path including 'GSWIN32C.EXE'\n");
        !            44:                printf("should be included to the environment variable 'PATH'. In addition\n");
        !            45:                printf("the variable 'GS_LIB' should be set before using this program,\n");
        !            46:                printf("otherwise 'GS_LIB=c:\\gstools\\gs5.50;c:\\gstools\\gs5.50\\fonts' is used.\n\n");
        !            47: 
        !            48:                printf("Usage: %s filename-of-an-eps-file\n\n",argv[0]);
        !            49:                return;
        !            50:        }
        !            51: 
        !            52:        if((in=fopen(argv[1],"r")) == NULL) {
        !            53:                printf("%s: File not found!\n",argv[1]);
        !            54:                printf("Usage: %s filename-of-an-eps-file\n\n",argv[0]);
        !            55:                return;
        !            56:        }
        !            57:        fclose(in);
        !            58:        
        !            59:        strcpy(tmpname,argv[1]);
        !            60:        strget(tmpname);
        !            61:        strcat(tmpname,"_epstopdf.0");
        !            62:        count=0;
        !            63:        while ((out=fopen(tmpname,"r")) != NULL ) {
        !            64:                    fclose(out);
        !            65:                    count++;
        !            66:                    strget(tmpname);
        !            67:                    strcpy(tmpname_tmp,tmpname);
        !            68:                    sprintf(tmpname,"%s.%d",tmpname_tmp,count);
        !            69:     }
        !            70: 
        !            71:        strcpy(filename,argv[1]);
        !            72:        strget(filename);
        !            73:        strcat(filename,".pdf");
        !            74:        
        !            75:        printf("Converting %s to %s ..... ",argv[1],filename);
        !            76: 
        !            77:        in=fopen(argv[1],"r");
        !            78:        out=fopen(tmpname,"w");
        !            79:        while ((fgets(ch,MAX_IN,in)) !=NULL){
        !            80:                strcpy(ch1,ch+2);
        !            81:                *(ch1+11)='\0';
        !            82:                if (strcmp(ch1,"BoundingBox") == 0 ) {
        !            83:                        strcpy(command,ch+15);
        !            84:                        read_number(command,4,bbox);
        !            85:                width=bbox[2]-bbox[0];
        !            86:                height=bbox[3]-bbox[1];
        !            87:                xoffset=0-bbox[0];
        !            88:                yoffset=0-bbox[1];
        !            89:                fprintf(out,"\%\%BoundingBox: %d %d %d %d\n",0,0,width,height);
        !            90:                        fprintf(out,"<< /PageSize [%d %d] >> setpagedevice \n",width,height);
        !            91:                        fprintf(out,"gsave %d %d translate\n",xoffset,yoffset);
        !            92:                } else
        !            93:                        fputs(ch,out);
        !            94:        }
        !            95:        fclose(in);
        !            96:        fclose(out);
        !            97: 
        !            98:        sprintf(command,"gswin32c -I%s -q -dNOPAUSE -dBATCH -dUseFlateCompression=true -sDEVICE=pdfwrite -sOutputFile=%s -c save pop -f %s",
        !            99:                        gs_lib,filename,tmpname);
        !           100: 
        !           101:        /*
        !           102:        puts(command);
        !           103:        */
        !           104:         system(command);
        !           105:        remove(tmpname);
        !           106:        printf("Done\n");
        !           107: }
        !           108: 
        !           109: strget(char *string)
        !           110: {
        !           111:        int i=0;
        !           112:        int size;
        !           113:        
        !           114:        size=strlen(string);
        !           115:        for (i=0;i<size;i++) {
        !           116:                if ( *(string+i) == '.' ) {
        !           117:             *(string+i)='\0';
        !           118:                        break;
        !           119:                }
        !           120:        }
        !           121: }
        !           122: 
        !           123: read_number(char *number,int num,int *value)
        !           124: {
        !           125:    char ch;
        !           126:    char e_num[MAX_IN];
        !           127:    int count = 0;
        !           128:    int j;
        !           129:    int counter[num];
        !           130:    int counters[num];
        !           131: 
        !           132:    for (j=0;j<num;j++){
        !           133:       while ((ch=number[count++]) !='\0' && isspace(ch)) { }
        !           134:       counters[j]=count-1;
        !           135:       while ((ch=number[count++]) !='\0' && !isspace(ch)) { }
        !           136:       counter[j]=count;
        !           137:    }
        !           138:    for (j=0;j<num;j++) {
        !           139:       strcpy(e_num,number+counters[j]);
        !           140:       *(e_num+counter[j]-counters[j]-1)='\0';
        !           141:       /* printf("%s,",e_num); */
        !           142:       *(value+j)=atoi(e_num);
        !           143:    }
        !           144: }
        !           145: 
        !           146: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>