* http://localhost/cgi-bin/barcode?string
* where string is the code to be converted
*
- * $Id: BarCode.c,v 1.3 2002/06/23 22:03:28 piccardi Exp $
+ * $Id: BarCode.c,v 1.4 2002/06/28 17:59:24 piccardi Exp $
*
****************************************************************/
/*
/*
* Variables definition
*/
- FILE *file1, *file2, *file3;
- char content[]="Content-type: image/jpeg\n\n";
- /*
- * Begin
- */
+ FILE *pipe[4];
+ FILE *pipein;
+ char *cmd_string[4]={
+ "pnmtopng",
+ "pnmmargin -white 10",
+ "pnmcrop",
+ "gs -sDEVICE=ppmraw -sOutputFile=- -sNOPAUSE -q - -c showpage -c quit"
+ };
+ char content[]="Content-type: image/png\n\n";
+ int i;
/* write mime-type to stout */
write(STDOUT_FILENO, content, strlen(content));
- /* convert PDF to JPEG */
- file1 = popen("gs -q -sDEVICE=jpeg -sOutputFile=- -", "w");
- /* convert EPS to PDF*/
- dup2(fileno(file1), STDOUT_FILENO); /* set epstopdf stdout to file1 */
- file2 = popen("epstopdf --filter", "w");
-// file2 = popen("eps2eps", "w");
- /* create barcode */
- dup2(fileno(file2), STDOUT_FILENO); /* set barcode stdout to file2 */
- file3 = popen("barcode -E", "w");
- write(fileno(file3), argv[1], strlen(argv[1]));
+
+ /* execute chain of command */
+ for (i=0; i<4; i++) {
+ pipe[i] = popen(cmd_string[i], "w");
+ dup2(fileno(pipe[i]), STDOUT_FILENO);
+ }
+ /* create barcode (in PS) */
+ pipein = popen("barcode", "w");
+ /* send barcode string */
+ write(fileno(pipein), argv[1], strlen(argv[1]));
+ /* close all pipes */
+ for (i=4; i==0; i--) {
+ pclose((pipe[i]));
+ }
exit(0);
}
/*