void k2sys_exit(K2PDFOPT_SETTINGS *k2settings,int val) { k2sys_enter_to_exit(k2settings); k2sys_close(k2settings); exit(val); }
int bmp_get_one_document_page(WILLUSBITMAP *src,K2PDFOPT_SETTINGS *k2settings, int src_type,char *filename, int pageno,double dpi,int bpp,FILE *out) { if (src_type==SRC_TYPE_PDF) { int status; #ifdef HAVE_MUPDF_LIB static char *mupdferr_trygs=TTEXT_WARN "\a\n ** ERROR reading from " TTEXT_BOLD2 "%s" TTEXT_WARN "using MuPDF. Trying Ghostscript...\n\n" TTEXT_NORMAL; status=0; if (k2settings->usegs<=0) { #if (WILLUSDEBUGX & 0x80000000) printf("\a\a\n\n\n\n\n\n\n\n\n ****** FAKING MUPDF--IGNORING SOURCE DOCUMENT!! *****\n\n\n\n\n\n\n"); status=bmp_read(src,"out.png",NULL); if (status==0 && bpp!=24) bmp_convert_to_grayscale(src); return(status); #else status=bmpmupdf_pdffile_to_bmp(src,filename,pageno,dpi*k2settings->document_scale_factor,bpp); if (!status || k2settings->usegs<0) return(status); #endif } /* Switch to Postscript since MuPDF failed */ if (k2settings->usegs==0) { k2printf(mupdferr_trygs,filename); k2settings->usegs=1; } #endif #ifdef HAVE_GHOSTSCRIPT_LIB if (willusgs_init(stdout) < 0) { k2sys_enter_to_exit(k2settings); exit(20); } #endif bmp_set_pdf_pageno(pageno); bmp_set_pdf_dpi(dpi); /* k2printf("Converting " TTEXT_BOLD2 "%s" TTEXT_NORMAL " page %2d to %d dpi bitmap ... ",filename,i,dpi); fflush(stdout); */ status=bmp_read(src,filename,NULL); if (!status && bpp==8) bmp_convert_to_greyscale(src); return(status); } else #ifdef HAVE_DJVU_LIB if (src_type==SRC_TYPE_DJVU) return(bmpdjvu_djvufile_to_bmp(src,filename,pageno,dpi*k2settings->document_scale_factor,bpp,out)); else #endif return(-1); }
int main(int argc,char *argv[]) { int i,filecount; static K2PDFOPT_SETTINGS _k2settings; K2PDFOPT_SETTINGS *k2settings; static STRBUF _cmdline,_env,_usermenu; STRBUF *cmdline,*env,*usermenu; k2settings=&_k2settings; cmdline=&_cmdline; env=&_env; usermenu=&_usermenu; strbuf_init(cmdline); strbuf_init(env); strbuf_init(usermenu); strbuf_cpy(env,getenv("K2PDFOPT")); for (i=1;i<argc;i++) strbuf_cat_with_quotes(cmdline,argv[i]); k2sys_init(); k2pdfopt_settings_init(k2settings); /* Only set ansi and user interface */ filecount=parse_cmd_args(k2settings,env,cmdline,usermenu,2,0); if (k2settings->show_usage) { k2sys_header(); if (k2settings->query_user==0 #if (defined(WIN32) || defined(WIN64)) || !win_has_own_window() #endif ) k2usage_show_all(stdout); else { if (!k2pdfopt_usage()) { k2sys_close(k2settings); strbuf_free(usermenu); strbuf_free(env); strbuf_free(cmdline); return(0); } } if (k2settings->query_user!=0) k2sys_enter_to_exit(k2settings); k2sys_close(k2settings); strbuf_free(usermenu); strbuf_free(env); strbuf_free(cmdline); return(0); } if (k2settings->query_user<0) #if (defined(WIN32) || defined(WIN64)) { if (win_has_own_window()) k2settings->query_user=1; else k2settings->query_user=(filecount==0); } #else k2settings->query_user=1; #endif #if (!defined(WIN32) && !defined(WIN64)) if (k2settings->query_user) { int tty_rows; tty_rows = get_ttyrows(); for (i=0;i<tty_rows-16;i++) aprintf("\n"); } #endif k2sys_header(); /* ** Set all options from command-line arguments */ parse_cmd_args(k2settings,env,cmdline,usermenu,1,0); /* ** Get user input */ if (k2pdfopt_menu(k2settings,filecount,env,cmdline,usermenu)==-1) { strbuf_free(usermenu); strbuf_free(env); strbuf_free(cmdline); k2sys_close(k2settings); return(0); } /* ** Re-init and then re-parse after all user menu entries applied. */ k2pdfopt_settings_init(k2settings); parse_cmd_args(k2settings,env,cmdline,usermenu,1,0); /* ** Sanity check / adjust user inputs */ k2pdfopt_settings_sanity_check(k2settings); /* ** Process files */ parse_cmd_args(k2settings,env,cmdline,usermenu,0,1); /* ** All done. */ strbuf_free(usermenu); strbuf_free(env); strbuf_free(cmdline); k2sys_enter_to_exit(k2settings); k2sys_close(k2settings); return(0); }