Annotation of ratfiv/epstopdf.c.1, revision 1.1.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>