File:  [Local Repository] / ratfiv / epstopdf.c.1
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Fri Jun 15 16:14:55 2001 UTC (23 years ago) by brouard
Branches: ratfiv, MAIN
CVS tags: ratfiv-103, HEAD
Created Directory Structure

    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>